我正在编写一个简单的程序,使用Javascript客户端使用SNS服务发送短信。
var AWS = require('aws-sdk');
var sns = new AWS.SNS({
region : 'ap-southeast-1',
accessKeyId: '',
secretAccessKey: ''
});
sns.publish({
Message : "Test message",
PhoneNumber : "Test number"
}, function (err, data) {
if(err) {
console.log("Error - " + err);
}
else {
console.log('Success - ');
console.log(data);
}
});
我获得了成功,数据看起来像
{ ResponseMetadata: { RequestId: '3b4e8c82-976c-55da-b1fa-dcd9ddc7254d' },
MessageId: '47a38cbe-2047-5056-a615-dce56aecc0c1' }
然而,短信未送达。
可能是什么问题?
答案 0 :(得分:3)
消息开始在24日之后发送给新的请求。度量标准仪表板显示数据一天过时。在仪表板上正确显示所有短信交付都在9月21日失败,尽管API的积极响应。这让我重新考虑使用SNS进行短信的决定。
感谢所有帮助过的人。
答案 1 :(得分:1)
为SMSTypes设置MessageAttributes适合我。
{'AWS.SNS.SMS.SMSType':{'DataType':'String','StringValue':'Promotional'}}
用于发布功能中的MessageAttributes。您的发布功能将如下所示:
client.publish(PhoneNumber =“ YOUR_NUMBER”,Message =“ YOUR_MESSAGE”,MessageAttributes = {'AWS.SNS.SMS.SMSType':{'DataType':'String','StringValue':'Transactional'}} )
默认情况下,由于此消息不会在DND号码上显示,因此SMSType将为Promotional。
参考:here
答案 2 :(得分:0)
我们需要指定更多SNS参数。
可能有用的文档页面:
试试这段代码
var AWS = require('aws-sdk');
var sns = new AWS.SNS({
region: 'ap-southeast-1',
accessKeyId: '',
secretAccessKey: ''
});
var params = {
Message: 'Test message',
MessageStructure: 'string',
PhoneNumber: 'Test number'
};
sns.publish(params, function (err, data) {
if (err) console.log("error-> " + err + "-" + number + "-" + JSON.stringify(params)); // an error occurred
else console.log("SMS to " + number + " successfull " + JSON.stringify(data)); // successful response
});
你有这样的输出
{"ResponseMetadata":"RequestId":"2bb91f08-3ef0-5e55-8219-4645645"},"MessageId":"943a1224-042c-576c-936e-sfsdf34535"} {"Message":"hai manaf...r u happy","MessageStructure":"string","PhoneNumber":"+9197********"}.
但我没有收到短信到我的DND激活的电话号码。我还在研究这个问题。
答案 3 :(得分:0)
你的aws-sdk版本是什么? 尝试更新最新版本。
答案 4 :(得分:0)
将您的邮件类型设置为“交易”即可