2017-05-08 101 views
0

當我將一系列消息發佈到Messenger API(https://graph.facebook.com/v2.6/me/messages?access_token=MYTOKEN)時,收件人不會按相同順序收到消息。例如(在僞代碼):Facebook Messenger API消息序列

sendMessage('1'); sendMessage('2'); sendMessage('3');

接收者有時得到[1,2,3],但還可以得到[3,1,2],[2,1,3]等

+0

是什麼的sendMessage辦? – WizKid

+0

@WizKid sendMessage發送到Facebook /消息。例如:function sendMessage(messageData)let qs =「?access_token =」+ PAGE_ACCESS_TOKEN; fetch('https://graph.facebook.com/v2.6/me/messages'+ qs, {method:'POST', body:JSON.stringify(messageData), headers:{ 'Accept 「: '應用/ JSON', '內容 - 類型': '應用/ JSON' } }) 。然後(函數(RES){ 返回res.json();} ) }' –

+0

所以當然這是行不通的。在發送消息之前發送消息2。在發送消息2之前等待,直到發送消息1 – WizKid

回答

0

我確實找到了適用於我的解決方案,但可能無法擴展。希望它能幫助你。

var sendMessagesToUser = function(messages,sessionId)let session = sessionsManager.getSessionBySessionId(sessionId); messages.forEach(函數(消息,指數){

//Delay or queue messages so we'll keep order in place 
setTimeout(function() { 
    console.log(message) 
    switch (message.type) { 
    case sessionsManager.MESSAGE_TYPES.CUSTOME: 
     utility.sendCustomMessage(session.userId, message.payload.facebook); 
     break; 
    case sessionsManager.MESSAGE_TYPES.TEXT: 
     utility.sendTextMessage(session.userId, message.speech || message.text); 
     break; 
    case sessionsManager.MESSAGE_TYPES.CARD: 
     utility.sendGenericMessage(session.userId, message.title, message.subtitle, message.imageUrl, message.buttons); 
     break; 
    case sessionsManager.MESSAGE_TYPES.QUICK_REPLY: 
     utility.sendQuickReply(session.userId, message.title, message.replies); 
     break; 
    } 
}, 1000 * index); 

}) };`