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

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

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

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

重要

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

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

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

您可以使用 Amazon Pinpoint 中的SendOtpMessages操作API向应用程序的用户发送OTP代码。当您使用它时API,Amazon Pinpoint 会生成一个随机代码并将其作为消息发送给您的用户。SMS您的请求可以包含以下参数:

  • Channel— 发送OTP代码的通信渠道。当前,仅支持SMS消息,因此唯一可接受的值是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— 用于发送代码的原始身份(例如长码、短代码或发件人 ID)。OTP如果您使用长代码或免费电话号码发送OTP,则电话号码必须采用 E.164 格式。

  • DestinationIdentity— 发送OTP验证码的电话号码,采用 E.164 格式。

  • ReferenceId – 请求的唯一参考 ID。参考编号与您在验证时提供的参考编号完全匹配OTP。该参考 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

在上述命令中,执行以下操作:

  • Replace(替换) 7353f53e6885409fa32d07cedexample 使用您的应用程序 ID。

  • Replace(替换) ExampleCorp 用贵公司的名字。

  • Replace(替换) 5 输入发送给收件人的OTP代码中将包含的位数。CodeLegth

  • Replace(替换) 20 ValidityPeriod以分钟为单位表示该OTP代码将生效。

  • Replace(替换) 5AllowedAttempts包含收件人尝试验证失败的次数。OTP

  • Replace(替换) +18555550142 输入用于发送OTP代码的原始身份。OriginationIdentity

  • Replace(替换) +12065550007 输入要发送OTP验证码的电话号码。DestinationIdentity

  • Replace(替换) SampleReferenceId 输入请求ReferenceId的唯一参考编号。

SendOtpMessage 响应

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

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