Обработка произвольной фразы

Последние изменения: 28.02.2023

Очень часто пользователи пишут боту какую-либо произвольную фразу вместо нажатия на кнопку или отправки конкретной ожидаемой фразы. Если в боте не предусмотреть обработку такой произвольной фразы, то бот может “повиснуть” в состоянии, когда пользователь не будет знать, что делать далее. Поэтому в каждом боте необходимо поддерживать обработку произвольной фразы.

Для такой поддержки необходимо:

  1. Добавить отдельный сценарий для обработки произвольной фразы

    newscenario.jpg
  2. Существует два подхода к обработке - перевод в главное меню или отражение текущих кнопок. Для реализации в сценарий обработки необходимо включить команды:

  • Вывод информации для клиента об ошибке. Для этого используется команда [Сообщение клиенту] с указанием необходимого текста.

  • По необходимости – команду восстановления кнопок при их наличии. Для этого необходимо направить команду [Сообщение клиенту] с указанием текста:

<em>{"tag_type":"button", "button_action_id": 6, "value": "ChatButtons"}</em>
  • По необходимости вывести дополнительные кнопки. Например, для перехода к главному меню или связи с менеджером. При этом для того, чтобы данные кнопки не появлялись повторно надо реализовать проверку на дубли следующим образом:

    • Первой командой добавить инициализацию переменной buttonAdded = 0

    • Установить buttonAdded = 1, если кнопка уже есть в ChatButtons

      free_text_condition_1.png
    • Вывод дополнительных кнопок делать только, если они еще не добавлены, то есть по условию buttonAdded = 0

      free_text_condition_2.png
  1. Вызов сценария необходимо сделать по событию на сообщение клиента с произвольным текстом.

    free_text_event.png

В случае, если в конкретном сценарии надо реализовать специальную обработку произвольного текста, для этого надо использовать команду Получение данных с указанием целевого сценария с обработкой такого произвольного текста.

Исключение стартовой фразы:

Обработка произвольной фразы также будет срабатывать по первому сообщению клиента. Для исключения данной ситуации необходимо:

1. Для Телеграм и каналов с сообщением /start - прописать событие для фразы /start* до события на *, и по данному событию вызывать сценарий инициализации

2. В сценарии инициализации сделать по таймеру переход к сценарию с установкой переменной BotInitialized в 1. И добавить условие выполнения сценария на обработку произвольной фразу "BotInitialized Равно 1"

Помогла ли вам статья?