Сценарный бот
В данной статье содержится описание Сценарного бота, принцип работы, его основные параметры и настройки.
Описание бота
Сценарный бот — это робот, работающий по заранее заданному сценарию в виде конечного автомата:
-
сценарий состоит из 1 или более состояний;
-
между состояниями задаются переходы (по нажатию кнопок и/или через действия);
-
каждое состояние включает 0 или более действий и 0 или более кнопок. При этом в состоянии должно быть задано хотя бы одно действие или кнопка.
Сценарный бот всегда находится в одном текущем состоянии. Когда бот входит в состояние (в начале диалога или после перехода), он выполняет действия состояния по порядку, затем показывает посетителю кнопки этого состояния.
Описание логики задаётся через страницу Боты административного интерфейса с помощью табличного редактора. Интеграции с внешними (относительно Webim Server) системами не требуется. Опция присутствует в версиях начиная с 10.0; по умолчанию отключена. Для активации обратитесь к менеджеру или в службу технической поддержки Webim.
В версиях 9.х этот бот назывался робот класса JsonRobotLogic, логика его находилась в JSON-файле, размещённом на сервере. Ключевые отличия бота в версии 10.0:
-
добавлен табличный редактор в административный интерфейс;
-
посетитель выбирает варианты ответа через кнопки (переходы);
-
конфигурация бота хранится в БД.
Принцип работы бота
Бот прикрепляется к профилю одного из существующих операторов, учётной записью которого определяется, в каких отделах бот будет обрабатывать сообщения.
N.B.
При прикреплении бота к профилю, под которым работает реальный оператор, корректная работа не гарантируется. Для бота требуется создавать отдельную учётную запись.
Общий алгоритм
-
Когда диалог назначается на бота (только если статус бота Онлайн), бот устанавливает начальное состояние (с маркером Является начальным).
-
При входе в состояние бот:
-
Когда посетитель нажимает кнопку, бот переходит в состояние, указанное в поле ID состояния у этой кнопки, и повторяет шаг «вход в состояние» (действия → кнопки).
Если посетитель отправил сообщение вместо нажатия кнопки
Помимо нажатия кнопок посетитель может отправить текст, файл, стикер и т. п. Такое входящее сообщение бот не сопоставляет с переходом по кнопке. Дальнейшее поведение определяется настройкой бота ID состояния для перехода при сообщении от посетителя, которое бот не может обработать (см. Переход при сообщении от посетителя):
-
если значение задано, бот перейдёт в указанное состояние;
-
если значение не задано, бот останется в текущем состоянии и повторит его обработку: заново выполнит действия текущего состояния и снова покажет кнопки.
Сообщения посетителя (в том числе «неожиданные») не теряются: они сохраняются в истории диалога и будут видны оператору после перенаправления, если оно предусмотрено сценарием.
Проверки и типовые требования к сценарию
-
У состояния, кроме состояний с действием Перенаправление на оператора, должна быть предусмотрена возможность перехода в другие состояния (например, возврата в меню). В противном случае вместо сохранения логики в верхней части страницы появится описание ошибки.
-
Переходы (кнопки и действия Переход в другое состояние) должны ссылаться на существующие состояния сценария.
-
Рекомендуется проектировать сценарий так, чтобы у посетителя всегда был «выход»: возврат в главное меню и/или передача на оператора.
-
Не рекомендуется задавать переход в текущее состояние без необходимости: это приводит к повторному выполнению действий и повторному показу кнопок и может восприниматься посетителем как «зацикливание».
-
Рекомендуется избегать чрезмерно больших сценариев (очень большого числа состояний, действий и кнопок): это усложняет сопровождение и может негативно влиять на удобство редактирования и диагностику логики.
Порядок сортировки
Порядок сортировки используется для определения приоритетного бота в отделе для назначения на него диалогов. На примере ниже чаты будет брать робот, отмеченный красной стрелкой.
Также, если более приоритетный бот по какой-либо причине не смог принять диалог (например, на момент версии 10.0 бот не поддерживает обращения из следующих каналов: Apple Messages for Business, XMPP), диалог примет на себя бот с более низким приоритетом, чем предыдущий. Такая цепочка будет продолжаться, пока диалог не попадёт на бота, который сможет обработать диалог, либо на оператора.
Переход при сообщении от посетителя
Параметр ID состояния для перехода при сообщении от посетителя, которое бот не может обработать задаётся для бота целиком (в общих настройках бота, над блоком состояний).
Если посетитель отправил сообщение (текст, файл и т. п.) вместо нажатия кнопки:
-
при заданном значении бот перейдёт в указанное состояние;
-
при пустом значении бот останется в текущем состоянии и повторит его обработку (действия → кнопки).
Состояние
Состояние описывает текущее состояние бота: его ID, действия и кнопки, которые будут выведены при входе в состояние.
| Название параметра | Принимаемые значения | Описание |
|---|---|---|
| ID состояния | Текст | Уникальный идентификатор состояния. Используется для перехода с помощью действия Переход в другое состояние или при нажатии кнопки. |
| Является начальным | True/False |
Маркер, определяющий первое состояние, в котором будет находиться бот. Начальное состояние может быть только одно. |
| Добавить действие | См. описание типа. | |
| Добавить кнопку | См. описание типа. |
Действия
Действия, которые выполняются в момент входа в состояние.
| Название действия | Принимаемые значения | Пример | Описание |
|---|---|---|---|
| Сообщение | Текст | Добрый день. Я сценарный робот. | В поле указывается сообщение, которое будет отправлено пользователю от лица бота при выполнении данного действия. |
| Переход в другое состояние | ID состояния | start |
В поле указывается ID существующего состояния, в которое перейдёт бот при выполнении данного действия. |
| Перенаправление на оператора | Название отдела | Текущий, Без отдела | В поле указывается отдел, в который перенаправится диалог. Текущий — отдел, в котором находится диалог в данный момент. Без отдела — диалог попадёт в общую очередь. |
| Возврат в предыдущее состояние | Бот вернётся в предыдущее состояние, из которого был осуществлён переход в текущее. |
Параметр Если офлайн в действии Перенаправление на оператора определяет, что будет делать бот, если в отделе, куда перенаправляется диалог, нет операторов в статусе Онлайн:
-
перенаправить: диалог перенаправится в отдел, даже если в нём нет операторов в статусе Онлайн
-
не перенаправлять: никаких действий с диалогом совершено не будет, выполнятся следующие по списку действия
Кнопки
Кнопки, которые будут выведены посетителю после выполнения действий текущего состояния.
| Название параметра | Принимаемые значения | Описание |
|---|---|---|
| Заголовок | Текст | Текст, указанный в данном поле, будет написан на кнопке. |
| ID состояния | ID состояния | В поле указывается ID существующего состояния, в которое перейдёт бот при нажатии на данную кнопку. |
Основная настройка робота
-
Создайте нового оператора и добавьте его в отделы, чаты которых должен обрабатывать бот.
-
В боковом меню Административного интерфейса в пункте Настройки нажмите на блок Боты. Откроется страница настройки существующих ботов.
-
На странице Боты нажмите кнопку Создать нового бота.
-
Укажите данные создаваемого бота:
-
Выберите оператора, учётная запись которого была зарегистрирована специально для бота
-
Выберите Тип бота — Сценарный бот
-
Укажите порядок сортировки
-
Укажите статус бота (если хотите, чтобы бот был активен сразу после настройки, укажите статус Онлайн)
-
При необходимости задайте ID состояния для перехода при сообщении от посетителя, которое бот не может обработать (см. Переход при сообщении от посетителя)
-
-
С помощью состояний, кнопок и действий опишите логику работы бота и нажмите кнопку "Сохранить" в нижней части страницы.







