Basit bir Facebook Messenger chatbot bina etrafında oynuyorum ve sorun sırayla mesaj gönderme yaşıyorum.
Yukarıdaki örnekte, sırayla Hello!, 1, 2, 3 basılmış olması gerekirdi. Şu anda bulunan Facebook docs takip ediyorum burada bu basit metin mesajı işlevi uygulamak için. Aşağıda benim Ekspres node.js sunucu kodu yer verdik:
Tanımlanması sendTextMessage()fonksiyonunu:
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.)
}
});
}
Bir yanıt göndermek için kullanma:
sendTextMessage(user, Hello!);
sendTextMessage(user, 1);
sendTextMessage(user, 2);
sendTextMessage(user, 3);
Hatta basit bir kuyruk uygulanması denenmiş iletileri sıralar ve sadece her sonra bir defada bir mesaj gönderir requestbaşarısı callback'inde. Bu bana doğru Messenger API ile etkileşim değilim şüpheli yapıyor.
Herkes bu sorunu karşılaştı? Nasıl mesajlar sırayla göndermeye alabilirim? Teşekkürler!
DÜZENLE
Ben basit bir kuyruk etmediniz, ancak burada benim basit kuyruk sistemi için kodu dahil ediyorum, bu sorun yaşıyor çünkü.
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 */);
GÜNCELLEŞTİRME
Bu böcek Facebook'a bildirildi ancak gibi geliyor düzeltmek için gidiş değildir . Facebook'un yayında bilet iplik okuyunuz burada onlar oluyor demek dair ayrıntılı bilgi için. (Bu konuda Facebook'un dikkatini çekmenin için Louise teşekkür ederiz)














