Как принимать ответ пользователя на вопрос от Telegram Bot?

Всем привет. У меня такая загвоздка. Нужно получить ответ от пользователя и сохранить его в базе данных. Загвоздка в том, что я не понимаю как перехватить ответ. Я создал вот такой класс.
<?php
class BotMain 
{
	protected $access_token;
	protected $api_link;
	
	public $IncInfo = array();
	public $CallBack = array();
	
	function __construct($set = array())
	{
		$this -> access_token = $set['access_token'];
		$this -> api_link = $set['api_link'];
        $this -> status = 0;
    }
	/*
	all incoming messages from telegram
	*/
	function SetIncInfo()
	{
		$output = json_decode(file_get_contents('php://input'), TRUE);
		$this -> IncInfo ['chat_id'] = $output['message']['chat']['id'];
		$this -> IncInfo ['message'] = $output['message']['text'];
		$this -> IncInfo ['first_name'] = $output['message']['chat']['first_name'];
		$this -> IncInfo ['last_name'] = $output['message']['chat']['last_name'];
		$this -> IncInfo ['username'] = $output['message']['chat']['username'];
				
	}
	 /*
	all  incoming answers form telegram inline_keyboard 
	*/
	function SetCallBack()
	{
		$this -> CallBack ['callback_query'] =  $output['callback_query'];
		$this -> CallBack ['data'] =  $callback_query['data'];
		//$this -> CallBack ['message_id'] =  ['callback_query']['message']['message_id'];
		$this -> CallBack ['chat_id_callback'] =  $callback_query['message']['chat']['id'];
	}
		
	/*
	sends message according to chat_id + may include reply_markup
	*/
	function SendMessage ($chat_id, $message, $replyMarkup) 
	{
		file_get_contents($this -> api_link . '/sendMessage?chat_id=' . $chat_id . '&text=' . urlencode($message) . '&reply_markup=' . $replyMarkup);
	}
}
?>


Сама логика бота обрабатывается в другом файле. WebHook настроен на него, соответственно.
<?php
  require_once 'bot.settings.php'; //token, url
  require_once 'BotMain.class.php'; //main class of the bot
  
  $bot = new BotMain($set); 
  $bot -> SetIncInfo();   //get incoming message
//  $bot -> SetCallBack();  //get reply from inline keyboard

switch($bot->IncInfo['message']) {
    case '/start':
       $bot -> SendMessage($bot -> IncInfo['chat_id'], "You are wellcome! Please enter your name: ");
	/*
	???
	*/	
    break;  	
 }
 
?>


Допустим, если в класс прописать переменную status, то все равно не получится выхватить ответ, потому что скрипт завершит свое выполнение, и ответ будет воспринят заново и создан новый экземпляр класса.
Файлы создавать не вариант. Как тогда можно решить данную проблему?
P.S. Я новичок в программировании, если что не так, дайте мне знать, пожалуйста.
  • Вопрос задан
  • 1255 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Чтобы понять, к чему относится ответ пользователя, нужно в БД сохранить статус диалога, например "задан вопрос №3" и при приходе сообщения проверять этот статус.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