从 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 呼叫中的区域是否设置为与我的发起号码相同的区域后,我解决了这个问题。
希望能帮助其他人摆脱同样的头痛。
我正在编写一个简单的程序,使用 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 呼叫中的区域是否设置为与我的发起号码相同的区域后,我解决了这个问题。
希望能帮助其他人摆脱同样的头痛。