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]等
答
我确实找到了适用于我的解决方案,但可能无法扩展。希望它能帮助你。
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);
}) };`
是什么的sendMessage办? – WizKid
@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();} ) }' –
所以当然这是行不通的。在发送消息之前发送消息2。在发送消息2之前等待,直到发送消息1 – WizKid