Очень часто пользователи пишут боту какую-либо произвольную фразу вместо нажатия на кнопку или отправки конкретной ожидаемой фразы. Если в боте не предусмотреть обработку такой произвольной фразы, то бот может “повиснуть” в состоянии, когда пользователь не будет знать, что делать далее. Поэтому в каждом боте необходимо поддерживать обработку произвольной фразы.
Для такой поддержки необходимо:
Добавить отдельный сценарий для обработки произвольной фразы
Существует два подхода к обработке - перевод в главное меню или отражение текущих кнопок. Для реализации в сценарий обработки необходимо включить команды:
Вывод информации для клиента об ошибке. Для этого используется команда [Сообщение клиенту] с указанием необходимого текста.
По необходимости – команду восстановления кнопок при их наличии. Для этого необходимо направить команду [Сообщение клиенту] с указанием текста:
<em>{"tag_type":"button", "button_action_id": 6, "value": "ChatButtons"}</em>
По необходимости вывести дополнительные кнопки. Например, для перехода к главному меню или связи с менеджером. При этом для того, чтобы данные кнопки не появлялись повторно надо реализовать проверку на дубли следующим образом:
Первой командой добавить инициализацию переменной buttonAdded = 0
Установить buttonAdded = 1, если кнопка уже есть в ChatButtons
Вывод дополнительных кнопок делать только, если они еще не добавлены, то есть по условию buttonAdded = 0
Вызов сценария необходимо сделать по событию на сообщение клиента с произвольным текстом.
В случае, если в конкретном сценарии надо реализовать специальную обработку произвольного текста, для этого надо использовать команду Получение данных с указанием целевого сценария с обработкой такого произвольного текста.
Исключение стартовой фразы:
Обработка произвольной фразы также будет срабатывать по первому сообщению клиента. Для исключения данной ситуации необходимо:
1. Для Телеграм и каналов с сообщением /start - прописать событие для фразы /start* до события на *, и по данному событию вызывать сценарий инициализации
2. В сценарии инициализации сделать по таймеру переход к сценарию с установкой переменной BotInitialized в 1. И добавить условие выполнения сценария на обработку произвольной фразу "BotInitialized Равно 1"