2017-05-08 68 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