Estoy jugando con la construcción de un simple conversacional Facebook Messenger y estoy teniendo problemas para enviar mensajes en secuencia.
En el ejemplo anterior, se debe tener impreso ¡Hola!, 1, 2, 3 en orden. Actualmente estoy siguiendo la documentación de Facebook se encuentran aquí para implementar esta función de mensajes de texto simple. He incluido mi código Server Express Node.JS a continuación:
La definición de la sendTextMessage()función:
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.)
}
});
}
Usarlo para enviar una respuesta:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
Incluso he intentado implementar una cola sencilla que pone en cola los mensajes y sólo envía un mensaje a la vez después de cada request's de devolución de llamada de éxito. Esto me hace sospechar que no estoy interactuando con la API de Messenger correctamente.
Alguien ha encontrado este problema? ¿Cómo puedo obtener mensajes para enviar en la secuencia? ¡Gracias!
EDITAR
Debido a que he implementado una cola simple pero sigue experimentando este problema, estoy incluyendo el código de mi sistema simple cola de aquí.
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 */);
ACTUALIZAR
Este error se informó a Facebook pero suena como que no van a solucionarlo . Por favor, lea el hilo de entradas en el post de Facebook aquí para más detalles sobre lo que dicen que está pasando. (¡Gracias a Louise para conseguir la atención de Facebook en esto)














