2017-05-08 139 views
3

我在写一个使用AWS SNS服务发送短信的程序。我是这个主题的新手。所以我试过了其中的一个在线代码。使用aws发送混淆短信[已更新:短信发送迟了]

和代码如下。

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 
}); 

在这里,我从我的AWS控制台充满了整个数据,如RegionaccessKeysecretAccessKey,我mobile numberSubjectmessage。当我尝试运行这个后填充这个,我得到下面的响应。

{ ResponseMetadata: { RequestId: '30d54840-1aa8-5ad4-8de7-19cad1ed033f' }, 
    MessageId: '7cc1d99e-b835-5015-b84e-88147370a9fe' } 

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

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

enter image description here

在这里,我没有使用任何topic,我需要单独发送的消息,有要发送的大宗邮件。

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

感谢

更新

感谢您的快速测试balent

这件事情正在起作用,最悲哀的部分是消息在9个小时之后交付。我在印度,我们的代码开始像这样+91XXXXXXXXXX,我也这样做。但是,当通过控制台(短信截图)尝试时,该消息是即时的,有人请告诉我们如何解决这个问题。即即时发送短信。

+1

刚刚试过这段代码,短信发送到我的手机。也许你拼错了电话号码?你也可以用“+”来试试吗?无论如何应该工作。 – balent

+0

伙计。你解决了这个问题吗?我也一样。你能帮我解决这个问题 –

回答

2

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

sns.setSMSAttributes( { attributes : { DefaultSMSType : "Transactional" } }, function(error){ if(error){ console.log(error); } } );

Explanation-有两种一种是促销这是默认的,而不是时间关键的,一个是事务性的,用于OTP时间是至关重要的。我想在使用任何一个选项时都会有价格差异。在阅读你的答案之后,我尝试了你的方式,并且延迟了短信,所以我使用这里给出的api更改为事务性的,并给出了即时消息。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#publish-property

+0

这是一个真正有效的解决方案吗?我试过这个方法,但它说setSMSAttributes不是一个函数。 – supergentle

+0

最后我检查了它的工作。今天再次检查并确认。 –

+0

谢谢。您认为我需要向AWS sdk提供特定版本以利用此功能吗? – supergentle