Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

Info

Для канала Telegram есть поддержка тегов pre и code в тексте сообщений из сценариев

Пример вывода простого текстового сообщения:

...

Info

Передача файлов пользователю поддерживается только для сценариев в документах баз знаний и не поддерживается для сценариев приветствия и интеграций.

...

задатьПользователюВопрос(*сообщение)

...

 

Шаг отправки пользователю вопроса пользователю и ожидания ответа.

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

.сохранитьРезультат(*переменная)

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

...

Code Block
breakoutModewide
задатьПользователюВопрос("На какую дату нужен пропуск ?").сохранитьРезультат("whatDay") +
...

Пример сценария с вопросом и разбором результатов:

Code Block
breakoutModewide
задатьПользователюВопрос("Как дела?").сохранитьРезультат("what") +
если("{what} != Хорошо").то(
  комментарий("А дела то не хорошо") +
  завершитьИПеревестиНаОператора 
) +
комментарий("Все отлично") +
завершить

Время ожидания ответа от пользователя устанавливается таймером сценариев, значение которого можно указать в разделе Настройки - Сценарии. Если ответ от пользователя не поступит в указанное время, сценарий будет завершен. После завершения сценарий по таймеру система отправит пользователю соотвествующее служебное сообщение, текст которого можно указать в разделе Настройки - Сценарии.Дополнительные модификаторы для данного шага включают в себя возможность указания вариантов ответа и правила проверки ответа по шаблонусистема отправит пользователю соотвествующее служебное сообщение, текст которого можно указать в разделе Настройки - Сценарии.

Дополнительные модификаторы для данного шага включают в себя возможность указания вариантов ответа и правила проверки ответа по шаблону.

.сохранитьРезультат(текст, файлы, ожидание)

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

Пример сценария с запросом файлов у пользователя:

Code Block
breakoutModewide
задатьПользователюВопрос("Пришли файл(ы) пожалуйста, у тебя есть 15 секунд.").сохранитьРезультат(текст="user_text", файлы="user_file[]", ожидание=15)
сообщениеПользователю("Ты написал: {user_text}")
сообщениеПользователю.сШаблоном("Ты приложил файлы: {user_file}")
завершить

ожидание не должно быть больше таймера сценариев, заданного в Настройки - Сценарии.

.сВариантамиОтвета(*варианты) 

...

Code Block
breakoutModewide
задатьПользователюВопрос("На какую дату нужен пропуск ?").сВариантамиОтвета("Сегодня", "Завтра").сохранитьРезультат("whatDay") +
...

Есть возможность передать сразу список кнопок без необходимости перечисления каждой отдельно. Обработка результатов выбора осуществляется как обычно. Пример передачи списка кнопок ниже:

...

Code Block
breakoutModewide
//  выражение для проверки, что введенная строка соотвествует формату даты вида 02.12.2021
задатьПользователюВопрос("Укажите дату").проверитьФормат("(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.](19|20)\\d\\d", "Не понял вас, повторите пожалуйста.").сохранитьРезультат("day")+

//  выражение для проверки, что введенная строка содержит адрес электронной почты
задатьПользователюВопрос("Напишите email").проверитьФормат("^\\S+@\\S+\\.[a-z]{2,}$", "Пожалуйста, введите корректный email").сохранитьРезультат("_email")+

запроситьФайл(*сообщение).сохранитьРезультат(*переменная)

...

Code Block
breakoutModewide
запроситьФайл("Приложите файл").можноПропустить("Пропустить") +
...

Работа с API вызовами  

Шаги обращения к внешним сервисам и разбора полученных данных. В настоящее время поддерживается API вызовы REST и SOAP сервисов, планируется подключение к почтовым, FTP и прочим сервисам.

...

Code Block
breakoutModewide
// передача JSON 
вызвать.внешнийСервис("{url}", "POST").сЗаголовками(("Content-Type", "application/json")).сТеломСообщения("{\"name\":\"new document\", \"question\":\"new question\"}").сохранитьРезультат(("result", "answer_code")) +
// передача x-www-form-urlencoded
вызвать.внешнийСервис("{url}", "POST").сЗаголовками(("Content-Type", "application/x-www-form-urlencoded")).сТеломСообщения("name=new document, question=new question").сохранитьРезультат(("result", "answer_code")) +

Асинхронные API вызовы

AutoFAQ может получать и обрабатывать POST вызовы от других сервисов. Адрес выставляемого вебхука включает в себя идентификатор сервиса и идентификатор диалога в рамках которого работает сценарий.

...

Code Block
breakoutModewide
добавитьПолеВФормуОператора(
  форма = "Заведение заявки в Service Desk",
  переменная = "t1",
  название = "Описание заявки",
  тип = "Многострочный редактируемый текст",
  описание = "Опишите вашу проблему",
  обязательное = true
)

Список возможных значений параметра "тип":

  • Нередактируемый текст - вывод нередактируемого текстового сооющения на форме

  • Однострочный редактируемый текст - вывод однострочного поля для ввода

  • Многострочный редактируемый текст - вывод многострочного поля для ввода

  • Целое число - вывод поля для ввода целого числа

  • Выпадающий список - вывод поля для выбора одного значения из выпадающего списка

  • Множественный выбор - вывод поля для выбора нескольких значений из выпадающего списка

  • Переключатель - вывод переключателя, который сохранит булево значение true или false

  • Файлы - вывод поля для прикладывания файлов оператором

  • Дата - вывод поля с выбором даты (календарь)

  • Время - вывод поля для ввода времени в формате ЧЧ:ММ

  • ДатаВремя - вывод поля для ввода даты и времени (календарь и текстовое поле)

Для полей типа Выпадающий список или Множественный выбор необходимо указание параметра варианты . Данный парметр параметр должен содержать сериализованное представление списка вариантов в формате ключ-значение.

...

Code Block
breakoutModewide
установитьПеременную("slots", "{\"1\": \"Утро с 9 до 12\", \"2\": \"День с 12 до 18\", \"3\": \"Вечер с 18 до 21\", \"4\": \"Ночь с 21 до 24\"}") +
...
добавитьПолеВФормуОператора(
  форма = "Заведение заявки в Service Desk",
  переменная = "slot",
  название = "Временной слот",
  тип = "Выпадающий список",
  описание = "",
  обязательное = true,
  варианты = "{slots}"
) +
...

 

показатьФормуОператору(имя = "форма")

...