Facebook Messenger API消息序列

问题描述:

当我将一系列消息发布到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

我确实找到了适用于我的解决方案,但可能无法扩展。希望它能帮助你。

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

}) };`