2017-08-07 2 views
3

J'utilise l'API Facebook Messenger pour créer un chatbot très basique. Je veux être capable d'envoyer une série de messages dans des bulles individuelles. Cependant, lorsque j'appelle l'API plusieurs fois dans la même fonction. Je ne peux pas être sûr du message qui s'affichera en premier. Comment puis-je utiliser la fonctionnalité async/await pour commander correctement les messages?Appel de l'API Facebook Messenger de manière synchrone

appel Fonction départ:

const getStartedProcess = async(formattedText,senderID) => { 
    const firstMessage = await sendTextMessage(senderID,"First message"); 
    const secondMessage = await sendTextMessage(senderID,"Second message"); 
    const thirdMessage = await sendTextMessage(senderID,"Third message"); 
} 

Helpers:

const sendTextMessage = async(recipientId, messageText) => { 
    //format message correctly 

    const sent = await callSendAPI(messageData); 
    return 0; 
} 

const callSendAPI = async(messageData) =>{ 
    request({ 
    uri: 'https://graph.facebook.com/v2.6/me/messages', 
    qs: { access_token: PAGE_ACCESS_TOKEN }, 
    method: 'POST', 
    json: messageData 

    }, function (error, response, body) { 
    //Proccess 
    return 0; 
    }); 
} 

Répondre

3

Que diriez-vous ceci:

const sendTextMessage = (recipientId, messageText) => { 
    return new Promise((resolve, reject) => { 
     //format message correctly 
     request({ 
      uri: 'https://graph.facebook.com/v2.6/me/messages', 
      qs: {access_token: PAGE_ACCESS_TOKEN}, 
      method: 'POST', 
      json: messageData 
     }, (error, response, body) => { 
      if (error) { 
       reject(error); 
      } else { 
       resolve(response); 
      } 
     }); 
    }) 
} 

const getStartedProcess = async(formattedText,senderID) => { 
    try { 
     const firstMessage = await sendTextMessage(senderID, "First message"); 
     const secondMessage = await sendTextMessage(senderID, "Second message"); 
     const thirdMessage = await sendTextMessage(senderID, "Third message"); 
    } catch (error) { 
     console.log(error); 
    } 
} 
+0

s'il vous plaît ajouter une explication pour votre downvote, je suis heureux d'améliorer ma réponse. devrait être bien cependant. – luschn