Реализация циклов в сценарии | Слот Repeat
Last updated
Last updated
Слот Repeat и его дочерние Слоты (Repeat Next, Repeat End, Repeat Error, Repeat Limit) предназначены для выполнения цикла из заданного количества итераций в Сценарий агента.Слот Repeat является Комплексный слотом и не может существовать без четырех Дочерний слотов: Repeat Next, Repeat End, Repeat Error, Repeat Limit которые начинают собственные Ветка сценария.Добавить другие дочерние Дочерний слоты невозможно.
Лимит на количество итераций цикла одного слота Repeat: 500 итераций.В Сценарий агента допустимо несколько конструкций Repeat.
Подслот Repeat Next и следующая за ним Ветка сценария являются непосредственно веткой цикла. Сценарий агента идет по этой Ветка сценария до выполнения одного из следующих условий:
достигнуто установленное в Слоте Количество итераций цикла;
получено Сообщение собеседника, в случае если в цикле нет Слота, который может его обработать;
достигнут Лимит на количество итераций цикла одного слота Repeat (500 итераций) или Лимит на количество итераций цикла в минуту на компанию (200 итераций).
Подслот Repeat End предназначен для продолжения Сценарий агента когда закончился цикл, т.е. выполнено установленное в Слоте Количество итераций цикла, а также для выхода из цикла, если в процессе его выполнения поступило Сообщение собеседника, а в цикле нет Слота, который может его обработать.Подслот Repeat Error предназначен для продолжения Сценарий агента в случае, если возникла ошибка выполнения цикла, когда было установлено невалидное количество итераций.Подслот Repeat Limit предназначен для выхода из цикла при достижении Лимит на количество итераций цикла одного слота Repeat (500 итераций) или Лимит на количество итераций цикла в минуту на компанию (200 итераций).
Slot Name*ー название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
Number of iterations* ー Количество итераций цикла.
Допустимые значения:
точное значение — положительное целое число или 0;
Выражение, дающее результат — положительное целое число или 0;
Контекстная переменная.
Обрезка пробелов: по нажатию кнопки CREATE (при создании слота) или SAVE (при редактировании слота) обрезаются пробелы и переносы строк в начале и в конце поля Number of iterations.
При импорте конфигурационного файла Агента с невалидным значением в поле Number of iterations (см. п. 2а) будут выведены сообщения об ошибке и Агент не будет импортирован в Платформа.
Подсказка с текстом 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.
Эти Подслоты не подлежат изменению и их можно удалить только с Родительский слотом.
Расположение Подслотов определяется автоматически, перемещать Подслоты нельзя.
Добавлять новые Подслоты в Родительский слот Repeat нельзя.
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
Slot Nameー название Слота, которое будет отображено в Дерево сценария. По умолчанию в поле установлено значение Repeat End. Максимальная длина значения поля — 40 символов.
Подсказка с текстом The agent goes to subslot End when the loop completes all iterations.
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.
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_index. Нумерация итераций начинается с 0.
При попадании в Слот Repeat устанавливается значение repeat_index, равное -1, и происходит вычисление значения Количество итераций цикла в поле Number of iterations:
Если в результате вычисления получается не целое число или число меньше 0, происходит переход в Repeat Error, при этом:
значение repeat_index не изменяется и остается равным -1 (цикл попытались запустить, но он ни разу не отработал);
error принимает значение invalid number of iterations.
Если в результате вычисления получается 0, происходит переход в Repeat End, при этом:
значение repeat_index не изменяется и остается равным -1 (цикл попытались запустить, но он ни разу не отработал)
происходит Сброс состояния цикла (см. Сброс состояния цикла)
Если в результате вычисления получается целое число больше 0, происходит переход в Repeat Next.
Ветка сценария Repeat Next реализует цикличный алгоритм без блокировки.
При попадании в Подслот Repeat Next происходит определение, куда необходимо совершить дальнейший переход, затем выполняется сам переход:
Проверяется достижение указанного в Слоте Repeat Количество итераций цикла: если значение repeat_index больше или равно числу <указанное в поле Number of iterations значение> - 1, то происходит переход в Repeat End.
Пример: в поле Number of iterations указано число 10. Т.к. нумерация итераций в repeat_index начинается с 0, то, когда repeat_index принимает значение 9, происходит переход в Repeat End.
Проверяется достижение Лимит на количество итераций цикла одного слота Repeat: если значение repeat_index больше или равно Лимит на количество итераций цикла одного слота Repeat:
происходит переход в Ветка сценария Repeat Limit .
Пример: Лимит на количество итераций цикла одного слота Repeat равен 500. Если значение repeat_index равно 500 или 501, происходит переход в Repeat Limit.
Начало очередной итерации цикла: Если в предыдущих операциях не произошел выход в Подслоты Repeat Limit и Repeat End, то происходит увеличение значения на 1 и переход в Repeat Next.
Пример: в поле Number of iterations указано число 10. Значение repeat_index равно 3. В таком случае repeat_index принимает значение 4 и происходит переход в Repeat Next.
Между итерациями цикла введена искусственная задержка в 0,3 секунды.