DialogueDetailRead
Ответ эндпоинта получения одного диалога: запись диалога и необязательные данные голосового звонка.
dialogue objectrequired
Диалог — это одна переписка между агентом и контактом в одном канале. Его состояние в жизненном цикле — узел дерева состояний, на котором он находится (last_tree_node_id): дерево каждого агента содержит фиксированный набор системных узлов (initial, attempted, started, исходы недоставки и истечения срока) рядом с узлами, которые настраивает клиент, поэтому на вопрос «где сейчас диалог» есть один ответ. В записи также отслеживаются: отключён ли бот, эпизод ожидания (pending) — это ожидание поверх узла, а не отдельный узел — и ссылки на последние сообщения пользователя и бота.
Уникальный числовой идентификатор записи.
Идентификатор продукта (рабочего пространства), которому принадлежит запись. Большинство эндпоинтов разграничивают доступ по продукту.
customer_id object
Канонический идентификатор клиента на уровне компании для общего контекста общения; null для старых диалогов, которые ещё не были сопоставлены.
- integer
- null
Идентификатор агента (настроенного ИИ-ассистента/бота), которому принадлежит запись.
Идентификатор контакта, к которому относится запись.
Время создания (UTC, ISO 8601).
Идентификатор канала, к которому относится запись.
Идентификатор чата на стороне канала, которому соответствует диалог.
last_user_msg_id objectrequired
- integer
- null
last_user_msg_at objectrequired
- date-time
- null
last_bot_msg_id objectrequired
- integer
- null
Является ли диалог активным (основным) для пары агент/контакт; вытесненные диалоги получают false.
Если true, бот не отвечает автоматически в этом диалоге (например, после передачи оператору).
pending_until objectrequired
Когда диалог в ожидании будет возобновлён (UTC). Null, если диалог не в ожидании.
- date-time
- null
pending_type object
Причина ожидания (например, follow_up, human_clarification, async_tool, custom_follow_up).
- PendingType
- null
Possible values: [follow_up, human_clarification, async_tool, custom_follow_up, future_meeting]
pending_ref object
Непрозрачная ссылка, связанная с эпизодом ожидания (id уточнения, id вызова инструмента и т. п.).
- string
- null
pending_id object
Идентификатор текущего эпизода ожидания. Перенос срока сохраняет его; новая постановка в ожидание заменяет, поэтому планировщик, действующий по эпизоду, может понять, тот ли это эпизод, что он видел.
- uuid
- null
Монотонный счётчик, увеличиваемый каждой записью жизненного цикла в диалог (переходы, постановка в ожидание и возврат, сброс). Передавайте его вместе с решением, принятым вне записи (интерфейс оператора, отложенная задача), чтобы платформа отклонила решение, если диалог за это время ушёл дальше.
0started_at objectrequired
Когда диалог впервые покинул узел initial (UTC).
- date-time
- null
ext_id objectrequired
Внешний идентификатор переписки в канале/у провайдера, если есть.
- string
- null
waba_opener_sent_after_window_num objectrequired
- integer
- null
Была ли это рассылка в уже существующий чат с контактом, а не «холодная» рассылка. Устанавливается, когда кампания переиспользует канал, в котором с контактом уже общались (опция агента persist_channel_in_outreach): для контакта это та же переписка, но платформа учитывает её в отдельном суточном лимите «sub-outreach», поскольку мессенджеры (WhatsApp, Telegram и т. д.) менее строги внутри существующих диалогов, чем к холодным рассылкам.
warmup_pair_id objectrequired
Для диалогов прогрева номера — пара прогрева, которой принадлежит диалог.
- integer
- null
Был ли диалог начат входящим сообщением от контакта.
Является ли переписка групповым чатом.
skip_response_for_user_msg_id objectrequired
- integer
- null
skip_response_until objectrequired
- date-time
- null
Идентификатор узла дерева состояний, на котором сейчас находится диалог, — его состояние в жизненном цикле. Задан всегда; узел принадлежит агенту диалога, а GET /tree/ раскрывает его название, system_kind, is_final и group. Диалог в ожидании (is_pending) остаётся на своём узле и продолжится с него.
subject objectrequired
Тема письма — для канала электронной почты.
- string
- null
Идентификаторы версий промптов — плейбуков, подключённых в этом диалоге, в порядке подключения (моделью через её инструмент или платформой по crm_fields_conditions). Список только пополняется: плейбук не отключается, на один плейбук приходится не больше одной версии, и диалог держится за неё, даже если плейбук потом отредактировали. Сопоставляйте их с enabled_version_id в списке плейбуков агента (GET /prompts/?type=playbook) или со списком версий плейбука.
Ожидает ли диалог чего-либо (времени фоллоу-апа, ответа менеджера, результата инструмента, встречи) перед следующим действием. Вычисляется из pending_until. Ожидание не перемещает диалог: last_tree_node_id по-прежнему указывает узел, на котором он продолжится.
voice_call object
Данные голосового звонка для этого диалога или null, если диалог не является голосовым звонком.
- VoiceCallRead
- null
Идентификатор диалога, к которому относится запись.
Стабильный идентификатор звонка, назначенный голосовым рантаймом.
Идентификатор голосового провайдера. Публичное значение API — voice.
voicesip_call_id objectrequired
Необязательный SIP-идентификатор звонка, если звонок шёл через SIP.
- string
- null
sip_code objectrequired
Необязательный SIP-код статуса или завершения, переданный голосовым рантаймом.
- integer
- null
Статус жизненного цикла голосового звонка — active, completed или failed.
Possible values: [active, completed, failed]
direction objectrequired
Направление звонка — входящий или исходящий.
- string
- null
Possible values: [inbound, outbound]
Когда голосовой звонок начался (UTC).
ended_at objectrequired
Когда голосовой звонок завершился (UTC), если он уже завершён.
- date-time
- null
duration_seconds objectrequired
Общая длительность звонка в секундах, если известна.
- integer
- null
recording_s3_key objectrequired
Ключ объекта S3 с записью звонка, если запись была создана.
- string
- null
usage_metadata objectrequired
Произвольные метрики использования от голосового рантайма, например счётчики токенов, аудио или провайдера.
Произвольные метрики использования от голосового рантайма, например счётчики токенов, аудио или провайдера.
latency_metadata objectrequired
Произвольные метрики задержек от голосового рантайма, например STT, LLM, TTS или end-to-end тайминги.
Произвольные метрики задержек от голосового рантайма, например STT, LLM, TTS или end-to-end тайминги.
Время создания (UTC, ISO 8601).
Время последнего изменения (UTC, ISO 8601).
{
"dialogue": {
"id": 0,
"product_id": 0,
"customer_id": 0,
"agent_id": 0,
"contact_id": 0,
"created_at": "2024-07-29T15:51:28.071Z",
"channel_id": 0,
"chat_id": "string",
"last_user_msg_id": 0,
"last_user_msg_at": "2024-07-29T15:51:28.071Z",
"last_bot_msg_id": 0,
"is_main": true,
"bot_muted": true,
"pending_until": "2024-07-29T15:51:28.071Z",
"pending_type": "follow_up",
"pending_ref": "string",
"pending_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"state_revision": 0,
"started_at": "2024-07-29T15:51:28.071Z",
"ext_id": "string",
"waba_opener_sent_after_window_num": 0,
"is_sub_outreach": true,
"warmup_pair_id": 0,
"is_incoming": true,
"is_group_chat": true,
"skip_response_for_user_msg_id": 0,
"skip_response_until": "2024-07-29T15:51:28.071Z",
"last_tree_node_id": 0,
"subject": "string",
"enabled_playbook_version_ids": [
0
],
"is_pending": true
},
"voice_call": {
"dialogue_id": 0,
"external_call_id": "string",
"provider": "voice",
"sip_call_id": "string",
"sip_code": 0,
"status": "active",
"direction": "inbound",
"started_at": "2024-07-29T15:51:28.071Z",
"ended_at": "2024-07-29T15:51:28.071Z",
"duration_seconds": 0,
"recording_s3_key": "string",
"usage_metadata": {},
"latency_metadata": {},
"created_at": "2024-07-29T15:51:28.071Z",
"updated_at": "2024-07-29T15:51:28.071Z"
}
}