СЛОТЫ

icon picker
Реализация циклов в сценарии | Слот Repeat

Назначение и общая информация

@Слот
Repeat и его дочерние
@Слот
ы (
@Repeat Next
,
@Repeat End
,
@Repeat Error
,
@Repeat Limit
) предназначены для выполнения цикла из заданного количества итераций в
@Сценарий
.
Слот Repeat является
@Комплексный слот
ом и не может существовать без четырех
@Дочерний слот
ов:
@Repeat Next
,
@Repeat End
,
@Repeat Error
,
@Repeat Limit
, которые начинают собственные
@Ветка сценария
.
Добавить другие дочерние
@Дочерний слот
ы невозможно.
image.png
@Лимит на количество итераций цикла одного слота Repeat
: 500 итераций.
В
@Сценарий
допустимо несколько конструкций Repeat.
@Подслот
@Repeat Next
и следующая за ним
@Ветка сценария
являются непосредственно веткой цикла.
@Сценарий
идет по этой
@Ветка сценария
до выполнения одного из следующих условий:
достигнуто установленное в
@Слот
е
@Количество итераций цикла
;
получено
@Сообщение собеседника
, в случае если в цикле нет
@Слот
а, который может его обработать;
достигнут
@Лимит на количество итераций цикла одного слота Repeat
(500 итераций) или
@Лимит на количество итераций цикла в минуту на компанию
(200 итераций).
@Подслот
@Repeat End
предназначен для продолжения
@Сценарий
когда закончился цикл, т.е. выполнено установленное в
@Слот
е
@Количество итераций цикла
, а также для выхода из цикла, если в процессе его выполнения поступило
@Сообщение собеседника
, а в цикле нет
@Слот
а, который может его обработать.
@Подслот
@Repeat Error
предназначен для продолжения
@Сценарий
в случае, если возникла ошибка выполнения цикла, когда было установлено .
@Подслот
@Repeat Limit
предназначен для выхода из цикла при достижении
@Лимит на количество итераций цикла одного слота Repeat
(500 итераций) или
@Лимит на количество итераций цикла в минуту на компанию
(200 итераций).

Создание и настройки комплексного слота Repeat

Атрибуты слота Repeat

image.png
Slot Name*название
@Слот
а, которое будет отображено в
@Дерево сценария
. Максимальная длина значения поля — 40 символов.
Number of iterations*
@Количество итераций цикла
.
Допустимые значения:
точное значение — положительное целое число или 0;
@Выражение
, дающее результат — положительное целое число или 0;
@Контекстная переменная
.
Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля Number of iterations.
При импорте конфигурационного файла
@Агент
а с невалидным значением в поле Number of iterations (см. ) будут выведены сообщения об ошибке и
@Агент
не будет импортирован в
@Платформа
. ​
image.png
Подсказка с текстом Variable {{ repeat_index }} will be used as iteration counter. It will be incremented on 1 every time subslot Next is being executed.
Кнопка Show more, по нажатию которой подсказка разворачивается.

Подслоты Repeat Next, Repeat End, Repeat Error, Repeat Limit

image.png
При создании слота автоматически генерируются четыре
@Подслот
а
@Repeat Next
,
@Repeat End
,
@Repeat Error
,
@Repeat Limit
.
Эти
@Подслот
ы не подлежат изменению и их можно удалить только с
@Родительский слот
ом.
Расположение
@Подслот
ов определяется автоматически, перемещать
@Подслот
ы нельзя:
@Подслот
@Repeat Next
всегда является самым верхним
@Подслот
ом в данном комплексном слоте;
@Подслот
@Repeat End
всегда является вторым по порядку
@Подслот
ом в данном комплексном слоте;
@Подслот
@Repeat Error
всегда является третьим по порядку
@Подслот
ом в данном комплексном слоте;
@Подслот
@Repeat Limit
всегда является самым нижним
@Подслот
ом в данном комплексном слоте.
Добавлять новые
@Подслот
ы в
@Родительский слот
Repeat нельзя.

Атрибуты подслотов

Repeat Next

image.png
Slot Nameназвание
@Слот
а, которое будет отображено в
@Дерево сценария
. По умолчанию в поле установлено значение Repeat Next. Максимальная длина значения поля — 40 символов.
Подсказка с текстом:
Variable {{ repeat_index }} is incremented on 1 every time subslot Next is being executed
If you jump to this slot {{ repeat_index }} will be incremented and loop will be continued

Repeat End

image.png
Slot Nameназвание
@Слот
а, которое будет отображено в
@Дерево сценария
. По умолчанию в поле установлено значение Repeat End. Максимальная длина значения поля — 40 символов.
Подсказка с текстом The agent goes to subslot End when the loop completes all iterations.

Repeat Error

image.png
Slot Nameназвание
@Слот
а, которое будет отображено в
@Дерево сценария
. По умолчанию в поле установлено значение Repeat Error. Максимальная длина значения поля — 40 символов.
Подсказка с текстом The agent goes to subslot Error if you set invalid value (e.g. string or negative value) as number of iterations.

Repeat Limit

image.png
Slot Nameназвание
@Слот
а, которое будет отображено в
@Дерево сценария
. По умолчанию в поле установлено значение Repeat Limit. Максимальная длина значения поля — 40 символов.
Подсказка с текстом The agent goes to slot Limit if the loop reaches the technical limit of iterations (see your subscription limits).

Использование синтаксиса в Слоте

В
@Слот
е Repeat допустимо использование
@Выражение
в поле Number of iterations. Подробнее:

Особенности валидации сценария конструкции Repeat

@Подслот
@Repeat Next
и его
@Ветка сценария
являются непосредственно веткой цикла “без блокировки”, поэтому в ней может не быть
@Блокирующий слот
, при условии, что в данной
@Ветка сценария
нет
@Слот
а
@Jump
.
При наличии в
@Ветка сценария
@Repeat Next
слота
@Jump
для
@Ветка сценария
начинают действовать обычные правила
@Валидация сценария
на отсутствие
@Блокирующий слот
ов в
@Ветка сценария
. Подробнее:
@Подслот
@Repeat Next
не может закрывать
@Ветка сценария
:
В случае, если он последний в
@Ветка сценария
, при
@Обучение
@Агент
а будет выведена ошибка
@Валидация сценария
“Незакрытые ветки сценария”. Подробнее:
@Подслот
ы
@Repeat End
,
@Repeat Error
,
@Repeat Limit
могут быть последними на
@Ветка сценария
.
В
@Ветка сценария
@Repeat Next
не может быть других
@Слот
ов
@Repeat
:
В случае, если в
@Ветка сценария
@Repeat Next
есть
@Слот
@Repeat
, при
@Обучение
@Агент
а будет выведена ошибка
@Валидация сценария
“Вложенные циклы слота Repeat”. Подробнее:

Работа слота

Для отражения номера текущей итерации цикла используется
@Системные контекстные переменные
. Нумерация итераций начинается с 0.

Запуск цикла

При попадании в
@Слот
@Repeat
устанавливается значение
, равное -1, и происходит вычисление значения
@Количество итераций цикла
в поле Number of iterations:
Если в результате вычисления получается не целое число или число меньше 0, происходит переход в
@Repeat Error
, при этом:
значение
не изменяется и остается равным -1 (цикл попытались запустить, но он ни разу не отработал);
принимает значение invalid number of iterations.
происходит
@Сброс состояния цикла
(см. )
Если в результате вычисления получается 0, происходит переход в
@Repeat End
, при этом:
значение
не изменяется и остается равным -1 (цикл попытались запустить, но он ни разу не отработал)
происходит
@Сброс состояния цикла
(см. )
Если в результате вычисления получается целое число больше 0, происходит переход в
@Repeat Next
.

Продолжение цикла

