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

Доброго времени суток, коллеги! Я только начал освоение языка PHP и поставил перед собой непростую задачу по написанию Telegram Бота в корпоративных нуждах. На бесплатном хостинге поднял WebHooks и он даже работает и принимает запросы.
Теперь суть: мог ли кто-нибудь из вас сказать как принимать ответ от пользователя и класть в переменную? То есть
Б- бот, П-пользователь
Б -Добрый день, для регистрации укажите ПОЛ (М, Ж)
П - М
Б- Представьтесь (ФИО полностью)
П - Иванов Иван Иванович

И на выходе иметь в скрипте $gender = male, $name = 'Иванов Иван Иванович', ну а дальше помещать данные в базу.
Каждый раз сталкиваюсь с проблемой, что мой бот не дожидается ответа от пользователя, а просто сыпет сообщения, естественно никуда не записывая ответы.

Заранее благодарю!
  • Вопрос задан
  • 6664 просмотра
Решения вопроса 1
@nllm
Покажите исходники бота.
Надо понять, что при вебхуке есть 2 составляющие. Одна - прием сообщений пользователя (на сам вебхук), вторая - отправка сообщений пользователю через bot api

Вам надо фиксировать состояния бота для каждого пользователя (для обработки и сохранения ответов вашего опросника)

Вот пример бота, которого делал для демонстрации на вебинаре. Бот простой, но функциональный. Посмотрите, как пример.

https://www.dropbox.com/s/wjsu99zx3pvpee3/demobot....
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Lulzsec
Вот библиотека есть хорошая: https://github.com/irazasyed/telegram-bot-sdk
В документации есть примеры. Это для тебя:
include('db.php'); //путь до конфигурации БД
include('vendor/autoload.php'); //Путь до файла-автозагрузчика библиотеки
use Telegram\Bot\Api;
$telegram = new Api(''); //токен в одинарных кавычках
$result = $telegram -> getWebhookUpdates();
$text = $result["message"]["text"];
$chat_id = $result["message"]["chat"]["id"];
$name = $result["message"]["from"]["username"];

if ($text == "/start") {
$reply = "Спасибо за подписку!";
$response = $telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply ]);
mysqli_query($db, "INSERT INTO users (id, username, chatid) VALUES (NULL, '$name', $chat_id)"); //добавление в базу
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы