Настройка парсинга CDR

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (33)

просмотр истории страницы
{toc}

h1. Создание VOIP NAS

cdr_dst_chan=6
cdr_src_chan=7
cdr_date_format="%Y-%m-%d %H:%M:%S"
cdr_suid=8
cdr_date_format=%Y-%m-%d %H:%M:%S
{code}
После внесения изменений файл должен выглядеть так:

h1. Описание возможных параметров

{note}
{note}{*}Счет полей идет с ноля\!*
Например, имеем следующую CDR:
{code}71110000001;72220000002;2018-02-12 10:00:00;2018-02-12 10:04:08;248;248;subscribers;world{code}
{code}
71110000001;72220000002;2018-02-12 10:00:00;2018-02-12 10:04:08;248;248;subscribers;world
{code}
Номер источника 71110000001, номер назначения 72220000002, время начала звонка "2018-02-12 10:00:00", время завершения "2018-02-12 10:04:08". В main.ini это будет выглядеть следующим образом:
{code}
cdr_s_time=2 -- 2018-02-12 10:00:00
cdr_e_time=3 -- 2018-02-12 10:04:08
{code}{note}
{note}

* cdr_delimiter=; -- Разделитель cdr файла
{info}
* Разделитель должен быть "печатаемым" символом. Это значит, что символ пробела " " или табуляции "\t" нельзя использовать в качестве разделителя
* Это ограничение связано с тем, что файл конфигурации обрабатывается библиотекой [ConfigParser|https://docs.python.org/2.7/library/configparser.html], она удаляет проблемы из начала и конца текста, текст только из пробелов удалит полностью
{info}
* cdr_src_orig=1 \--Кто набирал номер
{info}
В случае, если код города и номер приходят в разных полях и нужно настроить парсинг для src номера по двум полям - можно использовать следующие настройки:
*cdr_src_area* - поле для кода города
*cdr_src_body* - поле для номера без учета кода города.
При этом поле *cdr_src_orig* должно отсутствовать в файле main.ini
{info}
* cdr_dst_orig=2 -- Куда набирал(номер)
{info}
В случае, если код города и номер приходят в разных полях и нужно настроить парсинг для dst номера по двум полям - можно использовать следующие настройки:
*cdr_dst_area* - поле для кода города
*cdr_dst_body* - поле для номера без учета кода города.
При этом поле *cdr_dst_orig* должно отсутствовать в файле main.ini
{info}
* cdr_duration=5 -- длительность звонка полная
cdr_bill_sec=6 -- длительность разговора.
{info}
Если не указано поле для bill_sec, но есть дата-время начала и конца звонка, то длительность будет рассчитана как разница между ними (e_time - s_time)
{info}
* cdr_nas_ip=7 -- nas ip, необязательное поле, NAS может определяться по директории в которую загружены CDR
* cdr_suid=8 -- уникальный id сессии/звонка
* cdr_dst_chan=9 -- Оператор(канал) кому ушел звонок(текстовая метка, например MEGAFON)
* cdr_src_chan=10 \--Оператор(канал) откуда пришел звонок(текстовая метка, например ROSTELEKOM)
* cdr_s_time=3 -- Время начала звонка
* cdr_e_time=4 -- Время конца звонка
cdr_date_format="%Y-%m-%d %H:%M:%S"
* cdr_date_format=%Y-%m-%d %H:%M:%S
* cdr_s_datetime_date=17 - дата начала звонка, если есть только s_time, дата и время начала звонка находятся в разных полях
* cdr_s_datetime_time=18 - время начала звонка, если есть только s_time, дата и время начала звонка находятся в разных полях
* cdr_duration_time=19 - если продолжительность звонка передаётся в формате "%H:%M:%S"
* cdr_add_chan_prefix=1 - если включена эта опция - к транкам *dst_chan* и *src_chan* будет добавляться префикс в виде id этого nas'а по формату <*nas_id*>src_chan и <*nas_id*>dst_chan, например dst_chan=ROSTELECOM, NAS_ID=1113, тогда в базу попадет значение *1113ROSTELECOM*
{info}
{info}* * Формат s_time задается в cdr_date_format, с ограничением на порядок: s_datetime_date, пробел, s_datetime_time
* cdr_delimiter указывается без кавычек (*';'* - неправильно, *;* - правильно), как в примерах выше{info}
{info}

h1. Логика работы поля cdr_suid
1) SUID - уникальный идентификатор сеанса связи
2) Если в cdr не передан SUID, то он будет сгенерирован как MD5 от полей 'src_orig', 'dst_orig', 'bill_sec', 'e_time'
3) Есть возможность указать свой список полей для генерации SUID. Для этого необходимо добавить в main.ini параметр *suid_fields* и далее значения через запятую. Передаваться может как имя поля (например s_time), т.к. и порядковый номер поля из cdr(отсчет идет с 0). Пример параметра в файле:
{code}
suid_fields=0,s_time,e_time,src_orig,dst_orig
{code}

h1. Отладка

Отладка описана в [статье|FAQ по ошибкам телефонии#Ошибки обработки cdr].