facebook messenger bot erreur d'encodage

voix
1

J'ai bot message écho écrit exemple en utilisant api messenger facebook et actions wit.ai.

Mon message de la page facebook est reçue et la fonction d'action appropriée définie à l'aide est également obtenir appelé de l'esprit api. Cependant tout en renvoyant la réponse, je reçois une erreur followin comme -

Oops! Une erreur est survenue pendant l'envoi de la réponse à: Erreur: (# 100) un message Param [texte] doit être une chaîne codée UTF-8 à fetch.then.then.json (/app/index.js:106:13) au processus ._tickCallback (interne / process / next_tick.js: 103: 7)

Voici la fonction qui est utilisée pour renvoyer la réponse -

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

Je l'ai copié cette fonction à partir du fichier messenger.js de la documentation depuis que je suis en train d'essayer le POC. J'ai vérifié les valeurs de texte et id dans cette fonction et vérifié à l'aide des déclarations CONSOLE.LOG et ceux-ci sont bien venir.

Certains experts peuvent me aider à résoudre cette erreur?

Note - J'ai essayé coder le texte à l'aide text.toString ( UTF8); mais il retourne la chaîne de codage [objet objet] et thats la réponse que je reçois de bot. si cela ne fonctionne pas.

Créé 16/08/2016 à 13:42
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Obtenez le dernier code de nœud d' esprit , il y a un changement dans l' utilisation de l' identifiant facebook,

selon Facebook:

Le mar 17 mai format des codes d'utilisateur et la page délivrés par webhooks changera d'un int à une chaîne pour mieux défaut de support encodeur JSON dans js (qui découpe à long ints). S'il vous plaît assurez-vous que votre application fonctionne avec ids de chaîne de retour webhooks ainsi qu'avec ints.

Pourtant , vous obtenez problème avec l'api essayer d'ajouter la if(event.message && !event.message.is_echo)condition comme indiqué dans le code ci - dessous.

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

Référence:
aucun bug utilisateur correspondant
correspondant à aucune solution utilisateur

Créé 28/08/2016 à 13:52
source utilisateur

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