> ## 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_decision`        | `proceed` — набирать, `cancel` — не звонить, `retry` — отложить |
| `call_decision_reason` | текст причины, до 200 символов                                  |
| `call_retry_after`     | секунды или момент времени в ISO-8601                           |

На карточке такой функции появляется пометка **«Эта функция решает, что делать со звонком»**, а в форме — подсказка с набором значений.

Что происходит с контактом:

| Решение   | Набор           | Попытка контакта   | Запись в истории                                                                                  | Вебхук              |
| --------- | --------------- | ------------------ | ------------------------------------------------------------------------------------------------- | ------------------- |
| `proceed` | идёт            | расходуется        | обычная                                                                                           | обычные             |
| `cancel`  | не отправляется | **не расходуется** | сессия с нулевой длительностью, статус «не соединён», причина `cancelled_by_function` и ваш текст | `call_ended` уходит |
| `retry`   | не отправляется | не расходуется     | **нет вовсе**                                                                                     | **нет**             |

Где смотреть результат:

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

У отложенного контакта записи в истории нет намеренно: одному человеку система может ответить «позже» десять раз, и десять пустых звонков были бы шумом. След остаётся строкой попытки контакта у дайлера.

Срок повтора: ваш `call_retry_after`, иначе интервал из политики повторов кампании. Значение меньше 60 секунд поднимается до 60 — иначе набор превратился бы в цикл запросов к вам. Повтор позже конца кампании закрывает контакт как исчерпанный.

<Note>
  **Решение работает только в кампаниях.** У входящих, web-звонков и звонков из кабинета или через публичный API оно игнорируется: в событиях появится «решение действует только при наборе из кампании», а звонок пойдёт как обычно. Отказ на входящем звонке выражается сценарием: условие и переход к завершающему узлу.
</Note>

**Незнакомое значение и сбой означают «звонить».** Опечатка в поле даёт `proceed` с предупреждением в событии; таймаут или ошибка вашего сервиса тоже не отменяют набор. Правило осознанное: пропущенный звонок дороже неполного контекста.

**Если ваша система сломалась** и начала отменять всё подряд, кампания сама встанет на паузу — чтобы не «обработать» весь список без единого звонка. По умолчанию защита срабатывает, когда отменены все последние 20 решений. Снять с паузы нужно вручную, разобравшись с причиной.
