> ## Documentation Index
> Fetch the complete documentation index at: https://docs.riggery.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Предыдущие узлы

> Что отдаёт узел и как следующий узел берёт Result или именованное поле.

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

<h2 id="insert">
  Вставить значение
</h2>

У поля, которое это поддерживает, **Вставить значение** (плюс) открывает **Предыдущие узлы** и, если поле допускает секреты, хранилище.

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

Строка выглядит как `Узел: Поле`. Клик вставляет `{{…}}`. Если на графе один триггер, в меню и в токене `Trigger`. Пример: **Trigger: Chat ID** вставляет `{{Trigger.chatId}}`.

<Note>
  Два и больше триггеров: в меню kind (**Message**, **Webhook**, `imap_poll trigger`, `cron trigger`, `manual trigger`). В токене id этого узла вместо `Trigger`.
</Note>

Переименуйте инструмент или агента в **Имя** — токен следует за уникальным именем: узел `Files extract` даёт `{{Files extract.text}}`. Два узла с одним именем: в токене id узла.

Если среди входящих узлов нет триггера, в списке ещё **Test input (Manual node)** → `{{Input}}` (**Тестовый ввод** у Ручного или текст запуска).

<h2 id="default">
  Пустое поле
</h2>

Оставьте поле пустым — часть узлов берёт **Result** каждого непосредственного предыдущего узла, склеенный пустой строкой. Так работает **Пользовательский промпт** агента. Так же ведут себя несколько инструментов (на странице инструмента сказано, можно ли оставлять пустым).

По умолчанию всегда **Result** (основной текст узла). Это не **Chat ID**, не **Files** и не другое именованное поле.

У **Telegram send** пустой **Текст** берёт предыдущий Result (тело сообщения). Пустой **ID чата** — это не **Trigger: Chat ID** и не предыдущий Result. Вставьте **Trigger: Chat ID**, если id должен прийти из триггера. (Запуск из Telegram всё ещё может подставить id входящего чата.)

Поле, которому **нужно** значение, запасной путь не использует. **ID файла** у [Files extract](/ru/graph/tools/files-extract#file-id) такое: пустое поле — ошибка.

<h2 id="result">
  Result
</h2>

**Result** — основной текст узла. Его видно в **Смотреть результаты**.

Подпись вставки: **Result** (у триггеров своё имя: **Message text**, **Body**, **Input text**, **Summary**). Поле токена `text`. Голый `{{Files extract}}` тоже даёт этот текст; **Вставить значение** всегда пишет форму с полем (`{{Files extract.text}}`).

Агент, условие и каждый инструмент сейчас отдают в **Предыдущие узлы** только **Result**. Именованные поля триггера — на **Выходе** этого триггера. Соедините триггер с узлом, иначе его полей в списке не будет.

<h2 id="tools">
  Агенты и инструменты
</h2>

**Предыдущие узлы** показывает одну строку на каждый входящий агент, условие или инструмент: **`Имя`: Result**.

Текст — вывод **Смотреть результаты** этого узла. Result у [Files extract](/ru/graph/tools/files-extract#output) — markdown-сводка, не строки таблиц. В State таблицы попадают через [State import from file](/ru/graph/tools/state-import-from-file) с тем же **ID файла**.

<h2 id="attachments">
  Photos и Files
</h2>

**Photos** и **Files** подставляются как JSON-массив вложений, не как один **ID файла**.

```json theme={null}
[{"id":"cmtzo4vku002vaxpvc1p9irxo","name":"rates.csv","mimeType":"text/csv","kind":"file"}]
```

`id` — непрозрачный идентификатор, который нужен [Files extract](/ru/graph/tools/files-extract#file-id). `name` — имя файла; инструменты с полем **ID файла** имя файла не принимают. `kind`: `photo`, `file` или `email_part`.

Не вставляйте **Trigger: Files** в **ID файла**. Скопируйте один `id`, оставьте **Решает агент**, или разберите массив в [Code](/ru/graph/tools/code).
