

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

# AWS 最终用户消息 SMS 中的双向 SMS 消息
<a name="two-way-sms"></a>

AWS 最终用户消息 SMS 包括对双向 SMS 的支持。当您设置双向短信时，您可以收到来自客户的传入消息。您还可以将双向消息传递与其他 AWS 服务（例如 Lambda 和 Amazon Lex）一起使用，以创建交互式短信体验。

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

双向 SMS 仅适用于某些国家和地区。有关支持双向 SMS 的国家/地区的更多信息，请参阅 [短信和彩信国家/地区能力和限制](phone-numbers-sms-support-by-country.md)。

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

**注意**  
双向 SMS 仅适用于某些国家和地区。有关支持双向 SMS 的国家/地区的更多信息，请参阅 [短信和彩信国家/地区能力和限制](phone-numbers-sms-support-by-country.md)。  
虽然不支持双向彩信，但您的电话号码仍然可以接收回复出站彩信的传入短信。  
适用于双向短信的 Amazon Connect 可在 Amazon Conn *ect 管理员指南的 “[聊天消息：短信” 子类型](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#chatmessaging_region)中 AWS 区域 列出的内容*中找到。

**Topics**
+ [为电话号码设置双向短信收发](two-way-sms-phone-number.md)
+ [为电话池设置双向短信收发](two-way-sms-pool.md)
+ [Amazon SNS 主题的 IAM 策略](two-way-sms-iam-policy.md)
+ [Amazon SNS 主题策略](two-way-sms-iam-policy-auto.md)
+ [Amazon Connect 的 IAM 策略](two-way-connect-iam-policy.md)
+ [双向短信有效载荷示例](two-way-sms-payload.md)

# 在 AWS 终端用户消息发送 SMS 服务中为电话号码设置双向短信收发
<a name="two-way-sms-phone-number"></a>

AWS 终端用户消息发送 SMS 服务支持双向短信。当您设置双向短信时，您可以收到来自客户的传入消息。您还可以将双向消息与其他 AWS 服务（例如 Lambda 和 Amazon Lex）结合使用，以创建交互式文本消息体验。

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

**注意**  
双向 SMS 仅适用于某些国家和地区。有关支持双向 SMS 的国家/地区的更多信息，请参阅 [短信和彩信国家/地区能力和限制](phone-numbers-sms-support-by-country.md)。
《Amazon Connect 管理员指南》**的[聊天消息：短信子类型](https://docs.aws.amazon.com/connect/latest/adminguide/regions.html#chatmessaging_region)中列出的 AWS 区域中提供了适用于双向短信的 Amazon Connect。
虽然不支持双向彩信，但您的电话号码仍然可以接收回复出站彩信的传入短信。

------
#### [ Two-way SMS messaging (Console) ]

要使用 AWS 终端用户消息发送 SMS 服务控制台启用双向短信，请执行以下步骤：

**启用双向短信**

1. 打开 AWS 终端用户消息发送 SMS 服务控制台，网址为 [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/)。

1. 在导航窗格中的**配置**下，选择**电话号码**。

1. 在**电话号码**页面上，选择所需电话号码。

1. 在**双向短信**选项卡上，选择**编辑设置**按钮。

1. 在**编辑设置**页面上，选择**启用双向消息**。

1. 对于**目标类型**，选择 **Amazon SNS** 或 **Amazon Connect**。
   + 对于 Amazon SNS，选择**新 Amazon SNS 主题**或**现有的 Amazon SNS 主题**；然后对于**双向渠道角色**，选择**选择现有的 IAM 角色**或**使用 Amazon SNS 主题策略**。
     + **新 Amazon SNS 主题** – 如果您选择此选项，AWS 终端用户消息发送 SMS 服务会在您的账户中创建主题。该主题将自动创建，并具有所有必需的权限。有关 Amazon SNS 主题的更多信息，请参阅[《Amazon Simple Notification Service 开发人员指南》](https://docs.aws.amazon.com/sns/latest/dg/)中的[配置 Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。
     + **现有的 Amazon SNS 主题** – 如果选择此选项，则必须从**传入消息目的地**下拉列表中选择现有的 Amazon SNS 主题。
     + 对于**双向渠道角色**，选择以下任一选项：
       + **选择现有的 IAM 角色** – 选择现有的 IAM 策略以应用于 Amazon SNS 主题。有关 Amazon SNS 策略的示例，请参阅 [Amazon SNS 主题的 IAM 策略](two-way-sms-iam-policy.md)。
       + **使用 Amazon SNS 主题政策** – Amazon SNS 主题需要相应的 Amazon SNS 主题策略才能授予对 AWS 终端用户消息发送 SMS 服务的访问权限。有关 Amazon SNS 策略的示例，请参阅 [Amazon SNS 主题策略](two-way-sms-iam-policy-auto.md)。
   + 对于 Amazon Connect 的**双向渠道角色**，选择**选择现有的 IAM 角色**。
     + 在**现有 IAM 角色**下拉列表中，选择现有 IAM 角色作为消息目的地。有关示例 IAM 策略，请参阅 [Amazon Connect 的 IAM 策略](two-way-connect-iam-policy.md)。

1. 选择**保存更改**。

1. *（可选）*如果您选择了 Amazon Connect 作为**目标类型**，则在**将电话号码导入 Amazon Connect** 窗口中：

   1. 在**传入消息目标**下拉列表中，选择将接收传入消息的 Amazon Connect 实例。

   1. 选择**导入电话号码**。

------
#### [ Two-way SMS messaging (AWS CLI) ]

您可以使用 [update-phone-number](https://docs.aws.amazon.com/cli/latest/reference/pinpoint-sms-voice-v2/update-phone-number.html) 命令启用双向短信。

在命令行输入以下命令：

```
$ 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
```

在前面的命令中，进行以下更改：
+ 将 *PhoneNumber* 替换为电话号码的 PhoneNumberID 或 Amazon 资源名称（ARN）。
+ 将 *TwoWayARN* 替换为用于接收传入短信的 Amazon 资源名称（ARN）。有关 Amazon SNS 策略的示例，请参阅 [Amazon SNS 主题策略](two-way-sms-iam-policy-auto.md)。要将 Amazon Connect 设置为入站目标，请将 *TwoWayARN* 设置为 `connect.region.amazonaws.com`。将 *region* 替换为托管 Amazon Connect 实例的 AWS 区域。
+ 将 *TwoChannelWayRole* 替换为要使用的 IAM 角色的 Amazon 资源名称（ARN）。有关 SNS 权限策略的示例，请参阅[Amazon SNS 主题的 IAM 策略](two-way-sms-iam-policy.md)；有关 Amazon Connect 策略的示例，请参阅 [Amazon Connect 的 IAM 策略](two-way-connect-iam-policy.md)。仅在您选择使用 IAM 权限策略时，此参数才是必需的。

------

# 在 AWS 终端用户消息发送 SMS 服务中为电话池设置双向短信收发
<a name="two-way-sms-pool"></a>

使用 AWS 终端用户消息发送 SMS 服务控制台或 AWS CLI 为您的电话池启用双向短信。

------
#### [ Two-way SMS messaging (Console) ]

要使用 AWS 终端用户消息发送 SMS 服务控制台启用双向短信，请执行以下步骤：

**启用双向短信**

1. 打开 AWS 终端用户消息发送 SMS 服务控制台，网址为 [https://console.aws.amazon.com/sms-voice/](https://console.aws.amazon.com/sms-voice/)。

1. 在导航窗格中的**配置**下，选择**电话池**。

1. 在**电话池**页面上，选择一个电话池。

1. 在**双向短信**选项卡上，选择**编辑设置**。

1. 在**编辑设置**页面上，开启**启用双向消息**。

1. 对于**目标类型**，选择 **Amazon SNS** 或 **Amazon Connect**。
   + 对于 Amazon SNS，选择**新 Amazon SNS 主题**或**现有的 Amazon SNS 主题**；然后对于**双向渠道角色**，选择**选择现有的 IAM 角色**或**使用 Amazon SNS 主题策略**。
     + **新 Amazon SNS 主题** – 如果您选择此选项，AWS 终端用户消息发送 SMS 服务会在您的账户中创建主题。该主题将自动创建，并具有所有必需的权限。有关 Amazon SNS 主题的更多信息，请参阅《Amazon SNS 开发人员指南》**中的[配置 Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。
     + **现有的 Amazon SNS 主题** – 如果选择此选项，则必须从**传入消息目的地**下拉列表中选择现有的 Amazon SNS 主题。
     + 对于**双向渠道角色**，选择以下任一选项：
       + **选择现有的 IAM 角色** – 选择现有的 IAM 策略以应用于 Amazon SNS 主题。有关 Amazon SNS 策略的示例，请参阅 [Amazon SNS 主题的 IAM 策略](two-way-sms-iam-policy.md)。
       + **使用 Amazon SNS 主题政策** – Amazon SNS 主题需要相应的 Amazon SNS 主题策略才能授予对 AWS 终端用户消息发送 SMS 服务的访问权限。有关 Amazon SNS 策略的示例，请参阅 [Amazon SNS 主题策略](two-way-sms-iam-policy-auto.md)。
   + 对于 Amazon Connect 的**双向渠道角色**，选择**选择现有的 IAM 角色**。
     + 在**现有 IAM 角色**下拉列表中，选择现有 IAM 角色作为消息目的地。有关示例 IAM 策略，请参阅 [Amazon Connect 的 IAM 策略](two-way-connect-iam-policy.md)。

1. 选择**保存更改**。

------
#### [ Two-way SMS messaging (AWS CLI) ]

您可以使用 [update-pool](https://docs.aws.amazon.com/cli/latest/reference/pinpoint-sms-voice-v2/update-pool.html) 命令启用双向短信。

在命令行输入以下命令：

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

在前面的命令中，进行以下更改：
+ 将 *poolid* 替换为电话号码的 PhonePoolID 或 Amazon 资源名称（ARN）。
+ 将 *TwoWayARN* 替换为用于接收传入短信的 Amazon 资源名称（ARN）。有关 Amazon SNS 策略的示例，请参阅 [Amazon SNS 主题策略](two-way-sms-iam-policy-auto.md)。要将 Amazon Connect 设置为入站目标，请将 *TwoWayARN* 设置为 `connect.region.amazonaws.com`。将 *region* 替换为托管 Amazon Connect 实例的 AWS 区域。
+ 将 *TwoChannelWayRole* 替换为要使用的 IAM 角色的 Amazon 资源名称（ARN）。有关 SNS 权限策略的示例，请参阅[Amazon SNS 主题的 IAM 策略](two-way-sms-iam-policy.md)；有关 Amazon Connect 策略的示例，请参阅 [Amazon Connect 的 IAM 策略](two-way-connect-iam-policy.md)。仅在您选择使用 IAM 权限策略时，此参数才是必需的。

------

# Amazon SNS 主题的 IAM 策略
<a name="two-way-sms-iam-policy"></a>

如果您希望 AWS 最终用户消息 SMS 使用现有的 IAM 角色或创建新角色，请将以下策略附加到该角色，以便 AWS 最终用户消息 SMS 可以代入该角色。有关如何修改角色的信任关系的信息，请参阅 [https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)中的[修改角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_manage.html)部分。

以下是 IAM 角色的**信任策略**。在以下 IAM 策略中，进行以下更改：
+ *accountId*替换为 AWS 账户的唯一 ID。

------
#### [ JSON ]

****  

```
{
  "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 主题的权限策略，而 `SMSVoiceAllowEncryptedSNSTopics` Sid 则是针对加密的 Amazon SNS 主题的选项。

在以下 IAM 权限策略中，进行以下更改：
+ *partition*替换为您在其中使用 AWS 最终用户消息 SMS 的 AWS 分区。
+ *region*替换为您在 AWS 区域 中使用 AWS 最终用户消息 SMS 的。
+ *accountId*替换为您的唯一 ID AWS 账户。
+ *snsTopicArn*替换为将接收消息的 Amazon SNS 主题。

------
#### [ JSON ]

****  

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

------

# Amazon SNS 主题策略
<a name="two-way-sms-iam-policy-auto"></a>

如果参数中未提供最终用户消息 SMS，Amazon SNS 主题需要相应的主题策略才能授予访问 AWS 最终用户消息 SMS 的*TwoChannelWayRole*权限。

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

在前面的示例中，进行以下更改：
+ *snsTopicArn*替换为将发送和接收消息的 Amazon SNS 主题。

**注意**  
不支持 Amazon SNS FIFO 主题。

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

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

以下示例语句使用可选但推荐的`SourceAccount`和`SourceArn`条件来避免混淆副手问题，并且只有 AWS 最终用户消息 SMS 所有者帐户才有访问权限。有关混淆代理问题的更多信息，请参阅 *[IAM 用户指南](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)*中的[混淆代理问题](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html)。

首先，您使用的密钥必须是*对称*的。加密的 Amazon SNS 主题不支持非对称 AWS KMS 密钥。

其次，必须修改密钥策略以允许 AWS 最终用户消息 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 开发人员指南》中的**[更改密钥政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html)。

有关 AWS KMS 使用密钥加密 Amazon SNS 主题的更多信息，[请参阅《*亚马逊简单通知*服务开发者指南》中的启用服务事件 AWS 源和加密主题之间的兼容性](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services)。

# Amazon Connect 的 IAM 策略
<a name="two-way-connect-iam-policy"></a>

如果您希望 AWS 最终用户消息 SMS 使用现有的 IAM 角色或创建新角色，请将以下策略附加到该角色，以便 AWS 最终用户消息 SMS 可以代入该角色。有关如何修改角色的现有信任关系的信息，请参阅 [https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html)中的[修改角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_manage.html)。

要创建新的 IAM 策略，请执行以下操作：

1. 按照《IAM 用户指南》的[使用 JSON 编辑器创建策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor)中的说明创建新的**权限策略**。

   1. 在步骤 4 中，使用下面定义的**权限策略**。

1. 按照《IAM 用户指南》的[使用自定义信任策略创建角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)中的说明创建新的**信任策略**。

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

   1. 在步骤 11 中，添加您在上一步中创建的**权限策略**。

以下是允许 IAM 角色向 Amazon Connect 发布消息的**权限策略**。

------
#### [ JSON ]

****  

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

------

以下是 IAM 角色的**信任策略**，请进行以下更改：
+ *accountId*替换为您的唯一 ID AWS 账户。

------
#### [ JSON ]

****  

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

------

# Amazon SNS 主题的双向短信有效载荷示例
<a name="two-way-sms-payload"></a>

当您的号码收到短信时， AWS 最终用户消息短信会向您指定的 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` | 客户正在答复的邮件的唯一标识符。 | 