使用 aws 发送短信时感到困惑 [更新:短信发送太晚了]

use*_*094 4 amazon-web-services node.js amazon-sns

我正在编写一个使用 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
});
Run Code Online (Sandbox Code Playgroud)

在这里,我填充了来自 AWS 控制台的全部数据,例如Region, accessKeyand secretAccessKey, my mobile number, Subjectand message。当我尝试运行这个时,填写这个后,我得到以下响应。

{ ResponseMetadata: { RequestId: '30d54840-1aa8-5ad4-8de7-19cad1ed033f' },
  MessageId: '7cc1d99e-b835-5015-b84e-88147370a9fe' }
Run Code Online (Sandbox Code Playgroud)

但是没有短信发送到我的手机。

我认为该服务在我的国家/地区不可用,然后尝试从如下所示的 SMS 控制台发送消息。我在手机上收到一条短信。

在此处输入图片说明

在这里我没有使用任何topic,我需要单独发送消息,没有要发送的批量消息。

请指导我哪里出错了,我该如何解决这个问题。

谢谢

更新

感谢您的快速测试balent

这东西在起作用,最可悲的是消息在 9 小时后传递。我在印度,我们的代码开始是这样的+91XXXXXXXXXX,我也做了同样的事情。但是当通过控制台尝试时(短信截图),消息是即时的,有人可以请教一下如何解决这个问题。即要立即发送的短信。

小智 5

感谢您的问题和更新的答案,为了减少在印度的交付时间,将属性 DefaultSMSType 设置为“交易”立即交付。

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