Руководство по биллингу 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:
- Описание: Код биллинга участника. Значение из столбца "Prefix" в настройках "Call Costs" (см. Настройка интерфейса биллинга).
- Пример: 001; 00113; 177…
source(destination)_bill_rate_name:
- Описание: Название тарифа биллинга участника. Значение из столбца "Country Name" в настройках "Call Costs". См. Настройка интерфейса биллинга.
- Пример: United States/Canada; Germany; Australia…
source(destination)_bill_rate:
- Описание: Тариф биллинга участника. Значение из столбца "Rate" в настройках "Call Costs". См. Настройка интерфейса биллинга.
- Пример: 1; 1.0; 1.5; 3.0…
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.
Дополнительная информация
- Использование CDR - Call Data Records
- Руководство по Call Detail Record (CDR)
Версия документа
Последнее обновление документа 15 мая 2025
