以同步方式调用Facebook Messenger API

问题描述:

我正在使用Facebook Messenger API创建一个非常基本的聊天机器人。我希望能够在单个泡泡中发送一系列消息。但是,当我在相同的函数中多次调用API时。我无法确定首先显示哪条消息。我如何使用异步/等待功能来正确排列消息?以同步方式调用Facebook Messenger API

函数调用开始:

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

助手:

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

如何:

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

请补充说明你downvote,我很高兴来提高我的答案。应该没问题。 – luschn