0

我正在使用 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,这是我第一个使用 web 服务的应用程序。你能提供任何线索如何解决它吗?

4

0 回答 0