История и итог звонка

История звонков

GET /calls/history/ — закончившиеся звонки линий ключа, новые первыми. У каждого те же поля, что у GET /calls/<id>/, и behaviour — краткий итог, когда запись разобрана (иначе null).

Следующая страница — с параметром cursor из next_cursor. Пустой next_cursor — это последняя страница.

ПараметрЧто находит
channel_idОдна линия ключа
since, untilНачало звонка с этого момента и до этого (ISO 8601; без пояса — UTC)
directionin — входящие, out — исходящие
answeredtrue — в звонке говорили, false — нет (пропущенный, отклонённый)
markerЗвонки с таким моментом; несколько через запятую — с любым из них (список ниже)
sideclient или ours — чей момент: клиента или наш (оператора, программы)
min_answer_wait_msКлиент хоть раз ждал ответа не меньше стольких миллисекунд
limitЗвонков на странице: по умолчанию 50, не больше 100
curl "https://dialogs.tehprof.kz/api/v1/gw/calls/history/?marker=interruption&side=ours&since=2026-11-01" \
  -H "Authorization: Bearer gw_xxx"

{ "calls": [ { "id": 5288, "direction": "in", "duration_sec": 214,
    "behaviour": { "talk_ms": { "ours": 81200, "client": 96400 },
                   "interruptions": { "ours": 3, "client": 1 }, ... } } ],
  "next_cursor": "MjAyNi0xMS0x..." }

В историю не попадают скрытые диалоги и звонки сотрудникам при переадресации на их телефоны.

Повторные звонки

У каждого звонка есть поле repeat — звонил ли этот клиент на эту линию раньше. Считаются только входящие звонки того же клиента на ту же линию.

  • count_7d — сколько раз клиент звонил на линию за 7 дней до этого звонка.
  • last_at — когда звонил в последний раз до этого; null — ни разу.
  • last_answered — в том звонке говорили. false — клиент звонит снова после пропущенного: ему стоит перезвонить первым.

Итог звонка

GET /calls/<id>/behaviour/ — разговор в числах: кто сколько говорил, как быстро отвечал, как стороны передавали друг другу слово. Считается по звуку записи звонка — без распознавания слов и без ИИ.

  • Итог есть у звонков с записью.
  • Пока итог считается, ответ — ready: false.
  • Когда итог готов, на вебхук приходит call.analysed.

Стороны: ours — оператор или программа, client — клиент. Если запись в одну дорожку (sides: 1), есть только общая речь и тишина.

ПолеЧто значит
talk_ms, overlap_ms, silence_msСколько говорила каждая сторона; обе сразу; никто
interruptionsСколько раз сторона заговорила поверх другой и не замолчала секунду и дольше
answer_wait_msmedian, max — сколько клиент ждал, пока наши ответят
turnschanges — сколько раз слово переходило к другой стороне, per_minute — то же за минуту, longest_ms — самый длинный монолог каждой стороны
response_latency_msЧерез сколько сторона начинала говорить, когда другая замолчала: median, p90, count. Меньше нуля — начала, не дождавшись конца
speech_rateСлогов в секунду, пока сторона говорит: за звонок, в первой и в последней трети
backchannelsКороткие «угу», «ага», «да» поверх речи собеседника: слушающий показывает, что слушает. Это не перебивание
filled_pausesПротяжные ровные звуки от 0,3 с: «э-э», «м-м» или растянутый слог
pitchВысота голоса: median_hz и range_st — насколько она меняется, в полутонах
loudness_dbСредняя громкость речи стороны. Зависит от уровня линии: сравнивайте внутри одного звонка
entrainmentНасколько темп, громкость и высота голоса сторон сблизились от первой трети звонка к последней: 1 — к концу говорили одинаково, 0 — без изменений, меньше нуля — разошлись
dynamicsГромкость, темп и размах высоты голоса каждой стороны по минутам
markersМоменты на ленте звонка: at_ms, kind, side, duration_ms
Момент (`kind`)Что было
interruptionГоворили одновременно дольше секунды
raised_voiceСторона говорила вдвое громче своего обычного секунду и дольше
silenceСамые долгие паузы; у паузы нет стороны
pause_after_oursПосле нашей реплики клиент молчал секунду и дольше
loudness_jumpРеплика клиента вчетверо мощнее его последних реплик
longest_monologueСамый длинный монолог каждой стороны

Поле version говорит, какие поля есть в итоге: у звонков, разобранных раньше, части полей может не быть.

Что было на стороне клиента

Итог рассказывает и о том, что было слышно у клиента: музыка ожидания, гудки, громкая связь, другой голос. Эти моменты лежат в markers с уверенностью confidence от 0 до 1, по ним тоже ищет marker в истории.

Момент (`kind`)Что было
hold_musicМузыка ожидания
repeated_promptТа же запись прозвучала снова: голосовое меню или бот повторил подсказку
ringbackТелефонные гудки на стороне клиента
client_deviceУстройство клиента по звуку: handset — трубка, speakerphone — громкая связь, headset — гарнитура. В истории — параметр device
client_voice_changedНа стороне клиента заговорил другой голос
background_changedФон стал громче или тише и таким остался: direction, delta_db

Установите TehProf Dialogs в свою CRM

Установка приложения и подключение WhatsApp по QR-коду бесплатны. Подписка на линию оплачивается отдельно.