Ich schreibe die chatbot für Facebook mit PHP. Die Abfrage von Facebook wird die Verarbeitung durch die PHP-Datei. Und es ist simlar dieser Logik:
//got request from facebook
foreach ($data['entry'][0]['messaging'] as $message){
if (checkAnswer($message['sender']['id'], $command)){
$command = ;
$command = empty($message['postback']) ? $message['message']['text'] : $message['postback']['payload'];
$bot->send(new Message($message['sender']['id'], 'Thank you very much for participation!'));
}
}
function checkAnswer($id, $text){
//some logic;
}
Wenn zwei Nachrichten von verschiedenen Personen in einem Moment gesendet werden, beobachte ich nächste. Die Forderung der checkAnswer Funktion ist nicht in der Warteschlange (ich es verstanden durch den Ausführungsprozess mit der Protokollierung der Aufnahme zur Datei). Zum Beispiel kann es auf Wunsch 2 (Anfrage von facebook) aufgerufen werden, während Anfrage 1 nicht abgeschlossen ist. Und weil es (ich bin nicht 100% sicher ist), der Variable $ id ist nicht immer gleich, und ich habe die falsche Ausführung des Algorithmus ... Die Logging-Datei von Start und Stopp ist hier:
///////start////////////////////////
01:0:21 PM ID: 250 Text: 2
///////start////////////////////////
01:0:21 PM ID: 352 Text: 1
01:0:22 PM ID: 250 Text: 2
////////stop////////////////////////
01:0:22 PM ID: 352 Text: 1
////////stop////////////////////////
Ich arbeite mit apache2 und php7 und es ist meine erste Anwendung mit Webdiensten. Könnten Sie eine Ahnung geben, wie ist es möglich, es zu beheben?













