Kevin Alwell
Kevin Alwell

Reputation: 131

Facebook Messenger API message sequence

When I post a series of messages to the messenger API (https://graph.facebook.com/v2.6/me/messages?access_token=MYTOKEN), the messages are not received by the recipient in the same order. For example (in pseudocode):

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

The recipient sometimes gets [1,2,3] but can also get [3,1,2], [2,1,3], etc.

Upvotes: 0

Views: 815

Answers (1)

Kevin Alwell
Kevin Alwell

Reputation: 131

I did find a solution which works for me but may not be scalable. Hopefully, it helps you.

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

Upvotes: 0

Related Questions