---
title: "Блок «Вызов цепочки»: вложенные сценарии | tuk-tuk.online"
nav_title: "Вызов цепочки"
url: https://docs.tuk-tuk.online/chains/blocks/call-chain
markdown: https://docs.tuk-tuk.online/chains/blocks/call-chain.md
section: "Блоки"
description: "Блок CALL_CHAIN: запуск другой цепочки из текущей, передача и возврат переменных, защита от циклических вызовов."
keywords: ["вызов цепочки", "CALL_CHAIN блок", "вложенная цепочка", "модульный бот", "подцепочка", "рекурсия бот"]
lang: ru
product: tuk-tuk.online
app: https://lk.tuk-tuk.online
api_base: https://back.tuk-tuk.online
---

> [!AI] Кратко
> Блок CALL_CHAIN запускает другую цепочку из текущей, передаёт ей переменные и возвращает выбранные переменные обратно; позволяет переиспользовать сценарии как модули.
>
> - Настройки: выбор цепочки, список передаваемых переменных, список возвращаемых переменных (через запятую)
> - Пустой список означает «все переменные» и для передачи, и для возврата
> - Возвращённые переменные перезаписывают значения в контексте текущей цепочки
> - Циклические вызовы (A вызывает B, B вызывает A) не выполняются, ошибка пишется в лог
>
> Связанные страницы: https://docs.tuk-tuk.online/chains/blocks, https://docs.tuk-tuk.online/chains/blocks/set-variable, https://docs.tuk-tuk.online/chains/blocks/ai-process, https://docs.tuk-tuk.online/chains

# Вызов цепочки

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

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

## Настройки

| Поле | Описание |
|---|---|
| Цепочка | Какую цепочку вызвать, выбор из списка |
| Передаваемые переменные | Имена переменных через запятую, которые получит вложенная цепочка. Пусто: передаются все |
| Возвращаемые переменные | Имена переменных через запятую, которые вернутся в текущую цепочку. Пусто: возвращаются все |

Пример заполнения:

```text
Передать:  aiResult, lastMessage, name, phone
Вернуть:   aiResult, var_1
```

Возвращённые значения перезаписывают одноимённые переменные в контексте текущей цепочки.

## Как выполняется

1. Текущая цепочка доходит до блока: запускается выбранная вложенная цепочка.
2. Вложенная цепочка получает указанные переменные и выполняется до конца.
3. Возвращаемые переменные записываются в контекст текущей цепочки.
4. Текущая цепочка продолжается со следующего блока.

## Пример

Модуль «Сбор контактов» как отдельная цепочка:

```text
Отправка: «Как вас зовут?»  → Ожидание ответа → Переменная var_1 = {{lastMessage}}
Отправка: «Ваш телефон?»    → Ожидание ответа → Переменная var_2 = {{lastMessage}}
```

Основная цепочка вызывает модуль:

```text
Отправка: «Давайте оформим заявку»
Вызов цепочки: «Сбор контактов», вернуть var_1, var_2
Отправка: «Спасибо, {{var_1}}! Мы перезвоним на {{var_2}}»
```

Переиспользование AI-квалификации:

```text
Вызов цепочки: «AI-квалификация», передать lastMessage, вернуть aiResult
Условие: {{aiResult}} содержит «горячий»?
  Да    → Отправка: «Менеджер свяжется через 5 минут»
  Иначе → Отправка: «Отправляю каталог»
```

## Ограничения

- Циклические вызовы блокируются: если цепочка A вызывает B, а B вызывает A, вложенная цепочка не запустится, в лог запишется ошибка.
- Общие лимиты выполнения (200 блоков за запуск и другие) описаны на странице [Типы блоков](https://docs.tuk-tuk.online/chains/blocks).
