Versions Compared

Key

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

...

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

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

.можноПропустить(*сообщение)

...

Модификатор шага выводит для пользователя кнопку, по которой сценарий перестанет требовать файл. В качестве аргумента принимается название кнопки в виде текста или переменной, которая содержит текст. Пользователь увидит кнопку с названием, заданным в сценарии.

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

Шаги работы с внешними сервисами  

...

Code Block
breakoutModewide
если("{error} == 1").или("{connection_mistakes} == 1").то(
   сообщениеПользователю.сШаблоном("Система не отвечает")
)+

...

установитьМетку(*название)

...

перейтиНаМетку(*метка)

Шаг установки метку перехода на установленную в коде сценария метку.

Code Block
breakoutModewide
// перети на метку не более 3 раз, на 4 раз шаг перехода не сработает 
  
если("{error} == 0").и("{connection_mistakes} == 0если("{error} == 0").и("{connection_mistakes} == 0").то(
   // переход на метку без указания лимита переходов, используется значение по-умолчанию 30
   перейтиНаМетку("раз") 
) +
...        

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

...

Шаг отображения формы оператора. Шаг отобразит форму со всеми установленными ранее полями. Сценарий отобразит форму и будет ожидать пока оператор не нажмет на форме кнопку “Отмена” или “Продолжить”. После нажатия кнопки “Отмена” сценарий прекратит свою работу. После нажатия кнопки “Продолжить” сценарий продолжит свою работу со следующего шага. Все заполненные поля будут доступны в сценарии по имени переменной.

Code Block
breakoutModewide
показатьФормуОператору(имя = "Заведение заявки в Jira") +
если("{slot} == 4").то(
  комментарий("Требуется ночной формат работ") 
) +

...

Шаги работы с группами

определитьИдентификаторГруппы(*

...

переменная)

Шаг определения текущей группы диалога. В качестве аргумента шаг принимает название переменной куда будет установлен текстовый идентификатор текущей группы диалога.

Code Block
breakoutModewide
определитьИдентификаторГруппы("chatGroupId") +
если("{chatGroupId} == 1234-abcd-5678").то(
  комментарий("Диалог попал  ...в группу второй линии")
) +

перевестиНаГруппу(*

...

идентификатор).иЗавершить

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

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

  • если смена группы произошла в сценарии поступления диалога в систему, то после завершения сценария диалог запустит приветствие данной группы, а после переведет запрос в базы знаний;

  • если смена группы произошла в сценарии приветствия, то после зщавершения завершения сценария диалог передаст запрос в базы знаний;

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

Code Block
breakoutModewide
задатьПользователюВопрос("Привет! Подскажи кому передать твой запрос?").сВариантамиОтвета("HR", "IT").сохранитьРезультат("UserSaid")+
если("{UserSaid} == HR").то(
	сообщениеПользователю.сШаблоном("Ок, перевожу запрос в HR отдел") +
	перевестиНаГруппу("1b514696-b033-41f4-88cd-91a5649b4f13").иЗавершить
) +
...

перевестиНаГруппу(*

...

идентификатор).иЗавершитьСНовымЗапросом(*

...

запрос)

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

В качестве аргумента для перевестиНаГруппу указывается идентификатор группы, в которую необходимо перевести диалог. Идентификатор каждой группы можно выяснить в разделе Настройки - Группы. Если в сервисе не будет обнаружено группы с таким идентификатором, то перевод на группу будет проигнорирован.

...

Code Block
breakoutModewide
задатьПользователюВопрос("Привет! Подскажи что тебя интересует?").сохранитьРезультат("UserSaid")+
перевестиНаГруппу("1b5146961234-b033-41f4-88cd-91a5649b4f13abcd-56789").иЗавершитьСНовымЗапросом("{UserSaid}")

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

перевестиНаГруппу(*

...

идентификатор).иЗавершитьИПеревестиНаОператора

...

Шаг завершения

...

завершить

Операция завершения сценария.

...

breakoutModewide

...

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

В качестве аргумента для перевестиНаГруппу указывается идентификатор группы, в которую необходимо перевести диалог. Идентификатор каждой группы можно выяснить в разделе Настройки - Группы. Если в сервисе не будет обнаружено группы с таким идентификатором, то перевод на группу будет проигнорирован.

Code Block
перевестиНаГруппу("1234-abcd-56789").иЗавершитьИПеревестиНаОператора

По результатам выполнения данного шага диалог будет передан в указанную группу и назначен на операторов этой группы.

...

Шаги завершения сценария

завершить

Шаг завершения сценария. По результатам выполнения этого шага текущий сценарий будет завершен. После завершения сценария диалог продолжит работу в зависимости от места выполнения шага:

  • если завершен сценарий при поступлении диалога в систему, то диалог будет переведен в приветствие, а после него диалог передаст запрос в базы знаний и болталку;

  • если завершен сценарий приветствия, то диалог передаст запрос в базы знаний и болталку;

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

Code Block
breakoutModewide
вызвать.внешнийСервис("{url}", "POST").сПараметрами(("accessKey", "{accessKey}")).сТеломСообщения("{"email":"{myEmail}"}").сохранитьРезультатКакСтроку("res")+
если("{http_code} > 210").то(
  комментарий("Сервис вернул ошибку, завершаю работу") +
  завершить
)+

...

завершитьСНовымЗапросом("вопрос")

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

Code Block
breakoutModewide
задатьПользователюВопрос("Что еще вы хотели узнать ?").сохранитьРезультат("what")+
завершитьСНовымЗапросом("{what}")

завершитьИПеревестиНаОператора

...

 хотели узнать?").сохранитьРезультат("what") +
завершитьСНовымЗапросом("{what}")

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

завершитьИПеревестиНаОператора

Шаг завершения текущего сценария и перевода диалога в очередь оператору. Запрос будет обработан по стандартной процедуре, так как если бы этот запрос написал пользователь и он сразу попал в очередь оператору.

...

Диалог будет передан в очередь входящих для назначения на оператора согласно настройкам сервиса.

Code Block
если("{message} == Переключи на оператора").то(
   сообщениеПользователю.сШаблоном("Переключаю диалог на оператора!") +
   завершитьИПеревестиНаОператора
) +
...

завершитьИЗакрытьДиалог()

Операция Шаг завершения текущего сценария и закрытия всего диалога. Следующая реплика пользователя создаст новый диалог.

...