전보 봇에서 어떤 메시지가 사용자에게 응답했는지 이해하는 방법은 무엇입니까?

2020-05-03 laravel telegram-bot php-telegram-bot telegram-webhook

Laravel Framework 및 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**){
   ...
}

이것은 기능의 일부일 뿐이며 여전히 다른 명령, 키보드 변형이 있으므로 응답을받은 특정 질문을 알기 위해 들어오는 메시지를 올바르게 처리하는 방법을 이해해야합니다.

추신 : 나는 메시지 기록이 있고이 처리기를 기반으로 데이터베이스 테이블을 만들어야한다고 말하는 솔루션을 발견했습니다. 다른 방법이 있습니까?

Answers

Telegram Bots API에서 ForceReply 를 통해이를 수행 할 수 있습니다. 사용자의 메시지가 회신 인 경우 사용자가 어떤 메시지에 회신했는지 확인해야합니다. message id를 사용하여 메시지의 텍스트를 확인하십시오. 첫 번째 질문 인 경우, 답변을 받았으므로 이제 두 번째 질문을 보낼 수 있습니다.

추신 : 당신이 찾은 해결책이 아마도 일을하는 더 좋은 방법 일 것입니다. 메시지 히스토리가있는 데이터베이스 테이블을 작성하십시오.

Related