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

Getting success response from AWS SNS but SMS not delivered

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

但是,短信没有送达。

可能是什么问题?

我们需要指定更多的 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 的 phone 号码的短信。我还在研究这个问题。

您的 aws-sdk 是什么版本? 尝试更新最新的。

对于新的请求,消息在 24 日之后开始传递。指标仪表板显示一天过时的数据。在仪表板上它正确地显示所有 SMS 交付在 9 月 21 日都失败了,尽管来自 API 的积极响应。这让我重新考虑使用 SNS 发送短信的决定。

感谢所有帮助过的人。

为 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'}})

默认情况下,SMSType 将为促销,因为此消息不会在 DND 号码上继续。

参考:here

将您的消息类型设置为 "Transactional" 它会起作用

我在使用 SNS SMS 时遇到了类似的问题,我收到了来自 AWS 的 message_id,但没有收到发送的短信。

检查我的 api 呼叫中的区域是否设置为与我的发起号码相同的区域后,我解决了这个问题。

希望能帮助其他人摆脱同样的头痛。