我正在编写一个使用AWS SNS服务发送SMS的程序。我是这个话题的新手。所以我尝试了在线提供的一个代码。
,代码如下。
var AWS = require('aws-sdk');
AWS.config.region = 'your aws region';
AWS.config.update({
accessKeyId: "your access id",
secretAccessKey: "your secret access key",
});
var sns = new AWS.SNS();
var params = {
Message: "your message",
MessageStructure: 'string',
PhoneNumber: 'phone_number_without_+',
Subject: 'your subject'
};
sns.publish(params, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
这里我已经从我的AWS控制台填充了整个数据,例如Region
,accessKey
和secretAccessKey
,我的mobile number
,Subject
和{{1 }}。当我试图运行时填写这个,我收到以下回复。
message
但没有短信发送到我的手机。
我认为该服务在我的国家/地区不可用,然后尝试从SMS控制台发送消息,如下所示。我在手机上收到了一条短信。
这里我没有使用任何{ ResponseMetadata: { RequestId: '30d54840-1aa8-5ad4-8de7-19cad1ed033f' },
MessageId: '7cc1d99e-b835-5015-b84e-88147370a9fe' }
,我需要单独发送消息,没有要发送的批量消息。
请指导我哪里出错了,我该如何解决这个问题。
由于
更新
感谢您快速测试balent。
这件事情正在发挥作用,最悲伤的部分是9小时后发出的消息。我在印度,我们的代码开始像这样topic
,我做了同样的事情。但是当通过控制台尝试(短信截图)时,消息是即时的,有人可以告诉我们如何解决这个问题。即即将发送的短信。
答案 0 :(得分:2)
感谢您提出问题并更新答案,以减少在印度的投放时间,将属性DefaultSMSType设置为" Transactional"立即交付。
sns.setSMSAttributes(
{
attributes : {
DefaultSMSType : "Transactional"
}
},
function(error){
if(error){
console.log(error);
}
}
);
解释 - 有两种类型,一种是促销,它是默认的,而不是时间关键的,一种是交易性的,时间关键用于otp。我认为在使用任一选项时存在价格差异。在阅读你的答案后,我尝试了你的方式并且短信被延迟了,所以我使用这里给出的api改为事务性,它给了即时消息。
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property