Table of Contents | ||||
---|---|---|---|---|
|
Общее описание
Сценарии позволяют описывать диалоги системы autoFAQ с пользователями. Диалог может включать в себя переписку с пользователем, обращение к данным во внешних системах и обогащение ответов.
...
Описание сценариев в системе ведется при помощи языка DSL autoFAQ. Тело сценария состоит из последовательных операций. Каждая операция располагается в отдельной строке, для связи со следующей операцией в конце строки требуется указание символа "+". Некоторые операции могут содержать 1 или несколько опциональных модификаторов.
Полный справочник шагов описан в разделе Справочник шагов сценария
Примеры готовых сценариев доступны в разделе Примеры сценариев
...
Code Block | ||
---|---|---|
| ||
{platformInMessageQuery} - текст первоначального запроса пользователя, по которому был создан диалог с AutoFAQ {serviceId} - id сервиса Данные пользователя {userFullName} - имя пользователя {userLogin} - логин пользователя {userEmail} - электронная почта пользователя {userPhone} - номер телефона пользователя {userId} - ID пользователя {userPayload.*} - хранилище дополнительных данных о пользователе Данные пользовательского канала, через который пришел текущий запрос {channelId} - идентификатор канала {channelType} - тип канала (Telegram, WhatsappWhatsApp, Widget) Данные текущего диалога с пользователем {conversation} - объект диалог с данными о пользователе, списокм событий и реплик пользователя, бота и операторов {conversationId} - идентификатор текущего диалога {externalFiles} - список файлов переданных пользователю или полученных от него в рамках текущего диалога Встроенные переменные для работы с API вызовами {http_code} - код статуса последнего API запроса |
...
Code Block | ||
---|---|---|
| ||
запроситьФайл("Приложите файл").сохранитьРезультат("files[]") + |
Справочник шагов сценария
Справочник возможных шагов сценария доступен в разделе Справочник шагов сценария
Порядок выполнения шагов сценария
...
Code Block | ||
---|---|---|
| ||
если("{http_code} != 200").то(
комментарий("Данные пользователя не обновлены")+
завершитьИПеревестиНаОператора
)+
комментарий("Обовлены данные пользователя. Новые данные отправлены в CRM")+
завершить |
Примеры готовых сценариев
Примеры готовых сценариев приведены в разделе Примеры сценариев
Справочник шагов сценария
Справочник возможных шагов сценария доступен в разделе Справочник шагов сценария
Старое описание привидено ниже для сохранения доступности ссылок:
Шаги установки переменных
установитьПеременную(*переменная, *значение) -
установитьПеременнуюВДиалог(*args) -
установитьПеременнуюПользователю(*переменная, *значение)
Шаги переписки с пользователями
сообщениеПользователю.сШаблоном(*сообщение)
задатьПользователюВопрос(*сообщение).сохранитьРезультат(*переменная)
запроситьФайл(*сообщение).сохранитьРезультат(*переменная)
Шаги работы с внешними сервисами
вызвать.внешнийСервис(*адрес, *тип).сохранитьРезультат(*args)
Сервисные шаги
если(*условие).то(*операции)
установитьМетку(*название)
перейтиНаМетку(*метка)
комментарий(*сообщение)
выполнитьJs(*скрипт)
Шаги управления диалогом
запросВБазыЗнаний(*args)
назначитьТематику(*идентификатор)
назначитьОператора(*логин)
Шаги генерации формы для оператора
добавитьПолеВФормуОператора(*args)
показатьФормуОператору(имя = "форма")
Шаги работы с группами
определитьИдентификаторГруппы(*переменная)
перевестиНаГруппу(*идентификатор).иЗавершить
перевестиНаГруппу(*идентификатор).иЗавершитьСНовымЗапросом(*запрос)
перевестиНаГруппу(*идентификатор).иЗавершитьИПеревестиНаОператора
Шаги завершения сценария
завершить
завершитьСНовымЗапросом("вопрос")
завершитьИПеревестиНаОператора
завершитьИЗакрытьДиалог()
Примеры сценариев
...
Сценарий с вызовом внешнего сервиса, разбором ответа в JS.
...
Code Block |
---|
установитьПеременную("host_cities", "https://api.autofaq.ai/v1/query") +
установитьПеременную("service_id", "121000") +
установитьПеременную("service_token", "939b8") +
установитьПеременную("other_score", "0.5") +
задатьПользователюВопрос("Уточните ваш город, пожалуйста?").сохранитьРезультат("city")+
вызвать.внешнийСервис("{host_cities}", "POST").сЗаголовками(("Content-Type", "application/json"),("charset", "utf-8")).сТеломСообщения("{\"service_token\": \"{service_token}\",\"service_id\":{service_id},\"query\":\"{city}\"}").сохранитьРезультатКакСтроку("results")+
выполнитьJs("""
var result = JSON.parse(results); var score = 0.0; var answer = '';
if (result.results.length > 0) {
answer = result.results[0]['answer']; score = result.results[0]['score'];
answer = answer.replace(/\n/g,'<br>');
}
var exit = {'answer':answer, 'score':score}; exit;
""") +
если("{http_code} > 210").то(завершитьСШаблоном("Что-то сломалось. Зайдите попозже."))+
если("{score} < {other_score}").то(завершитьСШаблоном("Вот в этом городе у нас ничего нет"))+
сообщениеПользователю.сШаблоном("В указанном городе можно приобрести по адресам: <br>{answer}")+
задатьПользователюВопрос("Все ок?").сВариантамиОтвета("Да", "А мне не выдают").сохранитьРезультат("what")+
если("{what} == Да").или("{what} == да").то(завершитьСШаблоном("ну и отлично. Всего хорошего!"))+
завершитьСНовымЗапросом("Перевести на оператора") |
...
Сценарий для интеграции на событие "Нажатие кнопки оператором"
...
завершитьПроверка синтаксиса сценария |
Проверка синтаксиса сценария
На странице документа базы знаний есть кнопка “Проверить сценарий”, которая запускает синтаксическую проверку указанного сценария.
Если в сценарии найдены ошибки, тогда открывается модальное окно с перечислением найденных ошибок. Синтаксический анализатор имеет ряд ограничений при описании найденных ошибок - не всегда имеется возможность указать номер строки, не все типы ошибок снабжены русским описанием.
Примеры готовых сценариев
Примеры готовых сценариев приведены в разделе Примеры сценариев