双方向 SMS メッセージング - Amazon Pinpoint SMS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

双方向 SMS メッセージング

Amazon Pinpoint SMS には、双方向 SMS のサポートが含まれています。双方向 SMS を設定すると、お客様からの着信メッセージを受信することができます。また、双方向メッセージングを Lambda や Amazon Lex などの他の AWS サービスと併用して、インタラクティブなテキストメッセージング体験を作成することもできます。

顧客の 1 人が電話番号にメッセージを送信すると、メッセージ本文は処理のために Amazon SNS トピックまたは Amazon Connect インスタンスに送信されます。

注記

双方向 SMS は、特定の国や地域でのみ使用できます。国または地域でサポートされている双方向 SMS の詳細については、「SMS 国の機能と制限」を参照してください。

双方向 SMS 用の Amazon Connect は、Amazon Connect 「Amazon Connect 管理者ガイド」の「チャットメッセージング: SMS サブタイプ AWS リージョン 」に記載されている で利用できます。

Two-way SMS messaging (Console)

Amazon Pinpoint SMS コンソールを使用して双方向 SMS を有効にするには、次の手順に従います。

双方向 SMS を有効にする
  1. Amazon Pinpoint SMS コンソール (https://console.aws.amazon.com/sms-voice/) を開きます。

  2. ナビゲーションペインの [設定] で、[電話番号] を選択します。

  3. [電話番号] ページで、電話番号を選択します。

  4. [双方向 SMS] タブで、[設定を編集] ボタンを選択します。

  5. [設定を編集] ページで [双方向メッセージを有効にする] を選択します。

  6. 送信先タイプには、Amazon SNS または Amazon Connect を選択します。

    • Amazon SNS では、新しい Amazon SNS トピックまたは既存の Amazon SNS トピックのいずれかを選択し、双方向チャネルロールでは、既存の IAM ロールを選択するか、Amazon SNS トピックポリシーを使用する を選択します。

      • 新しい Amazon SNS トピック – このオプションを選択すると、Amazon Pinpoint SMS はアカウントにトピックを作成します。トピックは、必要なすべてのパーミッションがあれば、自動的に作成されます。Amazon SNS トピックの詳細については、「Amazon SNS デベロッパーガイド」の「Amazon SNS を設定する」を参照してください。

      • 既存の Amazon SNS トピック – このオプションを選択した場合は、受信メッセージの宛先ドロップダウンから既存の Amazon SNS トピックを選択する必要があります。

      • 双方向チャンネルロール では、次のいずれかを選択します。

        • 既存の IAM ロールの選択 – Amazon SNS トピックに適用する既存の IAM ポリシーを選択します。例えば、Amazon SNS ポリシーについては、「」を参照してくださいAmazon SNS トピックの IAM ポリシー

        • Amazon SNS トピックポリシーを使用する – Amazon SNS トピックには、Amazon Pinpoint SMS へのアクセスを許可するための適切な Amazon SNS トピックポリシーが必要です。Amazon SNS ポリシーの例については、「」を参照してくださいAmazon SNS トピックの Amazon SNS トピックポリシー

    • [双方向チャネルの役割] の Amazon Connect では、[既存の IAM ロールを選択する] を選択します。

      • [既存の IAM ロール] ドロップダウンで、メッセージの送信先として既存の IAM ロールを選択します。IAM ポリシーの例については、Amazon Connect の IAM ポリシー「」を参照してください。

  7. [変更を保存] を選択します。

  8. (オプション) 送信先タイプとして Amazon Connect を選択した場合は、電話番号を Amazon Connect にインポートウィンドウで次のようにします。

    1. [受信メッセージの送信先] ドロップダウンで、受信メッセージを受信する Amazon Connect インスタンスを選択します。

    2. [電話番号をインポート] をクリックします。

Two-way SMS messaging (AWS CLI)

update-phone-number コマンドを使用して、双方向 SMS を有効にできます。

コマンドラインで以下のコマンドを入力します。

$ aws pinpoint-sms-voice-v2 update-phone-number \ > --phone-number-id PhoneNumber \ > --two-way-enabled True \ > --two-way-channel-arn TwoWayARN \ > --two-way-channel-role TwoChannelWayRole

上のコマンドに、以下の変更を加えます。

  • を電話番号の の PhoneNumberID または Amazon リソースネーム (ARN) PhoneNumberに置き換えます。

  • TwoWayARN を Amazon リソースネーム (ARN) に置き換えて、受信 SMS メッセージを受信します。Amazon SNS ポリシーの例については、「」を参照してくださいAmazon SNS トピックの Amazon SNS トピックポリシー。Amazon Connect をインバウンド送信先セット TwoWayARN として設定するには、 を に設定しますconnect.region.amazonaws.comregion AWS リージョン を Amazon Connect インスタンスがホストされている に置き換えます。

  • を使用する IAM ロールの Amazon リソースネーム (ARN) TwoChannelWayRoleに置き換えます。SNS アクセス許可ポリシーの例については、Amazon SNS トピックの IAM ポリシー「」を参照してください。Amazon Connect ポリシーの例については、「」を参照してくださいAmazon Connect の IAM ポリシー。このパラメータは、IAM アクセス許可ポリシーを使用する場合にのみ必要です。

Amazon SNS トピックの IAM ポリシー

Amazon Pinpoint SMS で既存の IAM ロールを使用する場合、または新しいロールを作成する場合は、Amazon Pinpoint SMS が引き受けられるように、そのロールに次のポリシーをアタッチします。ロールの信頼関係を変更する方法については、IAM ユーザーガイドの「ロールの変更」を参照してください。

以下は、IAM ロールの信頼ポリシーです。次の IAM ポリシーで、次の変更を加えます。

  • accountId を AWS アカウントの一意の ID に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoice", "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" } } } ] }

IAM ロールのアクセス許可ポリシーは次のとおりです。SMSVoiceAllowSNSPublish Sid は Amazon SNS トピックへの発行を許可するアクセス許可ポリシーであり、Sid SMSVoiceAllowEncryptedSNSTopics は暗号化された Amazon SNS トピックのオプションです。

次の IAM アクセス許可ポリシーで、次の変更を加えます。

  • partition は、Amazon Pinpoint SMS を使用する AWS パーティションに置き換えます。

  • region AWS リージョン は、Amazon Pinpoint SMS を使用する に置き換えます。

  • accountId を の一意の ID に置き換えます AWS アカウント。

  • を、メッセージを受信する Amazon SNS トピックsnsTopicArnに置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoiceAllowSNSPublish", "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:partition:sns:region:accountId:snsTopicArn", "Condition": { "StringEquals": { "aws:ResourceAccount": "accountId" } } }, { "Sid": "SMSVoiceAllowEncryptedSNSTopics", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:sns:topicArn": "arn:partition:sns:region:accountId:snsTopicArn", "aws:CalledViaLast": "sns.amazonaws.com" } } } ] }

