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

# Функции после звонка

> Условие выполнения, переменные call и analysis, ожидание пост-аналитики и проверка условия без звонка.

# Функции после звонка

Функции после звонка выполняются один раз при финализации — с итоговыми переменными, сводкой звонка и результатом пост-аналитики. Общего бюджета у блока нет, но есть потолок ожидания оценки разговора.

## Условие выполнения

В форме функции после звонка есть поле **«Выполнять, только если»** — по умолчанию пусто, что означает «всегда». Условие пишется на том же языке, что условия переходов между узлами:

| Задача                              | Условие                                                           |
| ----------------------------------- | ----------------------------------------------------------------- |
| Только по успешным звонкам          | `{{analysis.call_successful}} == true`                            |
| Только по неуспешным                | `{{analysis.call_successful}} == false`                           |
| Не трогать CRM для коротких звонков | `{{call.duration}} > 30`                                          |
| Успешный и длиннее 30 секунд        | `{{analysis.call_successful}} == true AND {{call.duration}} > 30` |

На карточке под названием появится строка «если …» с вашим выражением. Ложное условие означает, что функция **не вызывается вообще**: в истории событие со статусом «пропущено» и пометкой «пропущено по условию», переменные результата не пишутся. Условие проверяется до бюджета, поэтому пропущенная функция времени блока не тратит.

<img src="https://mintcdn.com/hubtalk/9ArMFeq_K4HZh-Td/images/v4_pipeline_post_when_field.png?fit=max&auto=format&n=9ArMFeq_K4HZh-Td&q=85&s=15113bf49de2c541004b1f8c688ef8a6" alt="Поле «Выполнять, только если» с подсказкой переменных аналитики" width="350" height="341" data-path="images/v4_pipeline_post_when_field.png" />

## Что доступно в переменных

Кроме итоговых переменных звонка функциям после звонка доступны две зарезервированные:

**`call`** — сводка звонка: тот же объект, что уходит в вебхук `call_ended` (направление, номера, длительность, статус, причина завершения, транскрипт).

**`analysis`** — результат пост-аналитики:

| Поле                            | Значение                                                          |
| ------------------------------- | ----------------------------------------------------------------- |
| `analysis.status`               | `done`, `skipped`, `disabled`, `pending`, `failed`, `interrupted` |
| `analysis.reason`               | причина, например `analytics_disabled`                            |
| `analysis.summary`              | краткое содержание разговора                                      |
| `analysis.sentiment`            | тональность                                                       |
| `analysis.call_successful`      | признак успешного звонка                                          |
| `analysis.custom_fields.<поле>` | поля, которые вы завели в пост-аналитике агента                   |

Ключи присутствуют всегда, содержательные поля заполнены только при `status = "done"`.

Вложенные значения берутся точкой и работают не только в условии, но и внутри самого запроса: `{{analysis.summary}}` можно положить в тело сообщения менеджеру, `{{call.duration}}` — в поле CRM. Словарь целиком (`{{call}}`, `{{analysis}}`) подставляется как JSON.

## Когда они выполняются

Функции после звонка ждут, пока система закончит оценивать разговор, но не дольше **60 секунд** (значение настраивается на уровне платформы).

* Пост-аналитика выключена или пропущена по исходу — функции выполняются сразу, `analysis.status` будет `skipped`.
* Оценка ещё в очереди — блок откладывается и выполняется, как только оценка завершится; задержка после её завершения — секунды.
* Оценка не успела за отведённое время — функции выполняются с `analysis.status = "pending"`, и поздний результат их уже не перезапустит.

Появление событий в истории через десяток секунд после конца звонка — норма, а не сбой.

## Проверить условие без звонка

Результата аналитики до звонка не существует, поэтому пробный прогон функции после звонка получает заглушку. Раскройте **«Заглушку аналитики»** над кнопками проверки: там переключатель **«Звонок успешен»**, выбор **«Тональности»** и поле **«Краткое содержание»**. Меняйте их, запускайте проверку и смотрите строку «Условие: выполнено» или «Условие: не выполнено» — она появляется, только если условие задано.

<img src="https://mintcdn.com/hubtalk/9ArMFeq_K4HZh-Td/images/v4_pipeline_post_condition.png?fit=max&auto=format&n=9ArMFeq_K4HZh-Td&q=85&s=f2fcad81783762bd7c6f6c77697ba438" alt="Заглушка аналитики и строка «Условие: выполнено»" width="307" height="494" data-path="images/v4_pipeline_post_condition.png" />
