我正在使用php编写facebook的聊天机器人。来自facebook的查询是通过php文件处理的。这与逻辑相似:
//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;
}
如果在一个瞬间发送来自不同人的两条消息,我会观察下一条消息。 checkAnswer函数的调用不在队列中(我通过记录执行过程并记录到文件来理解它)。例如,它可以通过请求2(来自facebook的请求)调用,而请求1未完成。因为它(我不确定100%),变量$ id并不总是相同,我的算法执行错误...启动和停止的日志文件在这里:
///////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////////////////////////
我正在使用apache2和php7,这是我第一个使用webservices的应用程序。你能给出任何解决方法吗?