本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
双向短信
亚马逊 Pinpoint 短信支持双向短信。当您设置双向短信时,您可以收到来自客户的传入消息。您还可以将双向消息传递与其他 AWS 服务(例如 Lambda 和 Amazon Lex)一起使用,以创建交互式短信体验。
当您的一位客户向您的电话号码发送消息时,消息正文将发送到 Amazon SNS 主题或 Amazon Connect 进行处理。
双向 SMS 仅适用于某些国家和地区。有关支持双向 SMS 的国家/地区的更多信息,请参阅 短信和彩信国家/地区的功能和限制。
发件人 ID 不支持双向 SMS 消息。
注意
双向 SMS 仅适用于某些国家和地区。有关支持双向 SMS 的国家/地区的更多信息,请参阅 短信和彩信国家/地区的功能和限制。
双向彩信不可用。
适用于双向短信的 Amazon Connect 可在 Amazon Conn ect 管理员指南的 “聊天消息:短信” 子类型中 AWS 区域 列出的内容中找到。
亚马逊 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 角色的权限策略。SMSVoiceAllowSNSPublish
Sid 是一项允许发布到亚马逊 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 主题进行双向消息收发。
以下示例语句使用可选但推荐的SourceAccount
和SourceArn
条件来避免混淆副手问题,并且只有 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" }
传入邮件负载包含以下信息:
属性 | 描述 |
---|---|
|
向您发送传入邮件的电话号码(换句话说,您的客户的电话号码)。 |
|
客户将邮件发送到的电话号码(您的专用电话号码)。 |
|
与您的专用电话号码关联的注册关键字。 |
|
客户向您发送的邮件。 |
|
传入邮件的唯一标识符。 |
|
客户正在答复的邮件的唯一标识符。 |
Amazon Connect 的 IAM 政策
如果您希望 Amazon Pinpoint SMS 使用现有的 IAM 角色或创建新角色,请将以下策略附加到该角色,以便 Amazon Pinpoint SMS 可以代入该角色。有关如何修改角色的现有信任关系的信息,请参阅 IAM 用户指南中的修改角色。
要创建新的 IAM 策略,请执行以下操作:
-
按照 IAM 用户指南中使用 JSON 编辑器创建策略中的说明创建新的权限策略。
-
在步骤 4 中,使用下面定义的权限策略。
-
-
按照 IAM 用户指南中的使用自定义信任策略创建角色中的说明创建新的信任策略。
-
在步骤 4 中,使用下面定义的信任策略。
-
在步骤 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
" } } } ] }