फेसबुक दूत बॉट एन्कोडिंग त्रुटि

वोट
1

मैं फेसबुक दूत एपीआई और wit.ai कार्यों का उपयोग नमूना गूंज संदेश बॉट लिखा है।

फेसबुक पेज से मेरा संदेश प्राप्त होता है और उचित कार्रवाई समारोह बुद्धि एपीआई भी कहा जाता रहा है का उपयोग कर परिभाषित किया। हालांकि, जबकि प्रतिसाद वापस लौटा, मैं के रूप में followin त्रुटि हो रही है -

ऊप्स! त्रुटि:: (# 100) परम संदेश [पाठ] प्रक्रिया पर fetch.then.then.json (/app/index.js:106:13) में UTF-8 एन्कोडेड स्ट्रिंग होना चाहिए के जवाब अग्रेषित करते समय कोई त्रुटि हुई ._tickCallback (आंतरिक / प्रक्रिया / next_tick.js: 103: 7)

यहाँ समारोह जो प्रतिक्रिया वापस जाने के लिए प्रयोग किया जाता है -

const fbMessage = (id, text) => {  
  const body = JSON.stringify({
    recipient: { id },
    message: { text },
  });
  const qs = 'access_token=' + encodeURIComponent(FB_PAGE_ACCESS_TOKEN);
  return fetch('https://graph.facebook.com/v2.6/me/messages?' + qs, {
    method: 'POST',
    headers: {'Content-Type': 'application/json; charset=UTF-8'},
    body
  })
  .then(rsp => rsp.json())
  .then(json => {
    if (json.error && json.error.message) {
      throw new Error(json.error.message);`enter code here`
    }   
    return json;
  });
};

मैं के बाद से मैं सिर्फ POC कोशिश कर रहा हूँ प्रलेखन से messenger.js फ़ाइल से इस समारोह की नकल की है। मैं पाठ और इस समारोह में आईडी के लिए मूल्यों की जाँच की और console.log बयानों का उपयोग कर सत्यापित और उन ठीक से आ रहे हैं।

कुछ विशेषज्ञों ने मुझे इस त्रुटि को हल करने में मदद कर सकते हैं?

नोट - मैं text.toString ( UTF8) का उपयोग पाठ एन्कोडिंग की कोशिश की, लेकिन यह [वस्तु वस्तु] के रूप में एन्कोडिंग स्ट्रिंग वापस आती है और प्रतिक्रिया मैं बॉट से मिलता है thats। इसलिए यह does not काम।

16/08/2016 को 13:42
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

से नवीनतम कोड प्राप्त करें नोड बुद्धि , वहाँ फेसबुक आईडी उपयोग में एक परिवर्तन है,

फेसबुक के अनुसार:

webhooks के माध्यम से वितरित एक पूर्णांक से js में बेहतर समर्थन डिफ़ॉल्ट json एनकोडर के लिए एक स्ट्रिंग (कि लंबे समय ints ट्रिम) के लिए बदल जाएगा उपयोगकर्ता और पेज आईडी की मंगल मई 17 प्रारूप पर। कृपया सुनिश्चित करें कि अपने अनुप्रयोग webhooks से और साथ ही ints के साथ वापस आ स्ट्रिंग आईडी के साथ काम करता है।

फिर भी आप api के साथ इस मुद्दे हो रही है जोड़ने की कोशिश if(event.message && !event.message.is_echo)के रूप में नीचे दिए गए कोड में दिखाया गया है हालत।

 // Message handler
 app.post('/webhook', (req, res) => {
   const data = req.body;
    if (data.object === 'page') {
      data.entry.forEach(entry => {
        entry.messaging.forEach(event => {
         if (event.message && !event.message.is_echo) {
            const sender = event.sender.id;
           const sessionId = findOrCreateSession(sender);
           const {text, attachments} = event.message;
           if (attachments) {
             fbMessage(sender, 'Sorry I can only process text messages for now.')
             .catch(console.error);
           } else if (text) {
             wit.runActions(
               sessionId, // the user's current session
               text, // the user's message
               sessions[sessionId].context // the user's current session state
             ).then((context) => {
               console.log('Waiting for next user messages');
               sessions[sessionId].context = context;
             })
             .catch((err) => {
               console.error('Oops! Got an error from Wit: ', err.stack || err);
             })
           }
         } else {
           console.log('received event', JSON.stringify(event));
         }
       });
     });
   }
   res.sendStatus(200);
 });

संदर्भ:
कोई उपयोगकर्ता मिलान बग
कोई उपयोगकर्ता ठीक मिलान

28/08/2016 को 13:52
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more