2017-05-08 8 views
0

メッセンジャー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/messagesに投稿します。次に例を示します。 'function sendMessage(messageData){ qs ="?access_token = "+ PAGE_ACCESS_TOKEN; fetch( 'https://graph.facebook.com/v2.6/me/messages' + qs、 {メソッド: 'POST'、 本文:JSON.stringify(messageData)、 ヘッダー:{ ' 「: 'アプリケーション/ JSON' 'のContent-Type': 'アプリケーション/ JSON' }}) .then(関数(RES){ 戻りres.json();そう }) } ' –

+0

もちろんそれは動作しません。メッセージ1が送信される前にメッセージ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); 

}) }; `

関連する問題