> ## 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.

# Цели разговора

> Что должно быть установлено в разговоре, как платформа это отмечает и чего механизм не делает.

# Цели разговора

Цели разговора — список того, что должно быть установлено в разговоре. Платформа сама отмечает выполненное и постоянно напоминает агенту, что уже подтверждено, поэтому агент не переспрашивает то, что уже получил. Напоминание живёт не в истории реплик, а в служебной части инструкции и обновляется на каждом ходу, поэтому из памяти не выпадает даже на длинном звонке.

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

* **Отслеживать цели разговора** — главный переключатель. Пока он снят или список целей пуст, механизм выключен полностью.

Каждая цель добавляется кнопкой **Добавить цель**:

| Поле                                 | Что в нём                                                                                                                                    |
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **Название**                         | человеческое имя цели — для вас, в настройках и в истории звонка                                                                             |
| **Идентификатор**                    | короткое имя латиницей, уникальное; на него ссылаются предусловия                                                                            |
| **Формулировка факта**               | текст, который увидит агент, когда цель закрыта — **утверждение о факте** («личность подтверждена»), а не поручение («подтвердить личность») |
| **Условие выполнения**               | по чему платформа поймёт, что цель выполнена; собирается конструктором условий или правится текстом                                          |
| **Значение может быть пересмотрено** | может ли этот факт впоследствии оказаться неверным                                                                                           |
| **Условие отмены**                   | появляется при включённой галочке выше: по чему факт считается опровергнутым                                                                 |
| **Обязательная**                     | учитывать ли цель в признаке «всё выяснено»                                                                                                  |
| **Предусловия**                      | другие цели, которые должны закрыться раньше, чтобы эта стала доступной                                                                      |

<img src="https://mintcdn.com/hubtalk/9ArMFeq_K4HZh-Td/images/v4_settings_goals.png?fit=max&auto=format&n=9ArMFeq_K4HZh-Td&q=85&s=6fe1e457eb303dad811b3747e6454183" alt="Секция «Цели разговора»: поля цели, условие из конструктора и карточка «Узел пройден»" width="1440" height="900" data-path="images/v4_settings_goals.png" />

## Условия и откуда берутся значения

Условие — выражение по полям звонка: `{{full_name}} exists`, `{{consent}} == "да"`, `{{amount}} > 1000`, `{{intent}} CONTAINS оплат`, `{{crm_check_success}} == true`, с `AND` и `OR`. Регистр в сравнениях не учитывается. Выражения со скобками и со смесью `AND` и `OR` правятся только текстом. Проверка «агент дошёл до шага сценария» добавляется карточкой **Узел пройден** — узел выбирается из списка.

Значения полей приходят из трёх источников: **извлечение из разговора**, **результаты обращений к вашим системам** (у каждого запроса автоматически есть `{{имя}}_success`, `{{имя}}_status`, `{{имя}}_error` плюс поля, назначенные из ответа) и **данные, известные до звонка** — переменные звонка и кампании.

## Предусловия вместо порядка

Порядок целей задать нельзя: живой человек отвечает не по списку, и механизм со строгой последовательностью с этим боролся бы. Вместо порядка — предусловия. Два следствия:

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

## Пересмотр факта

Если включено «Значение может быть пересмотрено» и задано условие отмены, то при его истинности цель перестаёт быть закрытой, зависящие от неё цели снова становятся недоступными, признак «все цели закрыты» гаснет, а в истории появляется событие «Отметка цели снята» с причиной. Снимать что-либо руками не нужно: состояние пересчитывается на каждом ходу, и при повторном подтверждении цель закроется снова.

Выбор обязателен в обе стороны: без пересмотра условие отмены запрещено — чтобы не появлялись условия-заглушки, которые выглядят защитой, но ничего не защищают.

## Признак «все обязательные цели закрыты»

Когда закрыты все цели, отмеченные обязательными, платформа выставляет признак. Необязательные цели его не удерживают.

**Звонок при этом не завершается автоматически** — разговор редко заканчивается на последней галочке, и автоматический обрыв давал бы звонки, оборванные на полуслове. Как воспользоваться признаком, решаете вы: поставьте на нужном переходе условие-формулу `goals_completed()` и ведите его в блок прощания, к передаче оператору или к финальному подтверждению.

Признак «все цели закрыты» и оценка успешности звонка — **разные вещи**: они считаются независимо и обе видны в записи. Первое означает «всё запланированное выяснено», второе — «звонок успешен по вашему критерию».

<Note>
  Состояние целей пересчитывается один раз в конце каждого хода. Поэтому цель, закрытая ответом на текущей реплике, попадает в сводку и в признак начиная со **следующего** хода. Задержка ровно в одну реплику — это нормально, а не сбой.
</Note>

## Что видно в истории звонка

В хронологии разговора появляются события **Цель закрыта** (видно, на какой реплике), **Отметка цели снята** (с причиной: сработало условие отмены, условие выполнения перестало быть истинным или отозвано предусловие) и **Ошибка условия цели**. Кроме событий сохраняется итоговая картина: какие цели закрыты и на какой реплике, какие остались открытыми, какие были сняты и почему, стоял ли признак «всё выяснено». Отдельного сводного экрана и статистики по целям за период пока нет; данные записываются с первого дня и будут доступны за прошедший период, когда экран появится.

## Ошибки

Черновик принимает любой структурно целый документ, поэтому недописанная цель сохранится — но **заблокирует публикацию агента и тестовый звонок**. Блокирующие причины: не заполнено название, идентификатор, условие выполнения или формулировка факта; условие написано с ошибкой и не может быть проверено; два идентификатора совпадают; предусловие ссылается на несуществующую цель или на саму себя; предусловия образуют круг (A требует B, B требует A); галочка «может быть пересмотрено» не согласована с условием отмены; в условии цели использован `goals_completed()` — цель зависела бы от собственного результата. В каждом случае видно причину и название цели.

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

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

* **Не работает с агентами на моделях «речь-в-речь» (realtime)**: такие агенты не заполняют поля по ходу разговора, а без полей проверять нечего. Галочку включить можно, эффекта не будет.
* **Не заменяет обязательные раскрытия.** Уведомление о записи разговора, идентификация до обсуждения долга и подобные требования — не цели: цель подсказывает агенту, а подсказку можно проигнорировать. Там, где произнести что-то обязательно, нужен жёсткий маршрут в сценарии; цели могут отражать состояние раскрытия, но не обеспечивают его.
* **Не навязывает порядок разговора** и **не завершает звонок сам**.
* **В жёстком сценарии** поле заполняется только когда разговор дошёл до шага с извлечением или до обращения к вашей системе: цель на поле, которое сценарий нигде не заполняет, не закроется. У агентов свободного режима такого ограничения нет.
* **Цели настраиваются на агенте** и версионируются вместе с ним (черновик и опубликованная версия).
