Отработка неизвестных команд

Чат-бот понимает команды вида /start, /faq и т.п., которые можно задать каждому узлу. И ответы пользователя, в текстовом виде или по его номеру. В зависимости от настроек конкретного узла (от параметра "При ответе не по списку"), при неправильном ответе чат-бот может запустить отработку неизвестных команд.

Кроме логики самого узла на запуск отработки неизвестной команды влияет также параметр "Искать полученный ответ во всех узлах", который расположен в настройках чат-бота (иконка с шестерёнкой в главном меню) в разделе "Прочее".

Если данный параметр включен и пользователь введёт ответ, которого нет в текущем узле, но есть в других узлах, то чат-бот вызовет тот узел, к которому ведёт первый подходящий ответ. Если между ответом и узлом не настроена связь или подходящих ответов нет, то чат-бот вызовет отработку неизвестных команд.




Отработка неизвестных команд отличается от обычных узлов отсутствием команды и невозможностью её убрать в главном сценарии. Также к ней нельзя провести связь от ответа или запустить её с помощью действия "Запустить другой сценарий/узел". Открыть для редактирования её можно с помощью одноимённой кнопки в левом верхнем углу рядом с "Добавить узел", либо с помощью кнопки редактирования узла. Сам узел отработки неизвестных команд выделяется зелёной полосой сверху.



Отработка неизвестных команд всегда есть в главном сценарии, в котором её нельзя выключить. В остальных сценариях она по умолчанию выключена. Если пользователь находится в другом сценарии и чат-бот не распознает команду, то он запустит отработку неизвестных команд из главного сценария. Чтобы чат-бот запускал в сценарии свою отработку - включите её в нём. Для этого перейдите в параметры сценария (на данный момент они доступны только для уже сохранённых сценариев), нажав на шестерёнку в правом верхнем углу редактора.



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



Настройка узла отработки неизвестных команд аналогична остальным, вы точно также можете добавить список ответов и запустить любые действия. Обратите внимание на параметр "Считать количество заходов в этот узел". Включите его, и после сохранения сценария появится переменная, содержащая счётчик заходов в узел, её можно использовать в условиях. Если счётчик нужно обнулить, то воспользуйтесь действием "Заполнение переменной" и типом заполнения "Значение". Также учтите, что для каждой отработки неизвестных команд - свой счётчик.





Как было сказано ранее, на запуск отработки неизвестных команд влияют настройки узла, а конкретно настройки в секции "Ответ пользователя".

Предположим у нас есть следующий сценарий со своей отработкой неизвестных команд.




В узле 1 у нас стандартные настройки.
У одного ответа установлена связь с узлом, у другого нет.
При ответе не по списку установлено "Запустить отработку неизвестных команд".



В узле 2 у нас есть один ответ, ведущий в узел 3.



Вне зависимости от наличия связи - чат-бот выведет все ответы из запущенного узла.
В данном случае мы запустили узел 1.




Если бы после этого мы нажали на вариант "Этот ответ ведёт в узел 2", у которого установлена связь с узлом - чат-бот запустил бы узел 2.



Если бы мы выбрали второй вариант, у которого не установлена связь с узлом - сработала бы отработка неизвестных команд. 



Если бы мы, находясь в узле 1, написали бы "Этот ответ ведёт в узел 3", которого нет в списке ответов в узле 1, но есть в узле 2, то реакция чат-бота зависела бы от параметра "Искать полученный ответ во всех узлах". Если он выключен - запустится отработка неизвестных команд. Если он включен - запустится узел 3.






Если мы в узле 1 изменим параметр "При ответе не по списку", например, на игнорирование в случае неправильного ответа.



То чат-бот не будет запускать отработку неизвестных команд и дождётся правильного ответа. Ответ без установленной связи также будет считаться неправильным.