双向短信 - 亚马逊 Pinpoint 短信

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

双向短信

亚马逊 Pinpoint 短信支持双向短信。当您设置双向短信时,您可以收到来自客户的传入消息。您还可以将双向消息传递与其他 AWS 服务(例如 Lambda 和 Amazon Lex)一起使用,以创建交互式短信体验。

当您的一位客户向您的电话号码发送消息时,消息正文将发送到 Amazon SNS 主题或 Amazon Connect 进行处理。

双向 SMS 仅适用于某些国家和地区。有关支持双向 SMS 的国家/地区的更多信息,请参阅 短信和彩信国家/地区的功能和限制

发件人 ID 不支持双向 SMS 消息。

注意

双向 SMS 仅适用于某些国家和地区。有关支持双向 SMS 的国家/地区的更多信息,请参阅 短信和彩信国家/地区的功能和限制

双向彩信不可用。

适用于双向短信的 Amazon Connect 可在 Amazon Conn ect 管理员指南的 “聊天消息:短信” 子类型中 AWS 区域 列出的内容中找到。

Two-way SMS messaging (Console)

要使用 Amazon Pinpoint SMS 控制台启用双向短信,请执行以下步骤:

启用双向 SMS
  1. 打开 Amazon Pinpoint SMS 控制台,网址为:https://console.aws.amazon.com/sms-voice/

  2. 在导航窗格的 “配置” 下,选择 “电话池”。

  3. 在 “电话池” 页面上,选择一个电话池。

  4. 在 “双向短信” 选项卡上,选择 “编辑设置”

  5. “编辑设置” 页面上,打开 “启用双向消息”。

  6. 对于目的地类型,请选择 Amazon SNS 或 Amazon Conn ec t

    • 对于 Amazon SNS,选择新的亚马逊 SNS 主题或现有亚马逊 SNS 主题,然后对于双向渠道角色,选择选择现有 IAM 角色或使用亚马逊 SN S 主题策略。

      • 全新 Amazon SNS 主题 — 如果您选择此选项,Amazon Pinpoint SMS 将在您的账户中创建一个主题。该主题将自动创建,并具有所有必需的权限。有关 Amazon SNS 主题的更多信息,请参阅《Amazon SNS 开发人员指南》中的配置 Amazon SNS

      • 现有 Amazon SNS 主题 — 如果您选择此选项,则必须从 “传入消息目标” 下拉列表中选择现有的 Amazon SNS 主题。

      • 对于双向频道角色,请选择以下任一选项:

    • 对于双向渠道角色的 Amazon Connect,请选择选择现有 IAM 角色

      • 现有 IAM 角色下拉列表中,选择现有 IAM 角色作为消息目的地。有关 IAM 策略的示例,请参阅Amazon Connect 的 IAM 政策

  7. 选择保存更改

Two-way SMS messaging (AWS CLI)

您可以使用 update-pool 命令启用双向短信。

在命令行输入以下命令:

$ aws pinpoint-sms-voice-v2 update-pool \ > --pool-id poolid \ > --two-way-channel-arn TwoWayARN \ > --two-way-channel-role TwoChannelWayRole

在前面的命令中,进行以下更改:

  • pooli d 替换为电话号码的 PhonePool ID 或亚马逊资源名称 (ARN)。

  • TwoWayARN 替换为亚马逊资源名称 (ARN) 以接收传入的短信。有关亚马逊 SNS 政策的示例,请参阅。亚马逊 SNS 主题针对亚马逊 SNS 主题的主题政策要将 Amazon Connect 设置为入库目的地,请将 TwoWayARN 设置为。connect.region.amazonaws.com区域替换为托管 AWS 区域 的 Amazon Connect 实例所在的地区。

  • TwoChannelWayRole替换为要使用的 IAM 角色的亚马逊资源名称 (ARN)。有关 SNS 权限策略的示例,请参阅亚马逊 SNS 主题的 IAM 政策,例如 Amazon Connect 政策,请参阅Amazon Connect 的 IAM 政策。仅当您选择使用 IAM 权限策略时,才需要此参数。

亚马逊 SNS 主题的 IAM 政策

如果您希望 Amazon Pinpoint SMS 使用现有的 IAM 角色或创建新角色,请将以下策略附加到该角色,以便 Amazon Pinpoint SMS 可以代入该角色。有关如何修改角色信任关系的信息,请参阅 IAM 用户指南中的修改角色

以下是 IAM 角色的信任策略,请进行以下更改:

  • 账户 ID 替换为你的唯一 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" } } } ] }

以下是 IAM 角色的权限策略SMSVoiceAllowSNSPublishSid 是一项允许发布到亚马逊 SNS 主题的权限策略,而 S SMSVoiceAllowEncryptedSNSTopics id 是加密亚马逊 SNS 主题的选项。

在以下 IAM 权限策略中,进行以下更改:

  • 分区替换为您在其中使用 Amazon Pinpoint SMS 的 AWS 分区。

  • 区域替换为您使用亚马逊 Pinpoint 短信的区域。 AWS 区域

  • 账户 ID 替换为你的唯一 ID。 AWS 账户

  • snsTopicArn替换为将接收消息的 Amazon SNS 主题。

{ "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" } } } ] }

亚马逊 SNS 主题针对亚马逊 SNS 主题的主题政策

如果参数中未提供 Amazon Pinpoint 短信,Amazon SNS 主题需要相应的主题策略才能授予访问权限。TwoChannelWayRole

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

在前面的示例中,进行以下更改:

  • snsTopicArn替换为将发送和接收消息的 Amazon SNS 主题。

注意

不支持 Amazon SNS FIFO 主题。

尽管 Amazon Pinpoint 短信数据已加密,但您可以使用 AWS KMS 使用密钥加密的 Amazon SNS 主题来提高安全级别。如果您的应用程序处理私有或敏感数据,这种增强的安全性会有所帮助。

您需要执行一些额外的设置步骤才能使用加密的 Amazon SNS 主题进行双向消息收发。

以下示例语句使用可选但推荐的SourceAccountSourceArn条件来避免混淆副手问题,并且只有 Amazon Pinpoint SMS 所有者账户才能访问。有关混淆副手问题的更多信息,请参阅 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 开发人员指南》中的更改密钥政策

有关 AWS KMS 使用密钥加密 Amazon SNS 主题的更多信息,请参阅《亚马逊简单通知服务开发者指南》中的启用服务事件 AWS 源和加密主题之间的兼容性

双向短信有效负载的示例

当您的号码收到短信时,Amazon Pinpoint SMS 会向您指定的亚马逊 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 用户指南中的使用自定义信任策略创建角色中的说明创建新的信任策略

    1. 在步骤 4 中,使用下面定义的信任策略

    2. 在步骤 11 中,添加您在上一步中创建的权限策略

以下是 IAM 角色允许发布到 Amazon Connect 的权限策略

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

以下是 IAM 角色的信任策略,请进行以下更改:

  • 账户 ID 替换为你的唯一 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" } } } ] }