Hraju si s budování jednoduchého Facebook Messenger Chatbot a mám potíže s odesíláním zpráv v pořadí.
Ve výše uvedeném příkladu, měl by mít tištěný „Dobrý den!“, „1“, „2“, „3“ v uvedeném pořadí. Jsem v současné době v návaznosti na dokumenty Facebook nalezené zde provádět tuto jednoduchou funkci textových zpráv. Já jsem součástí mého Express Node.js serveru níže uvedený kód:
Definování sendTextMessage()funkce:
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.)
}
});
}
Používat to, aby odeslat odpověď:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
Dokonce jsem se snažil se provádí jednoduchou fronty , který fronty zpráv a odesílá pouze jednu zprávu v době po každém requestÚspěch zpětné volání. To je, že mě podezření, že nejsem interakci s API Messenger správně.
Má někdo narazil tento problém vyřešit? Jak mohu získat zprávy odesílat v pořadí? Dík!
UPRAVIT
Vzhledem k tomu, jsem implementoval jednoduchý frontu, ale stále dochází k tomuto problému, jsem včetně kód pro můj jednoduchý systém fronty zde.
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 */);
AKTUALIZACE
Tento „chyba“ byla hlášena na Facebooku, ale to vypadá, že se nebude to opravit . Přečtěte si vlákno vstupenek na tyči Facebooku zde podrobnosti o tom, co říkají, že se děje. (Děkuji Louise k získání služby Facebook pozornost na to)














