【问题标题】:How to understand what message from the telegram bot answered the user?如何理解来自电报机器人的消息回复了用户?
【发布时间】:2020-08-17 08:27:09
【问题描述】:

我使用 Laravel 框架和 Telegram Bot SDK。我看了很多指南,都说创建命令并获得答案是多么容易,但我不明白如何在用户和机器人之间创建对话。例如,在我的 webhook 中,我可以这样做:

$message = Telegram::getWebhookUpdates()->getMessage();
if ($message->getText() == 'something') 
   foreach (Service::get() as $item => $value){
      if($value->name == $message->getText()) {
         $credential = Credential::find($value->id);
         if($credential) {
            Telegram::sendMessage([
               'chat_id' => $message->getChat()->getId(),
               'text' => 'Enter the data'
            ]);
         }
      }
   }
}
Telegram::commandsHandler(true);

在用户发送数据(以数字格式)后,我需要处理响应。但是我怎样才能检查带有条件语句的消息文本,以知道这是对我之前消息的答案,如果它是任何数字。例如:

$message = Telegram::getWebhookUpdates()->getMessage();
if($message->getText() == '/start'){
   ...
}
elseif($message->getText() == **HERE USER RESPONSE WITH DATA**){
   ...
}

这只是功能的一部分,仍然有不同的命令,键盘的变体,因此我需要了解如何正确处理传入的消息,以便知道我收到了哪个特定问题的答案。

附言我发现解决方案说您需要创建一个包含消息历史记录的数据库表并基于此执行处理程序。还有其他方法吗?

【问题讨论】:

    标签: laravel telegram-bot php-telegram-bot telegram-webhook


    【解决方案1】:

    您可以通过 Telegram Bots API 中的ForceReply 来完成。如果用户的消息是回复,您应该找出用户回复的消息。只需使用 message id 检查消息的文本。如果是第一个问题,则表示已回答,现在可以发送第二个问题了。

    PS:您找到的解决方案可能是完成这项工作的更好方法。只需创建一个包含消息历史记录的数据库表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 2022-10-19
      • 2022-11-10
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      相关资源
      最近更新 更多