Je joue autour de la construction d'un simple Facebook Messenger chatbot et je vais avoir des problèmes pour envoyer des messages dans l'ordre.
Dans l'exemple ci - dessus, il aurait dû imprimer « Bonjour! », « 1 », « 2 », « 3 » dans l' ordre. Je suis actuellement en suivant les docs Facebook trouvés ici pour implémenter cette fonction simple message texte. J'ai inclus mon code serveur express Node.JS ci - dessous:
Définition de la sendTextMessage()fonction:
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.)
}
});
}
L'utiliser pour envoyer une réponse:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
J'ai même essayé la mise en œuvre d' une simple file d' attente que les files d' attente des messages et envoie un seul message à la fois après chaque requestcallback de succès de ». Ce qui me fait l' impression que je ne suis pas en interaction avec l'API Messenger correctement.
Quelqu'un at-il rencontré ce problème? Comment puis-je obtenir des messages à envoyer dans l'ordre? Merci!
MODIFIER
Parce que je mis en œuvre une file d'attente simple mais connaît encore ce problème, je compris le code de mon système simple de file d'attente ici.
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 */);
METTRE À JOUR
Ce « bug » a été signalé à Facebook , mais on dirait qu'ils ne vont pas réparer . S'il vous plaît lire le fil de billets sur le post de Facebook ici pour plus de détails sur ce qu'ils disent qui se passe. (Merci à Louise pour attirer l'attention de Facebook à ce sujet )














