Mă joc în jurul cu construirea unui simplu chatbot Facebook Messenger și am probleme la trimiterea de mesaje în ordine.
In exemplul de mai sus, ar fi imprimat Bună ziua!, 1, 2, 3 , în ordine. Eu sunt în prezent în urma docs Facebook găsit aici pentru a pune în aplicare această funcție simplă mesaj de tip text. Am inclus codul meu server de Express Node.JS de mai jos:
Definirea sendTextMessage()funcției:
var request = require(request);
function sendTextMessage(user, text) {
messageData = {
text: text
};
request({
url: https://graph.facebook.com/v2.6/me/messages,
qs: {access_token: PAGE_ACCESS_TOKEN},
method: POST,
json: {
recipient: {id: user},
message: messageData
}
}, function(error, response, body) {
if (error) {
console.log(Error sending message: , error);
} else if (response.body.error) {
console.log(Error: , response.body.error);
} else {
console.log(Message successfully send.)
}
});
}
Folosindu-l pentru a trimite un răspuns:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
Am încercat chiar punerea în aplicare o coadă simplă , care cozile de mesaje și doar trimite un mesaj la un moment dat după fiecare requeste de apel invers de succes. Acest lucru mă face să bănuiesc că nu sunt corect interactiunea cu API - ul Messenger.
Are cineva întâlnit această problemă? Cum pot obține pentru a trimite mesaje în ordine? Mulțumiri!
EDITAȚI | ×
Pentru că am pus în aplicare o coadă simplă, dar încă se confruntă cu această problemă, eu sunt inclusiv codul pentru sistemul meu coadă simplu aici.
var queue = [];
var queueProcessing = false;
function queueRequest(request) {
queue.push(request);
if (queueProcessing) {
return;
}
queueProcessing = true;
processQueue();
}
function processQueue() {
if (queue.length == 0) {
queueProcessing = false;
return;
}
var currentRequest = queue.shift();
request(currentRequest, function(error, response, body) {
if (error || response.body.error) {
console.log(Error sending messages!);
}
processQueue();
});
}
queueRequest(/* Message 1 */);
queueRequest(/* Message 2 */);
queueRequest(/* Message 3 */);
ACTUALIZAȚI
Acest „bug“ a fost raportat la Facebook , dar se pare că acestea nu sunt de gând să - l repare . Vă rugăm să citiți firul bilet pentru postarea Facebook aici pentru detalii despre ceea ce spun se întâmplă. (Vă mulțumesc pentru Louise pentru a obține atenția Facebook de pe acest)














