【问题标题】:Facebook Messenger API message sequenceFacebook Messenger API 消息序列
【发布时间】:2017-10-06 16:32:12
【问题描述】:

当我向 messenger API (https://graph.facebook.com/v2.6/me/messages?access_token=MYTOKEN) 发布一系列消息时,收件人不会以相同的顺序接收这些消息。例如(在伪代码中):

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

收件人有时会得到 [1,2,3],但也可以得到 [3,1,2]、[2,1,3] 等。

【问题讨论】:

  • sendMessage 是做什么的?
  • @WizKid sendMessage 发布到 facebook/messages。例如: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': 'application/json', 'Content-Type': 'application/json' } }) .then(function(res) { return res.json(); }) }
  • 所以当然不行。您在发送消息 1 之前发送消息 2。等到消息 1 发送后,再发送消息 2
  • 如果我按顺序发送消息,它们偶尔会不按顺序出现在信使端。 @WizKid
  • 当然可以。您正在执行 3 个异步请求。您需要等待并发送第二条消息,直到发送第一条消息

标签: javascript facebook


【解决方案1】:

我确实找到了适合我但可能无法扩展的解决方案。希望对您有所帮助。

var sendMessagesToUser = function (messages, sessionId) {
  let session = sessionsManager.getSessionBySessionId(sessionId);
  messages.forEach(function (message, index) {

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多