通过 SMS 直接向 phone 号码发送一次性密码
Sending one-time password by SMS directly to a phone number
我使用 AWS SES 通过电子邮件发送一次性密码。我正在使用 AWS SNS 通过 SMS 实现相同的功能。
我创建了一个主题,otp
,并手动添加了 phone 号码作为订阅。
以下代码在本地和服务器上都有效:
var params = {
// TODO: fix this.
//PhoneNumber: "+351914...",
TopicArn: "arn:aws:sns:...:...:otp",
Message: "Your code is..."
}
var publish_text_promise = new AWS.SNS({apiVersion: '2010-03-31', profile_name: "sms"}).publish(params).promise();
// Handle promise's fulfilled/rejected states
publish_text_promise.then(
function(data) {
console.log("Message sent: %o", params);
console.log("MessageID is " + data.MessageId);
}).catch(
function(err) {
console.error("Error in sending OTP by SMS");
console.error(err, err.stack);
});
我想直接发给phone号码,不需要人工干预,我可以添加其他同主题的用户。当我添加 PhoneNumber
而不是 TopicArn
时,它有时会起作用,有时我会收到此消息:
InvalidParameter: Invalid parameter: PhoneNumber Reason: +351914... is not valid to publish to
phone 号码格式正确:当我在本地测试时,它总是有效。
我在本地和远程拥有相同的代码以及相同的 AWS 凭证文件。
为什么代码在本地工作,有时在远程失败?我怎样才能直接发送到 phone 个号码?
问题是 phone 号码中的一个不可见字符,您可以在 6:
之后看到
InvalidParameter: Invalid parameter: PhoneNumber Reason: +3519...6 is not valid to publish to
我在添加到 macOS 上的联系人之前清理了 phone 号码,但联系人似乎到处添加这些字符。当我删除 phone 数字时,字符消失了。因为字符在末尾,所以我选择phone号到copy-and-paste时漏掉了。
根据评论,调试此问题的一种解决方案是尝试使用 AWS SNS 控制台。
因此,此帖与密切相关:
This was definitely caused by an encoding issue, paste the code below into jsfiddle, and mouseover to see the warning on the first plus sign which reads:
This character may get silently deleted by one or more browsers
我使用 AWS SES 通过电子邮件发送一次性密码。我正在使用 AWS SNS 通过 SMS 实现相同的功能。
我创建了一个主题,otp
,并手动添加了 phone 号码作为订阅。
以下代码在本地和服务器上都有效:
var params = {
// TODO: fix this.
//PhoneNumber: "+351914...",
TopicArn: "arn:aws:sns:...:...:otp",
Message: "Your code is..."
}
var publish_text_promise = new AWS.SNS({apiVersion: '2010-03-31', profile_name: "sms"}).publish(params).promise();
// Handle promise's fulfilled/rejected states
publish_text_promise.then(
function(data) {
console.log("Message sent: %o", params);
console.log("MessageID is " + data.MessageId);
}).catch(
function(err) {
console.error("Error in sending OTP by SMS");
console.error(err, err.stack);
});
我想直接发给phone号码,不需要人工干预,我可以添加其他同主题的用户。当我添加 PhoneNumber
而不是 TopicArn
时,它有时会起作用,有时我会收到此消息:
InvalidParameter: Invalid parameter: PhoneNumber Reason: +351914... is not valid to publish to
phone 号码格式正确:当我在本地测试时,它总是有效。
我在本地和远程拥有相同的代码以及相同的 AWS 凭证文件。
为什么代码在本地工作,有时在远程失败?我怎样才能直接发送到 phone 个号码?
问题是 phone 号码中的一个不可见字符,您可以在 6:
之后看到InvalidParameter: Invalid parameter: PhoneNumber Reason: +3519...6 is not valid to publish to
我在添加到 macOS 上的联系人之前清理了 phone 号码,但联系人似乎到处添加这些字符。当我删除 phone 数字时,字符消失了。因为字符在末尾,所以我选择phone号到copy-and-paste时漏掉了。
根据评论,调试此问题的一种解决方案是尝试使用 AWS SNS 控制台。
因此,此帖与
This was definitely caused by an encoding issue, paste the code below into jsfiddle, and mouseover to see the warning on the first plus sign which reads:
This character may get silently deleted by one or more browsers