@Ветка сценария
@Repeat Next
реализует цикличный алгоритм без блокировки.
В
@Repeat Next
можно перейти:
из
@Родительский слот
а
@Repeat
;
с помощью
@Слот
а
@Jump
;
автоматически из конца
@Ветка сценария
@Repeat Next
— переход на следующую итерацию цикла.
При попадании в
@Подслот
@Repeat Next
происходит определение, куда необходимо совершить дальнейший переход, затем выполняется сам переход:
Проверяется достижение указанного в
@Слот
е
@Repeat
@Количество итераций цикла
: если значение
больше или равно числу <указанное в поле Number of iterations значение> - 1, то происходит переход в
@Ветка сценария
@Repeat End
.
Пример: в поле Number of iterations указано число 10. Т.к. нумерация итераций в
начинается с 0, то, когда
принимает значение 9, происходит переход в
@Ветка сценария
@Repeat End
.
Проверяется достижение
@Лимит на количество итераций цикла одного слота Repeat
: если значение
больше или равно
@Лимит на количество итераций цикла одного слота Repeat
:
происходит переход в
@Ветка сценария
@Repeat Limit
.
происходит
@Сброс состояния цикла
(см. )
Пример:
@Лимит на количество итераций цикла одного слота Repeat
равен 500. Если значение
равно 500 или 501, происходит переход в
@Ветка сценария
@Repeat Limit
.
Начало очередной итерации цикла: Если в предыдущих операциях не произошел выход в
@Подслот
ы
@Repeat Limit
и
@Repeat End
, то происходит увеличение значения
на 1 и переход в
@Repeat Next
.
Пример: в поле Number of iterations указано число 10. Значение
равно 3. В таком случае
принимает значение 4 и происходит переход в
@Ветка сценария
@Repeat Next
.
Между итерациями цикла введена искусственная задержка в 0,3 секунды.

Прерывание и завершение цикла

Прерывание и завершение цикла происходит:
Вследствие перехода за пределы
@Ветка сценария
@Repeat Next
с помощью
@Слот
а
@Jump
;
Пример: в данном
@Сценарий
происходит переход из
@Ветка сценария
@Repeat Next
в
@Слот
@Text
с ID 11762076.
image.png
image.png
Вследствие перевода на оператора;
Вследствие получения
@Сообщение собеседника
, для обработки которого нет
@Слот
а в
@Ветка сценария
@Repeat Next
;
Вследствие достижения
@Лимит на количество итераций цикла в минуту на компанию
;
Вследствие превышения
@Лимит на количество итераций цикла одного слота Repeat
.

Сброс состояния цикла

@Сброс состояния цикла
происходит при выходе в
@Подслот
ы
@Repeat Error
,
@Repeat End
,
@Repeat Limit
, а также при следующей
@Инициация цикла
.
При
@Сброс состояния цикла
:
цикл завершается;
в
@Контекст Чата
остаётся
, значение которой — это индекс цикла на последней выполненной итерации;
состояние цикла становится не инициированным.
Чтобы заново запустить цикл после
@Сброс состояния цикла
, в
@Сценарий
должен быть выполнен
@Слот
@Repeat
, инициирующий цикл.

Особые случаи выполнения
@Ветка сценария
@Repeat Next

В случае, если есть переход в
@Ветка сценария
@Repeat Next
с помощью
@Слот
а
@Jump
, за исключением перехода в сам
@Слот
@Repeat Next
, и
цикл инициирован:
@Общение
движется до конца
@Ветка сценария
без инкрементации
, а затем переходит в
@Ветка сценария
@Repeat Next
на следующую итерацию, согласно .
цикл не инициирован и/или не вычислено значение указанного в поле Number of iterations
@Количество итераций цикла
:
после прохождения
@Ветка сценария
@Repeat Next
до конца происходит переход в
@Ветка сценария
@Repeat Error
(за исключением случая, когда произошел выход за ее пределы с помощью
@Jump
)
После
@Сброс состояния цикла
при следующем переходе в
@Ветка сценария
@Repeat Next
с помощью
@Слот
а
@Jump
(без нового прохождения
@Слот
а
@Repeat
) после прохождения
@Ветка сценария
@Repeat Next
будет осуществлен переход в
@Ветка сценария
@Repeat Error
(при условии, что из
@Ветка сценария
@Repeat Next
нет перехода за ее пределы с помощью
@Слот
а
@Jump
).
Если в
@Ветка сценария
@Repeat Next
есть
@Change Chat Mode
, то происходит
@Закрытие диалога
и следующие итерации не выполняются.
Если в текущей итерации
@Repeat Next
нет
@Слот ожидания ввода
, но при выполнении данной итерации поступает
@Сообщение собеседника
, то после завершения текущей итерации происходит переход в
@Ветка сценария
@Repeat End
.
Если при выполнении итераций достигнут
@Лимит на количество итераций цикла в минуту на компанию
, то происходит переход в
@Ветка сценария
@Repeat Limit
, что может произойти до, после или во время выполнения итерации.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.