Общее описание
Сценарии позволяют описывать диалоги системы autoFAQ с пользователями. Диалог может включать в себя переписку с пользователем, обращение к данным во внешних системах и обогащение ответов.
Система позволяет создавать сценарии произвольной сложности и прикреплять их напрямую к документам в базах знаний или событиям в работе над диалогами. В случае когда база знаний по запросу пользователя определяет документ, содержащий вместо ответа сценарий, бот начнет вести с пользователем описанный в сценарии диалог.
Описание сценариев в системе ведется при помощи языка DSL autoFAQ. Тело сценария состоит из последовательных операций. Каждая операция располагается в отдельной строке, для связи со следующей операцией в конце строки требуется указание символа "+". Некоторые операции могут содержать 1 или несколько опциональных модификаторов.
Примеры готовых сценариев доступны в разделе Примеры сценариев (старая версия)
Переменные
Встроенные переменные
Для работы с данными в сценариях доступны следующие встроенные переменные:
{platformInMessageQuery} - текст первоначального запроса пользователя, по которому был создан диалог с AutoFAQ Данные пользователя {userFullName} - имя пользователя {userLogin} - логин пользователя {userEmail} - электронная почта пользователя {userPayload.*} - хранилище дополнительных данных о пользователе Данные пользовательского канала, через который пришел текущий запрос {channelId} - идентификатор канала {channelType} - тип канала (Telegram, Whatsapp, Widget) Данные текущего диалога с пользователем {conversation} - объект диалог с данными о пользователе, списокм событий и реплик пользователя, бота и операторов {externalFiles} - список файлов переданных пользователю или полученных от него в рамках текущего диалога Встроенные переменные для работы с API вызовами {http_code} - код статуса последнего API запроса
Встроенные переменные можно не объявлять, их значение доступно в любом сценарии. Данные пользователя могут отсутствовать, если в сервисе не настроена Идентификация или иной метод получения данных о пользователях.
Пользовательские переменные
В сценариях возможно создавать и использовать для хранения данных пользовательские переменные трех типов:
переменные сценария
переменные диалога
переменные пользователя
Любая переменная можент быть создана или изменена ботом в любом сценарии. Значение переменной сценария будет потеряно после завершения того сценария, в котором она была создана. Значение переменной диалога будет доступно в любом сценарии в рамках текущего диалога. В новом диалоге эту переменную надо определять заново и ее значение может быть другим. Значение переменной пользователя сохраняется от диалога к диалогу. Если значение переменной пользователя поменяется, то это отразится на всех диалогах.
Ко всем переменным можно обратиться через указание названия переменной в обрамлении фигурными скобками {userSaid}
:
сообщениеПользователю.сШаблоном("Текст сообщения: {userSaid}") +
Детальнее об определении переменных смотрите в разделе Установка переменных
Переменные могут хранить не одно, а сразу несколько значений. Переменная, объявленная как attachments[]
хранит не одно значение, а список значений, при записи новых значений в данную переменная они будут дописаны в конец списка.
запроситьФайл("Приложите файл").сохранитьРезультат("files[]") +
Справочник шагов сценария
Справочник возможных шагов сценария доступен в разделе Справочник шагов сценария
Порядок выполнения шагов сценария
Все шаги сценария выполняются последовательно с первой до последней строки. Если вы хотите временно исключить одну из строк из процесса выполнения сценария - установите в начале данной строки символ //
сообщениеПользователю.сШаблоном("Привет")+ - шаг будет выполнен //сообщениеПользователю.сШаблоном("Привет, {userFullName}")+ - шаг не будет выполнен
В конце сценария обязательно размещение одного из шагов завершения сценария:
завершить - завершение сценария завершитьСШаблоном("Пока!") - завершение сценария с выводом сообщения пользователю завершитьСНовымЗапросом("Новый запрос") - завершение сценария и одновременный запуск в работу нового сообщения завершитьИПеревестиНаОператора - звершение сценария и перевод диалога в очередь оператору завершитьИЗакрытьДиалог() - завершение сценария и закрытие диалога, следующая реплика пользователя начнет новый диалог
Если в условии сценария применен один из шагов завершения, то сценарий может завершить работу досрочно:
если("{http_code} != 200").то( комментарий("Данные пользователя не обновлены")+ завершитьИПеревестиНаОператора )+ комментарий("Обовлены данные пользователя. Новые данные отправлены в CRM")+ завершить
Примеры готовых сценариев
Примеры готовых сценариев приведены в разделе Примеры сценариев (старая версия)