使用 Amazon Pinpoint 生成一次性密码 (OTPs) - Amazon Pinpoint

终止支持通知: AWS 将于 2026 年 10 月 30 日终止对亚马逊 Pinpoint 的支持。2026 年 10 月 30 日之后,您将无法再访问亚马逊 Pinpoint 控制台或亚马逊 Pinpoint 资源(终端节点、区段、活动、旅程和分析)。有关更多信息,请参阅 Amazon Pinpoint 终止支持。注意: APIs 与短信相关、语音、移动推送、OTP 和电话号码验证不受此更改的影响,并受 AWS 最终用户消息的支持。

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

使用 Amazon Pinpoint 生成一次性密码 (OTPs)

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

重要

要使用该功能,您的账户必须具有生产访问权限和有效的发起身份。有关更多信息,请参阅《AWS 终端用户消息发送 SMS 用户指南》中的关于短信/彩信和语音沙盒申请电话号码

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

要使用此功能,您需要具有发送和验证 OTP 消息的权限,请参阅一次性密码。如果您在确定权限方面需要帮助,请参阅Amazon Pinpoint 身份和访问管理问题排查

您可以使用 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 注册流程

为确保正确配置您的 Amazon Pinpoint 账户以发送 OTP 消息,您可以使用 AWS CLI 发送测试消息。有关更多信息 AWS CLI,请参阅《AWS Command Line Interface 用户指南》

要使用发送测试 OTP 消息 AWS CLI,请在终端中运行send-otp-message以下命令:

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替换为贵公司的名称。

  • 5CodeLegth发送给收件人的 OTP 代码中的位数替换。

  • 20 in ValidityPeriod 替换为 OTP 代码生效的时间(以分钟为单位)。

  • AllowedAttempts5换为收件人尝试验证 OTP 失败的次数。

  • OriginationIdentity+18555550142换为用于发送 OTP 代码的原始身份。

  • DestinationIdentity用要将 +12065550007 OTP 代码发送到的电话号码替换。

  • ReferenceIdSampleReferenceId换为请求的唯一参考编号。

SendOtpMessage 响应

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

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