2017-08-07 3 views
3

Ich benutze die Facebook Messenger API, um einen sehr einfachen Chatbot zu erstellen. Ich möchte in der Lage sein, eine Reihe von Nachrichten in einzelnen Sprechblasen zu senden. Allerdings, wenn ich die API mehrmals in der gleichen Funktion aufrufen. Ich kann nicht sicher sein, welche Nachricht zuerst angezeigt wird. Wie kann ich die async/wait-Funktionalität verwenden, um die Nachrichten korrekt zu ordnen?Facebook Messenger API synchron aufrufen

Funktionsaufruf zunächst:

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

Helfer:

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

Antwort

3

Wie wäre es damit:

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

bitte eine Erklärung für Ihre Downvote hinzufügen, ich bin glücklich, meine Antwort zu verbessern. sollte aber in Ordnung sein. – luschn