从AWS SNS获得成功响应但未发送SMS

时间:2016-09-20 14:49:58

标签: node.js amazon-web-services amazon-sns

我正在编写一个简单的程序,使用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' }

然而,短信未送达。

可能是什么问题?

5 个答案:

答案 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)

将您的邮件类型设置为“交易”即可