2016-04-19 5 views
5

मैं फेसबुक मैसेंजर एपीआई के साथ काम करना सीख रहा हूं। मैंने सफलतापूर्वक वेबहूक सेटअप किया है, मैंने एप्लिकेशन की सदस्यता ली है। लेकिन जब मैं अपने पेज पर संदेश भेजता हूं तो मुझे उसी संदेश के कई उदाहरण मिलते हैं जैसे विस्फोट।फेसबुक मेसेंजर वेबहुक लगातार संदेश भेज रहा है

मैं उन संदेशों को संग्रहीत कर रहा हूं जिन्हें मैं अपने एप्लिकेशन से वेबहुक पर प्राप्त करता हूं।

मेरे डेटाबेस का एक दृश्य नीचे स्क्रीनशॉट जैसा दिखता है।

http://prntscr.com/au3emz

मैं यह हो सकता है क्योंकि अभी भी संदेश अपठित है अनुमान लगा रहा हूँ? बस एक जंगली अनुमान किसी और को निश्चित रूप से पता हो सकता है। मैंने फेसबुक कार्यालय (नोड) का सटीक उदाहरण आजमाया और यह भी वहां हो रहा है।

धन्यवाद।

+1

मुझे भी इस समस्या का सामना करना पड़ा है। जब मैं उपयोगकर्ता बटन संदेश भेजता हूं, तो मेरा वेब हुक बटन संदेश भेजना शुरू करता है –

+0

फेसबुक चैट बॉट के लिए क्लाउडियाजेएस और एडब्ल्यूएस लैम्ब्डा का उपयोग करके इस समस्या को लेकर। टाइमआउट बढ़ाने के लिए कहा गया था, इसे 3 मिनट तक जैक किया गया और यह अभी भी होता है। – SMT

उत्तर

0

समाधान

मैं इन संदेशों को रोकने के लिए अपने आवेदन करने के लिए फिर से एक सदस्यता अनुरोध भेजा है।

इसलिए अनिवार्य रूप से मैंने जो अनुभव किया वह यह है कि प्राप्त संदेश प्राप्त करने के बाद वेबहूक फिर से सदस्यता लेना संदेश अगले संदेश तक और आगे प्राप्त नहीं करेगा।

हालांकि यह समाधान "ऐसा क्यों होता है" का मूल है? अभी तक ज्ञात नहीं है। अगर कोई योगदान दे सकता है तो खुशी होगी।

धन्यवाद।

+0

मुझे एहसास है कि यह एक पुरानी पोस्ट है लेकिन आपको स्पष्ट रूप से फेसबुक पर जितनी जल्दी हो सके '200 ओके 'प्रतिक्रिया भेजनी होगी अन्यथा यह बाद में प्रतिक्रियाओं में काफी देरी होगी। मूल रूप से चीजें बेकार हो जाती हैं यदि आप नहीं करते हैं। –

1

मुझे अपने परीक्षण आवेदन के साथ एक ही समस्या थी। मैं अभी भी मैसेंजर एपीआई के लिए नया हूं और मेरा समाधान बेवकूफ़ हो सकता है।

if (text) { 
    sendTextMessage(sender, 'Response 1'); 
} else { 
    queryDB(
    sendTextMessage(sender, 'Response 2'); 
) 
} 
res.sendStatus(200); 

कौन सा रिस्पांस 1 हमेशा के लिए भेजने के रखा:

प्रारंभ में, कोड की तरह था। सही कोड है:

if (text) { 
    sendTextMessage(sender, 'Response 1'); 
    res.sendStatus(200); 
} else { 
    queryDB(
    sendTextMessage(sender, 'Response 2'); 
    res.sendStatus(200); 
) 
} 

आपको संदेश भेजने के बाद हमेशा स्टेटस भेजना होगा।

2

यह अक्सर होता है यदि आप echo संदेश callback event की सदस्यता लेते हैं।

दस्तावेज़ीकरण से;

यह कॉलबैक तब होगा जब आपके पृष्ठ द्वारा एक संदेश भेजा गया हो।

इसका क्या अर्थ है कि आप अपने बॉट भेजते हुए किसी भी संदेश की एक प्रति वापस प्राप्त करेंगे। आपके कोड से, यह अनंत लूप का एक रूप बन जाएगा; आप Response 1 प्राप्त करना जारी रखेंगे।

text के मूल्य का निरीक्षण करके आप आसानी से इसकी पुष्टि कर सकते हैं; आपको यह भी मिलेगा Response 1 और पूरे पेलोड का निरीक्षण करने पर इसमें क्षेत्र "is_echo":true होगा।

समाधान: संपादित अपने पृष्ठ सदस्यता को बाहर करने के message_echoes

enter image description here

1

मैं पता लगाने कि फेसबुक मंगलाचरण और 200 statusCode मेरी कोड 2 सेकंड इंतजार कर रहा था के साथ मेरी प्रतिक्रिया betwen, मेरे कोड syncronous है, इस प्रकार , मेरा कुल कोड 200 कोड 2 सेकंड के बाद प्रतिक्रिया देता है ..
कई जांच मेरे लिए परिणाम देती हैं कि अगर मैं एक दूसरे फेसबुक में फेसबुक पर 200 स्टेटस कोड नहीं भेजता तो वेबहुक पर संदेश भेजता है। मेरे लिए आंदोलन आने वाले संदेश का विश्लेषण करता था और टाइमस्टैम्प कुंजी (ए) प्राप्त करता था, फिर मुझे एक डेटाबेस (बी) से टाइमस्टैम्प मिलता है। ए == बी की तुलना करें .. यदि सत्य है, तो मैं नहीं सोचता और समाप्त करता हूं। मेरा वेबहुक प्रसंस्करण, यदि गलत है तो डेटाबेस में नया टाइमस्टैम्प (ए) लिखें और वेबहुक प्रोसेसिंग के साथ जारी रखें।

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