Amazon SNS トピックの Amazon SNS トピックポリシー

Amazon SNS トピックは、 TwoChannelWayRoleパラメータで指定されていない場合、Amazon Pinpoint SMS へのアクセスを許可する適切なトピックポリシーが必要です。

{ "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sns:Publish", "Resource": "snsTopicArn" }

上の例に、以下の変更を加えます。

  • を、メッセージを送受信する Amazon SNS トピックsnsTopicArnに置き換えます。

注記

Amazon SNS FIFO トピックはサポートされていません。

Amazon Pinpoint SMS データは暗号化されますが、セキュリティを強化するために AWS KMS キーを使用して暗号化された Amazon SNS トピックを使用できます。このようなセキュリティの強化は、プライベートなデータや機密性の高いデータを扱うアプリケーションに有効です。

暗号化された Amazon SNS トピックを双方向メッセージングで使用するには、いくつかの追加設定手順を実行する必要があります。

次のステートメント例では、「混乱した代理」問題を回避し、Amazon Pinpoint SMS 所有者アカウントのみがアクセスできるように、「オプションですが推奨されますSourceAccount」および SourceArn条件を使用しています。混乱した代理問題の詳細については、IAM ユーザーガイドの「混乱した代理問題」を参照してください。

まず、使用する鍵は対称である必要があります。暗号化された Amazon SNS トピックは、非対称 AWS KMS キーをサポートしていません。

次に、Amazon Pinpoint SMS がキーを使用できるようにキーポリシーを変更する必要があります。既存のキーポリシーに以下の権限を追加します。

{ "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:sms-voice:region:accountId:*" } } }

キーポリシーの編集の詳細については、『AWS Key Management Service デベロッパーガイド』の「Changing a key policy」を参照してください。

AWS KMS キーを使用した Amazon SNS トピックの暗号化の詳細については、Amazon Simple Notification Service デベロッパーガイドの「 AWS のサービスからのイベントソースと暗号化されたトピック間の互換性を有効にする」を参照してください。

Amazon SNS トピックの双方向 SMS メッセージペイロードの例

番号が SMS メッセージを受信すると、Amazon Pinpoint SMS は指定した Amazon SNS トピックに JSON ペイロードを送信します。次の例にあるように、JSON ペイロードにはメッセージと関連するデータが含まれています。

{ "originationNumber":"+14255550182", "destinationNumber":"+12125550101", "messageKeyword":"JOIN", "messageBody":"EXAMPLE", "inboundMessageId":"cae173d2-66b9-564c-8309-21f858e9fb84", "previousPublishedMessageId":"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" }

着信メッセージペイロードには、次の情報が含まれています。

プロパティ 説明

originationNumber

受信メッセージを送信した電話番号(つまり、お客様の電話番号)。

destinationNumber

お客様がメッセージを送信した電話番号(専用の電話番号)。

messageKeyword

専用電話番号に関連付けられている登録済みのキーワード。

messageBody

お客様から送信されたメッセージ。

inboundMessageId

受信メッセージの一意の識別子。

previousPublishedMessageId

お客様が応答しているメッセージの一意の識別子。

Amazon Connect の IAM ポリシー

Amazon Pinpoint SMS で既存の IAM ロールを使用する場合、または新しいロールを作成する場合は、Amazon Pinpoint SMS が引き受けられるように、そのロールに次のポリシーをアタッチします。ロールの既存の信頼関係を変更する方法については、IAM ユーザーガイドの「ロールの変更」を参照してください。

新しい IAM ポリシーを作成するには、次の手順を実行します。

  1. 「IAM ユーザーガイド」の「JSON エディタを使用したポリシーの作成」の指示に従って、新しいアクセス許可ポリシーを作成します。

    1. ステップ 4 では、以下で定義されたアクセス許可ポリシーを使用します。

  2. 「IAM ユーザーガイド」の「カスタム信頼ポリシーを使用したロールの作成」の指示に従って、新しい信頼ポリシーを作成します。 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html

    1. ステップ 4 では、以下で定義された信頼ポリシーを使用します。

    2. ステップ 11 では、前のステップで作成したアクセス許可ポリシーを追加します。

以下は、Amazon Connect への発行を許可する IAM ロールのアクセス許可ポリシーです。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "connect:SendChatIntegrationEvent" ], "Resource": [ "*" ] } ] }

IAM ロールの信頼ポリシーを次に示します。次の変更を加えます。

  • accountId を の一意の ID に置き換えます AWS アカウント。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SMSVoice", "Effect": "Allow", "Principal": { "Service": "sms-voice.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" } } } ] }