Ik speel rond met het bouwen van een eenvoudige Facebook Messenger chatbot en ik heb problemen met het verzenden van berichten in de juiste volgorde.
In het bovenstaande voorbeeld, zou het Hallo!, 1, 2, 3 zijn afgedrukt in orde is. Ik ben momenteel naar aanleiding van de Facebook-docs vonden hier om dit eenvoudige sms-functie uit te voeren. Ik heb mijn Express node.js server code hieronder opgenomen:
Het definiëren van de sendTextMessage()functie:
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.)
}
});
}
Te gebruiken om een reactie te sturen naar:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
Ik heb zelfs geprobeerd de implementatie van een eenvoudige rij dat de berichten in de wachtrij en stuurt alleen een boodschap op een moment na elke request's succes callback. Dit maakt me vermoed dat ik niet de interactie met de Messenger API correct.
Heeft iemand ontmoet deze kwestie? Hoe kan ik berichten te sturen in de juiste volgorde? Bedankt!
BEWERK
Omdat ik implementeerde een eenvoudige wachtrij, maar nog altijd problemen ondervindt, ik ben met inbegrip van de code voor mijn eenvoudige wachtrij-systeem hier.
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 */);
BIJWERKEN
Deze bug werd gemeld aan Facebook, maar het klinkt alsof ze niet van plan om het te repareren . Lees de ticket draad op Facebook's post hier voor meer informatie over wat ze zeggen er gaande is. (Dank u aan Louise voor het krijgen van Facebook de aandacht op deze)














