Сценарии

Сценарии

Общее описание

Сценарии позволяют описывать диалоги  системы autoFAQ с пользователями. Диалог может включать в себя переписку с пользователем, обращение к данным во внешних системах и обогащение ответов.

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

Описание сценариев в системе ведется при помощи языка DSL autoFAQ. Тело сценария состоит из последовательных операций. Каждая операция располагается в отдельной строке, для связи со следующей операцией в конце строки требуется указание символа "+". Некоторые операции могут содержать 1 или несколько опциональных модификаторов. 

Полный справочник шагов описан в разделе https://deephack.atlassian.net/wiki/spaces/AKB/pages/3203891209

Примеры готовых сценариев доступны в разделе https://deephack.atlassian.net/wiki/spaces/AKB/pages/3207102465


Переменные

Встроенные переменные

Для работы с данными в сценариях доступны следующие встроенные переменные:

{platformInMessageQuery} - текст первоначального запроса пользователя, по которому был создан диалог с AutoFAQ {serviceId} - id сервиса Данные пользователя {userFullName} - имя пользователя {userLogin} - логин пользователя {userEmail} - электронная почта пользователя {userPhone} - номер телефона пользователя {userId} - ID пользователя {userPayload.*} - хранилище дополнительных данных о пользователе Данные пользовательского канала, через который пришел текущий запрос {channelId} - идентификатор канала {channelType} - тип канала (Telegram, WhatsApp, Widget) Данные текущего диалога с пользователем {conversation} - объект диалог с данными о пользователе, список событий и реплик пользователя, бота и операторов {conversationId} - идентификатор текущего диалога {externalFiles} - список файлов переданных пользователю или полученных от него в рамках текущего диалога Встроенные переменные для работы с API вызовами {http_code} - код статуса последнего API запроса Встроенные переменные каналов {telegram_message} - полный набор информации о пользователе, содержит в себе локации пользователя, если он ей поделится с ботом

В релизе 5.7.3-10 у {conversation} изменилась структура данных для параметра files:

было:

{{"channelMessageId":"a6cd6cd1-eb1c-4bd4-acbc-1c37895b5d33","tpe":"AnswerOperator","files": ["проосто-строка-1","проосто-строка-2"]}}

стало:

{"messages":{"channelMessageId":"a6cd6cd1-eb1c-4bd4-acbc-1c37895b5d33","tpe":"AnswerOperator","files":[{"id":"ac9dd051-ccd0-463b-b0ac-221936013617","name":""},{"id":"f524944a-c330-41ba-8d9e-04914b16ee69","name":""}]}}

Встроенные переменные можно не объявлять, их значение доступно в любом сценарии. Данные пользователя могут отсутствовать, если в сервисе не настроена https://deephack.atlassian.net/wiki/spaces/AKB/pages/2156429313 или иной метод получения данных о пользователях.

Пользовательские переменные

В сценариях возможно создавать и использовать для хранения данных пользовательские переменные трех типов:

  • переменные сценария

  • переменные диалога

  • переменные пользователя

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

Ко всем переменным можно обратиться через указание названия переменной в обрамлении фигурными скобками {userSaid}:

сообщениеПользователю.сШаблоном("Текст сообщения: {userSaid}") +

Детальнее об определении переменных смотрите в разделе Установка переменных

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

запроситьФайл("Приложите файл").сохранитьРезультат("files[]") +

Справочник шагов сценария

Справочник возможных шагов сценария доступен в разделе https://deephack.atlassian.net/wiki/spaces/AKB/pages/3203891209

Порядок выполнения шагов сценария 

Все шаги сценария выполняются последовательно с первой до последней строки. Если вы хотите временно исключить одну из строк из процесса выполнения сценария - установите в начале данной строки символ //

сообщениеПользователю.сШаблоном("Привет")+ - шаг будет выполнен //сообщениеПользователю.сШаблоном("Привет, {userFullName}")+ - шаг не будет выполнен

В конце сценария обязательно размещение одного из шагов завершения сценария:

завершить - завершение сценария завершитьСШаблоном("Пока!") - завершение сценария с выводом сообщения пользователю завершитьСНовымЗапросом("Новый запрос") - завершение сценария и одновременный запуск в работу нового сообщения завершитьИПеревестиНаОператора - звершение сценария и перевод диалога в очередь оператору завершитьИЗакрытьДиалог() - завершение сценария и закрытие диалога, следующая реплика пользователя начнет новый диалог

Если в условии сценария применен один из шагов завершения, то сценарий может завершить работу досрочно:

если("{http_code} != 200").то( комментарий("Данные пользователя не обновлены")+ завершитьИПеревестиНаОператора )+ комментарий("Обовлены данные пользователя. Новые данные отправлены в CRM")+ завершитьПроверка синтаксиса сценария

Проверка синтаксиса сценария

На странице документа базы знаний есть кнопка “Проверить сценарий”, которая запускает синтаксическую проверку указанного сценария.

 

f95dfd5b-cd86-40f1-80a4-5ec780736d0c-20240301-184643.png

 

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

Примеры готовых сценариев

Примеры готовых сценариев приведены в разделе https://deephack.atlassian.net/wiki/spaces/AKB/pages/3207102465