Я играл с созданием простой Facebook Messenger Chatbot и у меня возникают проблемы с отправкой сообщений в последовательности.
В приведенном выше примере, он должен быть напечатан «Hello!», «1», «2», «3» в порядке. Я в настоящее время следуя документацию Facebook найденной здесь , чтобы реализовать эту простую функцию текстового сообщения. Я включил мой код сервера Экспресс Node.js ниже:
Определение sendTextMessage()функции:
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.)
}
});
}
С его помощью, чтобы отправить ответ:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
Я даже пытался реализации простой очереди , что очередей сообщений и посылает только одно сообщение в то время , после каждого requestобратного вызова успеха «s. Это заставляет меня подозревать , что я не взаимодействующий с API Messenger , правильно.
Кто-нибудь сталкивался с такой вопрос? Как я могу получить сообщения для отправки в последовательности? Благодаря!
РЕДАКТИРОВАТЬ
Потому что я реализовал простой очереди, но по-прежнему сталкиваются с этой проблемой, я в том числе код для моей простой системы очередей здесь.
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 */);
ОБНОВИТЬ
Эта «ошибка» , как сообщается , Facebook , но это звучит как они не собираются , чтобы исправить это . Пожалуйста , прочитайте нить билет на пост Facebook, здесь для получения подробной информации о том , что они говорят , что происходит. (Спасибо Луизы для привлечения внимания Facebook на это)














