Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel21

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

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

...

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

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

Примеры готовых сценариев доступны в разделе Примеры сценариев

...

Code Block
breakoutModewide
{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
breakoutModewide
запроситьФайл("Приложите файл").сохранитьРезультат("files[]") + 

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

Справочник возможных шагов сценария доступен в разделе Справочник шагов сценария

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

...

Code Block
breakoutModewide
если("{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} == да").то(завершитьСШаблоном("ну и отлично. Всего хорошего!"))+
завершитьСНовымЗапросом("Перевести на оператора")

...

Сценарий для интеграции на событие "Нажатие кнопки оператором"

...

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

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

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

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

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

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

Примеры готовых сценариев приведены в разделе Примеры сценариев