

**终止支持通知：** AWS 将于 2026 年 10 月 30 日终止对亚马逊 Pinpoint 的支持。2026 年 10 月 30 日之后，您将不再能够访问 Amazon Pinpoint 控制台或 Amazon Pinpoint 资源（端点、分段、活动、旅程和分析）。有关更多信息，请参阅 [Amazon Pinpoint 终止支持](https://docs.aws.amazon.com/console/pinpoint/migration-guide)。**注意：** APIs 与短信相关、语音、移动推送、OTP 和电话号码验证不受此更改的影响，并受 AWS 最终用户消息的支持。

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

# 使用 Amazon Pinpoint 生成一次性密码 (OTPs)
<a name="send-validate-otp"></a>

Amazon Pinpoint 包含一次性密码（OTP）管理功能，您可以使用该功能生成新的一次性密码，并将这些密码作为短信消息发送给您的收件人。

**重要**  
要使用该功能，您的账户必须具有生产访问权限和有效的发起身份。[有关更多信息，请参阅《*AWS 最终用户消息 SMS 用户指南》*中的 “关于 SMS/MMS 和语音沙箱”](https://docs.aws.amazon.com/sms-voice/latest/userguide/sandbox.html) 和 “[申请电话号码](https://docs.aws.amazon.com/sms-voice/latest/userguide/phone-numbers-request.html)”。

在某些国家/地区和区域，您必须先获得专用的电话号码或发起 ID，然后才能发送短信消息。例如，当您向美国的收件人发送消息时，您必须有一个专用的免费电话号码、10DLC 号码或短代码。当您向印度的收件人发送消息时，您必须拥有注册的发件人 ID，其中包括主体实体 ID (PEID) 和模板 ID。在使用 OTP 功能时，这些要求仍然适用。

要使用此功能，您需要具有发送和验证 OTP 消息的权限，请参阅[一次性密码](permissions-actions.md#permissions-actions-apiactions-otp)。如果您在确定权限方面需要帮助，请参阅[Amazon Pinpoint 身份和访问管理问题排查](security_iam_troubleshoot.md)。

您可以使用 Amazon Pinpoint API 中的 `SendOtpMessages` 操作向应用程序用户发送 OTP 代码。当您使用此 API 时，Amazon Pinpoint 会生成一个随机代码并将其作为短信发送给您的用户。您的请求中可以包括以下参数：
+ `Channel` – 发送 OTP 代码的通信渠道。目前，仅支持短信，因此唯一可接受的值是 SMS。
+ `BrandName` – 与 OTP 代码关联的品牌、公司或产品的名称。该名称最多可以包含 20 个字符。
**注意**  
当 Amazon Pinpoint 发送 OTP 消息时，品牌名称会自动插入到以下消息模板中：  

  ```
  This is your One Time Password: {{otp}} from {{brand}}
  ```
因此，如果您指定 ExampleCorp 您的品牌名称，并且 Amazon Pinpoint 生成了一个 123456 的一次性密码，则它会向您的用户发送以下消息：  

  ```
  This is your One Time Password: 123456 from ExampleCorp
  ```
+ `CodeLength` – 发送给收件人的 OTP 代码中将包含的位数。OTP 代码可以包含 5 到 8 位数字。
+ `ValidityPeriod` – OTP 代码的有效时间（以分钟为单位）。有效期可以为 5 到 60 分钟。
+ `AllowedAttempts` – 收件人验证 OTP 失败的次数。如果验证次数超过此值，OTP 将自动失效。最多可验证 5 次。
+ `Language` – 发送消息时使用的语言，采用 IETF BCP-47 格式。可接受的值如下：
  + `de-DE` – 德语
  + `en-GB` – 英语（英国）
  + `en-US` – 英语（美国）
  + `es-419` – 西班牙语（拉丁美洲）
  + `es-ES` – 西班牙语
  + `fr-CA` – 法语（加拿大）
  + `fr-FR` – 法语
  + `it-IT` – 意大利语
  + `ja-JP` –日语
  + `ko-KR` - 韩语
  + `pt-BR` - 巴西葡萄牙语
  + `zh-CN` - 简体中文
  + `zh-TW` – 繁体中文
+ `OriginationIdentity` – 用于发送 OTP 代码的源身份（例如长代码、短代码或发件人 ID）。如果您使用长代码或免费电话号码发送 OTP，则电话号码必须采用 E.164 格式。
+ `DestinationIdentity` – OTP 代码发送到的电话号码，采用 E.164 格式。
+ `ReferenceId` – 请求的唯一参考 ID。该参考 ID 与您在验证 OTP 时提供的参考 ID 完全一致。该参考 ID 可以包含 1 到 48 个字符。
+ `EntityId` – 在监管机构注册的实体 ID。目前仅在向印度的收件人发送消息时使用此参数。如果您不是向位于印度的收件人发送消息，则可以忽略此参数。
+ `TemplateId` – 在监管机构注册的模板 ID。目前仅在向印度的收件人发送消息时使用此参数。如果您不是向位于印度的收件人发送消息，则可以忽略此参数。
**注意**  
有关向印度收件人发送消息的要求的更多信息，请参阅《Amazon Pinpoint 用户指南》**中的[印度发件人 ID 注册流程](https://docs.aws.amazon.com/sms-voice/latest/userguide/registrations-sms-senderid-india.html)。

为确保正确配置您的 Amazon Pinpoint 账户以发送 OTP 消息，您可以使用 AWS CLI 发送测试消息。有关更多信息 AWS CLI，请参阅《[AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

要使用发送测试 OTP 消息 AWS CLI，请在终端中运行[send-otp-message](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/send-otp-message.html)以下命令：

```
aws pinpoint send-otp-message --application-id 7353f53e6885409fa32d07cedexample --send-otp-message-request-parameters Channel=SMS,BrandName=ExampleCorp,CodeLength=5,ValidityPeriod=20,AllowedAttempts=5,OriginationIdentity=+18555550142,DestinationIdentity=+12065550007,ReferenceId=SampleReferenceId
```

在上述命令中，执行以下操作：
+ *7353f53e6885409fa32d07cedexample*替换为您的应用程序 ID。
+ *ExampleCorp*替换为贵公司的名称。
+ *5*用`CodeLegth`发送给收件人的 OTP 代码中的位数替换。
+ 用 OTP 代码生效的时间（以分钟为单位）替换*20*。`ValidityPeriod`
+ `AllowedAttempts`替*5*换为收件人尝试验证 OTP 失败的次数。
+ `OriginationIdentity`替*\$118555550142*换为用于发送 OTP 代码的原始身份。
+ `DestinationIdentity`用要将 *\$112065550007* OTP 代码发送到的电话号码替换。
+ `ReferenceId`替*SampleReferenceId*换为请求的唯一参考编号。

## `SendOtpMessage` 响应
<a name="send-validate-otp-sending-response"></a>

成功发送 OTP 消息后，您将收到与类似以下示例的响应：

```
{
    "MessageResponse": {
        "ApplicationId": "7353f53e6885409fa32d07cedexample",
        "RequestId": "255d15ea-75fe-4040-b919-096f2example",
        "Result": {
            "+12065550007": {
                "DeliveryStatus": "SUCCESSFUL",
                "MessageId": "nvrmgq9kq4en96qgp0tlqli3og1at6aexample",
                "StatusCode": 200,
                "StatusMessage": "MessageId: nvrmgq9kq4en96qgp0tlqli3og1at6aexample"
            }
        }
    }
}
```