2017-04-25 18 views
12

की डिलीवरी स्थिति प्राप्त करना मैं नोड एसडीके के माध्यम से एडब्ल्यूएस से एसएमएस भेज रहा हूं। एसएमएस अच्छी तरह से बाहर जा रहा है और मैं डिलीवरी सूचनाएं प्राप्त करने की कोशिश कर रहा हूं। जाहिरा तौर पर यह है कि आसान नहीं है और एक सेटअप एसएनएस गया है Cloudwatch को लॉग भेजने के लिए और CloudWatch पार्स करने के लिए वितरण की जानकारी MessageId को देख पाने के लिए: लॉग मैं cloudwatch में लॉग देख https://stackoverflow.com/a/40327061/2054629एडब्ल्यूएस एसएमएस

अगर मैं एसएनएस वेब इंटरफेस के माध्यम एसएमएस भेजें, , लेकिन जब मैं उन्हें नोड एसडीके के माध्यम से भेजता हूं। मुझे नोड से भेजने से पहले चीजों को कैसे सेट अप करना है, इस बारे में जानकारी नहीं मिली।

आदर्श रूप में, मैं की तरह कुछ हासिल करना चाहते हैं:

const sendSMS = async (message, number) => { 
    // send the SMS 
    // wait to get delivery info 
    // resolve with delivery info, or reject if failed 
} 

वर्तमान में मेरे पास है:

import AWS from 'aws-sdk'; 

AWS.config.update({ 
    accessKeyId: accessKey, 
    secretAccessKey: secretKey, 
    region: 'us-east-1', 
}); 

const sns = new AWS.SNS(); 

const sendSMS = async (message, number) => { 
    return await new Promise((resolve, reject) => { 
    sns.publish({ 
     Message: message, 
     MessageStructure: 'string', 
     PhoneNumber: number, 
    }, (err, res) => { 
     if (err) { return reject(err); } 
     resolve(res); 
    }); 
    }); 
} 

जो केवल एडब्ल्यूएस करने के लिए एक एसएमएस अनुरोध भेजने और

{ 
    ResponseMetadata: { RequestId: '7e0999a3-xxxx-xxxx-xxxx-xxxxxxxxxxxx' }, 
    MessageId: 'f7f21871-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 
} 
की तरह कुछ के साथ हल

मुझे यकीन नहीं है कि किसी को लॉग प्राप्त करने में सक्षम होने के लिए एसएनएस एप्लिकेशन सेट करना है या नहीं, और मैं नहीं चाहता चीजों को सरल रखने के लिए।

उत्तर

1

आपका कोड आयात विवरण (ES5/6 समर्थन की कमी) को बदलकर नोडजेस v6 के साथ ठीक काम करता है। क्लाउडवॉच पर लॉगिंग सक्षम करने के बाद, प्रत्येक एसएमएस (वेब ​​इंटरफ़ेस और इस कोड के माध्यम से) क्लाउडवॉच लॉग में लॉग स्टीम बनाता है। मुझे लगता है कि आपको एडब्ल्यूएस एसडीके को पुनर्स्थापित करना चाहिए या एसडीके को सही तरीके से काम करने के लिए ES5/6 का उपयोग करना चाहिए।

दूसरे प्रश्न के लिए, यदि संदेश डिलीवर नहीं किया गया था, तो आपको एक त्रुटि मिलेगा:

{ ResponseMetadata: { RequestId: 'e31feda6-669c-5b13-XXX-bc25b07877b5' }, 
    MessageId: '53555115-6acb-5684-XXXX-0096bc2f6a22' } 
+0

मुझे नहीं लगता कि ईएस 6 एक मुद्दा है। मैं नोड एसडीके से एसएमएस के अनुरूप क्लाउडवॉच लॉग कैसे प्राप्त कर सकता हूं? – Guig

0

:

(err, res) => { 
     if (err) { return reject(err); } 
     resolve(res); 
    }); 

अगर संदेश सफलतापूर्वक भेजा गया, आप की तरह एक प्रतिक्रिया मिल हो सकता है कि आपने पहले ही यह किया हो लेकिन एसएमएस डिलीवरी के लिए क्लाउडवॉच लॉग कॉन्फ़िगर करने के लिए, आपको एसएमएस वरीयताओं को कॉन्फ़िगर करना होगा। इसके लिए आपको क्लाउडवॉच लॉग एक्सेस करने की अनुमति देने के लिए आईएएम भूमिका बनाने की आवश्यकता है। एडब्ल्यूएस कंसोल के माध्यम से ऐसा करना बहुत आसान है। http://docs.aws.amazon.com/sns/latest/dg/sms_preferences.html

पर दिए गए कदम आप भी नियंत्रित कर सकते हैं कि सफल वितरण का प्रतिशत किस प्रकार + असफल एसएमएस लॉग इन हैं यदि आप चाहते हैं। एक बार ऐसा करने के बाद, आपको क्लाउडवॉच लॉग देखना शुरू करना चाहिए जिस तरह से आपने एसएमएस भेजा है।

मैं इसे एक टिप्पणी के रूप में जोड़ना चाहता था लेकिन मेरे पास पर्याप्त प्रतिनिधि नहीं है। अगर यह काम नहीं करता है तो मैं यह जवाब हटा दूंगा।

संबंधित मुद्दे