Jeg spiller rundt med å bygge en enkel Facebook Messenger chatbot og jeg har problemer med å sende meldinger i sekvens.
I eksempelet ovenfor, bør det ha trykt Hei!, 1, 2, 3 i orden. Jeg er for tiden å følge Facebook-docs funnet her for å gjennomføre dette enkel tekstmelding funksjon. Jeg har tatt mitt Express node.js serveren koden under:
Definere sendTextMessage()funksjon:
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.)
}
});
}
Bruke den til å sende et svar:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
Jeg prøvde å gjennomføre en enkel kø som køer meldinger og bare sender en melding om gangen etter hver requestsuksess tilbakeringing. Dette gjør meg mistenker at jeg ikke er i samspill med Messenger API riktig.
Har noen støtt på dette problemet? Hvordan kan jeg få meldinger til å sende i rekkefølge? Takk!
REDIGERE
Fordi jeg implementert en enkel kø, men likevel opplever dette problemet, jeg er inkludert koden for min enkle køsystem her.
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 */);
OPPDATER
Denne bug ble rapportert til Facebook, men det høres ut som de ikke kommer til å fikse det . Vennligst les billetten tråden på Facebook innlegg her for mer informasjon om hva de sier som skjer. (Takk til Louise for å få Facebook oppmerksomhet på dette)














