本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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(替换)
5
中AllowedAttempts
包含收件人尝试验证失败的次数。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" } } } }