Не удается получить обновленные сообщения от Telegram Bot после запуска скрипта

Я пытаюсь создать скрипт для работы моего бота через Bot API, я использую простой PHP-файл на моем сервере, на котором установлен Webhook, так что Telegram обращается к этому файлу каждый раз при получении сообщения. Но проблема в том, что я не могу получить новое сообщение, когда скрипт уже запущен, если я пытаюсь получить и назначить обновленное сообщение, чтобы изменить рабочий процесс в процессе, я получаю только старое сообщение (которое было присутствует в момент запуска скрипта)

$update = file_get_contents('php://input');///get new data
$update = json_decode($update, TRUE);///decode data
$message = $update["message"]["text"];///assign message
switch($message) {////vary actions accordingly to first message
case "number1":
////send smth to user and wait for answer
$update = file_get_contents('php://input'); ////get new data with updated message
$update = json_decode($update, TRUE); ////decode
$message = $update["message"]["text"]; ////assign
switch($message) {////vary further actions accordingly to new message
case "number2":
////further actions
}
}
...

0

Решение

Вы не можете получить данные { ('php://input') } несколько раз из телеграммы. Вы можете спросить почему?

Позвольте мне описать, что происходит:
0- Кто-то хочет отправить сообщение вашему боту VIA Telegram client

1- Серверы Telegram получают это сообщение и запускают ваши предопределенные
скрипт. (скрипт который вы передаете Telegram при настройке webhook.

2 — один раз и только один раз, когда вы используете ('php://input') все
данные (включая это сообщение) будут переданы вашему сценарию и СЕЙЧАС
Telegram больше нечего вам дать.

3. Ваш скрипт запускается и обрабатывает это сообщение за несколько миллисекунд или
меньше (в это дополнительное небольшое время никто не может набрать и ввести что-то
больше на стороне клиента)

4- Ваш сценарий заканчивает работу.

5. В следующий раз, когда пользователь вводит что-то (спустя 1 секунду или 1 год!), Telgram снова вызовет ваши сценарии с новым сообщением.

Как видите, только первый звонок ('php://input') имеет полезные данные (потому что у telegram есть данные для вас и вызов вашего скрипта бота. Другой вызов ('php://input') ничего не дать тебе.

КАК ОПЫТ
Получайте данные только один раз в верхней части кода (перед обработкой сообщения), а затем обрабатывайте их. Если вам нужны прежние сообщения, вы можете сохранить их в базе данных при получении.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]