Руководство по биллингу Call Detail Record (CDR)

Введение

Руководство по биллингу объясняет структуру записей детализации звонков Call Detail Record (CDR) в таблице cdrbilling. Это позволяет создавать дашборды в Grafana и других BI-инструментах.

Условия и положения биллинга

Биллинг применяется только к исходящим внешним вызовам. Это стоимость внешнего вызова по отношению с АТС в конкретной записи CDR. Биллинг хранится в таблице cdrbilling, которая полем cdr_id связана с родительской таблицей cdroutput. Только у отвеченных CDR может быть биллинг. Параметры "Call Cost" (см. Настройка интерфейса биллинга) должны быть правильно настроены, чтобы данные биллинга сохранялись в таблице cdrbilling.


Таким образом, биллинг может быть в CDR со следующими параметрами:

  • source_entity_type / destination_entity_type = external_line
  • source_participant_is_incoming / destination_participant_is_incoming = false
  • cdr_answered_at = NOT NULL


Биллинг детализации звонков (CDR Billing) не зависит от записей данных о вызовах (CDR - Call Data Records) и не предоставляет поле стоимости биллинга. Вместо этого стоимость биллинга можно рассчитать для каждого участника на основе кода биллинга, тарифа биллинга и длительности биллинга (см. далее в разделе Практические примеры SQL).

Руководство по биллингу - поля

Эти поля определяют информацию для каждого вызова CDR с биллингом.

cdr_id:

  • Описание: Уникальный идентификатор для конкретной записи CDR. Это поле связано с полем cdr_id в родительской таблице cdroutput.
  • Детали формата:
  • object_creation_timestamp_string: 16-значное, дополненное нулями, шестнадцатеричное представление временной метки UTC с начала эпохи.
  • object_id_string: Дополненное нулями, шестнадцатеричное представление автоинкрементного счетчика. Счетчик специфичен для типа объекта (CDR, call_history_id или участник).
  • Пример: 00000000-01db-aef6-c109-60ec0000004c

source(destination)_bill_code:

source(destination)_bill_rate_name:

  • Описание: Название тарифа биллинга участника. Значение из столбца "Country Name" в настройках "Call Costs". См. Настройка интерфейса биллинга.
  • Пример: United States/Canada; Germany; Australia

source(destination)_bill_rate:

source(destination)_bill_duration:

  • Описание: Длительность биллинга участника. Основана на длительности разговора (поля cdr_answered_at, cdr_ended_at в CDR).
  • Пример: 00:00:30.000000 (30 секунд); 00:01:00.000000 (1 минута)…
  • См.: PostgreSQL interval

migrated:

  • Описание: Зарезервировано. Не используется.

Практические примеры SQL

Стоимость для участника CDR

SELECT

        -- all cdr fields

        c.*,

        -- all billing fields

        b.*,

        -- source participant cost

        b.source_bill_rate * EXTRACT(EPOCH FROM b.source_bill_duration::interval)/60 AS source_participant_bill_cost,

        -- destination participant cost

        b.destination_bill_rate * EXTRACT(EPOCH FROM b.destination_bill_duration::interval)/60 AS destination_participant_bill_cost

FROM public.cdroutput AS c

LEFT JOIN public.cdrbilling AS b ON

        b.cdr_id = c.cdr_id

ORDER BY c.cdr_id;

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

Дополнительная информация

Версия документа

Последнее обновление документа 15 мая 2025

https://www.3cx.ru/docs/call-record-billing-guide/