Подсистема TTS собирает первичную информацию о вызовах (анализирует поток сигнальной информации, проходящий через Core), осуществляет её накопление, обработку и формирование файлов с записями о разговорах (CDR — Call Detail Record) — CDR-файлов. Подсистема TTS работает в рамках кластера Core и состоит из трех приложений:
База данных TTS содержит следующие объекты:
Таблица 1 — Описание параметров приложения "core_trike_tts" сервиса TTS, доступные администратору виртуальной АТС
|
Команды управления сервисом TTS приведены в разделах:
Как правило, по результату обслуживания вызова системой TTS формируется один пакет информации в CDR-файле с полной информацией о вызове.
Если вызов находится продолжительное время в фазе разговора, осуществляется формирование промежуточных записей (partial cdr). Формирование промежуточных записей производится согласно спецификации ITU-T Q.825 B.1.2 Partial records. Промежуточная CDR-запись формируется с периодичностью, задаваемой параметром "partial_cdr_timeout", по умолчанию составляет 5 минут и может быть изменена, подробное описание приведено в разделе Команды управления сервисом TTS.
В случае формирования Partial CDR в поле "rec_seq" в первой Partial CDR будет записана цифра 1, у второй — цифра 2 и так далее. В тот момент, как вызов завершится, и будет сформирована финальная запись CDR, в поле "rec_seq" будет записан 0 — это служит признаком, что данный вызов завершен. При этом у каждой Partial CDR будет собственная длительность вызова, поле "datetime" у каждой последующей Partial CDR будет равно времени формирования предыдущей Partial CDR (cоответствующие временные метки должны применяться к отдельным частичным записям, а не к вызову в целом, т. е. временная метка "end" (StartTimeStamp + длительность) записи должна совпадать с временной меткой "start" следующей записи).
Например, после ответа абонента через 5 минут происходит формирование промежуточной CDR-записи и повторный запуск таймера. Если по истечении очередного периода разговор между абонентами продолжается, то формируется следующая промежуточная CDR-запись. По завершении разговора формируется финальная CDR-запись, которая закрывает записи о вызове.
Если во время звонка абоненты пользовались услугами, формируется запись, у которой поле "type" соответствует "service", в поле "actsusb" будет записан вид услуг, которое было использовано.
Более подробное описание поля CDR в случае использования услуг приведено в разделе Управление системой CDR.
CDR-файлы сохраняются на файловой системе в следующей древовидной структуре:
domain
├─ some_domain_1
├─ default
│ └─ csv
├─ some_group_1
│ └─ csv
│ ...
└─ some_group_n
└─ csv |
Вызовы в рамках системы группируются в заданные оператором логические группы. Подкаталоги в файловой системе создаются только под существующие группы. При удалении группы папка с группой удаляется автоматически в случае, если для данной группы нет ни одного CDR-файла, иначе папку необходимо удалять вручную.
Вызовы одной группы сохраняются в файлы общей папки, определенной для этой группы на виртуальной файловой системе. Файл формируется только в момент закрытия CDR-файла. Принадлежность вызова к группе определяется принадлежностью к этой группе вызывающего абонента (абонента А) или транка, с которого поступил вызов. Определение, к какой группе относится абонент или транк, является задачей оператора.
Информация о вызове записывается в БД PostgreSQL с именем ecss_calls_db в таблицу cdr.
Сформированные CDR-файлы хранятся на виртуальной файловой системе, которая также хранится в БД PostgreSQL, доступ до которой осуществляется по протоколу FTP.
Имя CDR-файла имеет следующую структуру:
для режимов "time", "period":
cdr<Prefix>_<TimeStamp>_<F>.csv
Примеры имен файлов:
cdrAts23_20150925_11_15_00_p.csv
cdrAts23_20150925_17_00_00_1_с.csv
В системе поддерживается формат сохранения файлов с CDR-записями — csv. Это стандартный формат представления данных в табличной форме.
Первая строка в файле — список с именами колонок, которые разделяются символом разделителем (по умолчанию точка с запятой ";").
Каждая следующая строка соответствует одной CDR. В строке перечислены значения полей, разделенные символом разделителем.
Состав полей и названия колонок можно настраивать.
Файлы в этом формате имеют расширение .csv.
Набор полей при разных cdr_type: normal
extended
manual
При этом в режиме manual можно менять состав колонок и их порядок |
Кроме того, система ECSS-10 поддерживает возможность цифровой подписи СDR файлов. В этом случае в CDR-файл добавляется колонка sign, которая содержит подпись данной CDR-записи/файла. Подробнее про цифровую подпись CDR-файлов написано в главе Цифровая подпись СDR файлов, описание полей файлов см. Описание полей CSV-файла.
В ECSS-10 поддерживаются следующие режимы сохранения CDR-файлов: "count", "period", "time".
Рекомендуется устанавливать большой период закрытия файла (1 раз в сутки). При малых значениях периода (например, "count" с ограничением 10 вызовов в файле или "period" с ограничением в интервал меньше одного часа) создается очень большое количество файлов, что приводит к деградации производительности файловой подсистемы хоста, снижению производительности кластера CORE, снижению производительности последующей обработки при импорте в биллинг. Такого рода режимы можно использовать только для проверки функциональности. Также нужно производить удаление CDR-файлов после экспорта их в биллинговую систему. |
Режим "count" позволяет сохранять файлы с определенным количеством записей. В этом режиме CDR-файл будет формироваться в момент, когда количество несохраненных в CDR-файл записей типа "count" в базе достигнет заданное значение.
CDR-файлы с типом записей "count" формируются не чаще одного раза в минуту. К имени CDR-файла привязан номер сгенерированного файла. Так, например, если за 1 минуту было сформировано CDR для трех файлов, их имена будут следующие:
cdr_count_20150925_11_15_00_1_c.csv
cdr_count_20150925_11_15_00_2_c.csv
cdr_count_20150925_11_15_00_3_c.csv
"Partial_cdr" запись является отдельной записью. Возможна ситуация, когда разные части длительного вызова (в том числе вызовы по услугам) будут сохранены в разных файлах.
В имени файлов данного режима присутствует суффикс "c", указывающий на режим "count".
В режиме "period" CDR-файлы формируются каждые <N> секунд. При этом начало интервала выравнено по 01.01.1970 г. Этот режим позволяет сохранять файлы с ограничением по времени.
Для режима "period" актуально замечание о возможности разнесения записей длительных вызовов (вызовов по услугам) в разные файлы. В имени файлов данного режима присутствует суффикс "p", указывающий на режим "period".
В этом режиме CDR записываются в текущий файл, пока не наступит очередной заданный момент времени в сутках, по которому происходит закрытие текущего файла и открытие нового. Этот режим позволяет делать "нарезку" файлов в определенные моменты времени в течение суток (например, закрывать файл в 00:00).
Можно задать несколько моментов закрытия файла за сутки, они могут указываться с точностью до секунды (если секунды опущены, то они считаются равными нулю). В имени файлов данного режима присутствует суффикс "t", указывающий на режим "time".
/domain/<DOMAIN>/tts/properties/set sign_cdr_enabled true
где
Если включена подпись CDR-файла, то в CDR-файл добавляется колонка с именем SIGN, в которую для каждой записи будет записана её цифровая подпись. Кроме того, в CDR-файле будет создана CDR-запись типа "final", все поля которой, кроме "SIGN", будут пустыми. В поле "SIGN" у данной записи будет подпись всего CDR-файла.
Проверка цифровой подписи СDR-файла:
Для проверки подписи CDR-файла используется команда:
/domain/<DOMAIN>/cdr/validate --line <CDR_Line> | --file <CDR_File_Path>
где
Для управления настройками системы CDR используется интерфейс командой строки и web-интерфейс. Команды, предназначенные для управления настройками CDR, располагаются на виртуальной файловой системе CLI в директории /domain/<DOMAIN>/cdr/. Описание команд приведено в разделе Справочник команд CLI. Для управления CDR-файлами через web-конфигуратор используется приложение Менеджер cdr (Cdr manager). Порядок настройки системы CDR:
|
Создание групп производится командой:
| Если значения параметров группы при создании не были заданы, то их значения определяются из настроек домена. |
| Значения параметров для группы устанавливаются в момент создания группы. Изменение общих значений параметров для виртуальной АТС не приводит к изменению индивидуальных значений параметров для группы внутри этой АТС. |
Создание CDR-группы cdr_test для виртуальной АТС d.cargo без указания дополнительных параметров:
/domain/d.cargo/cdr/add_cdr_group cdr_test ok |
Создание CDR-группы cdr_test для виртуальной АТС d.cargo с указанием режима работы группы с разбивкой по времени (в момент времени 00:00:00 создавать новый CDR-файл):
/domain/d.cargo/cdr/add_cdr_group cdr_test mode time 00:00:00 ok |
Просмотр параметров групп производится командой:
Удаление группы производится командой:
Изменение параметров группы производится командой:
Параметр с именем "cdr_group" определяет, к какой группе относится абонент или транк. Его значение должно представлять собой строку, состоящую из символов английского алфавита и/или цифр.
Предварительно эта группа должна быть создана. Если для абонента/транка настроен параметр "cdr_group", но на текущий момент данной группы не существует (например, группа была создана, но её удалили), то вызов, поступивший от такого абонента/транка, будет отнесен к группе по умолчанию (default). Если абоненту/транку, с которого совершается вызов, не назначена группа, то настройки будут присвоены из значений по умолчанию, установленных для виртуальной АТС.
Для добавления абонента (алиаса) в определенную CDR-группу необходимо установить параметр "cdr_group" в свойствах алиаса на требуемом уровне (домена, интерфейса или определенного алиаса).
/domain/<DOMAIN>/alias/set <NUMBER> <GROUPNAME> <INTERFACE> cdr_group <CDRGroupName>
где
Пример:
Для виртуальной АТС test.domain добавляем абонента 102 (интерфейс 102@test.domain) в CDR-группу test_cdr на уровне алиаса. Логическая группа, в которую входит абонент с номером 102 — test_group:
admin@[mycelium1@ecss1]:/$ domain/test.domain/alias/set 102 test_group 102@test.domain cdr_group test_cdr There are aliases within domain test.domain affected by settings property cdr_group: 102 <-> 102@test.domain |
Для добавления вызовов с транка в определенную CDR-группу необходимо установить параметр "cdr_group" в свойствах алиаса на уровне интерфейсов.
/domain/<DOMAIN>/alias/set-for-iface <GROUPNAME> <TRUNK_NAME> cdr_group <CDRGroupName>
где
Пример:
Для виртуальной АТС d.cargo добавляем транк CITY.TRUNK в CDR-группу cdr_test:
/domain/d.cargo/alias/set-for-iface smg.gr CITY.TRUNK cdr_group cdr_test Affected ifaces in domain: d.cargo CITY.TRUNK |
При создании виртуальной АТС (описание приведено в разделе Создание виртуальной АТС (домена). Порядок настройки) значения параметров "default_format", "default_mode", "default_prefix" устанавливаются в значения по умолчанию:
default_format = csv default_mode = time, 00:00:00 default_prefix = "" |
Просмотреть значения по умолчанию можно командой:
Изменить префикс для всей АТС можно командой:
Изменить режим формирования файла для всей АТС можно командой:
Для работы с CDR-файлами через web-конфигуратор используется приложение "Cdr Manager" ("Менеджер CDR").
Описание приложения приведено в разделе Менеджер cdr (Cdr manager) или во вкладке ниже.
|
Механизм позволяет переименовывать колонки в выгружаемых файлах CDR.
Установить новое значение имени колонки:
domain/test.ats/tts/properties/set cdr_columns_name <FIXED_COLUMN_NAME> <NEW_COLUMN_NAME>
Пример использования:
domain/test.ats/tts/properties/set cdr_columns_name actsusb test_actsusb Property "cdr_columns_name" successfully changed from: actsusb = call kod_a = vcd port_a = cxz port_b = asd t_dba = answer to actsusb = test_actsusb kod_a = vcd port_a = cxz port_b = asd t_dba = answer. |
Просмотр выставленных значений:
domain/test.ats/tts/properties/info cdr_columns_name
Пример выполнения команды:
domain/test.ats/tts/properties/info cdr_columns_name ┌────────────────┬────────┬──────────────────────┐ │ Property │ Domain │ Value │ ├────────────────┼────────┼──────────────────────┤ │cdr_columns_name│test.ats│actsusb = test_actsusb│ │ │ │kod_a = vcd │ │ │ │port_a = cxz │ │ │ │port_b = asd │ │ │ │t_dba = answer │ └────────────────┴────────┴──────────────────────┘ |
Установить значение по умолчанию для конкретной колонки:
domain/test.ats/tts/properties/clean cdr_columns_name <FIXED_COLUMN_NAME>
Пример выполнения команды:
domain/test.ats/tts/properties/clean cdr_columns_name actsusb Property cdr_columns_name values successfully updated |
Установить значение по умолчанию для всех колонок:
domain/test.ats/tts/properties/clean cdr_columns_name
Пример выполнения команды:
domain/test.ats/tts/properties/clean cdr_columns_name Property cdr_columns_name values successfully restored |
Таблица 2 — Список полей CSV-файла
| Название | Описание | Доступна в режиме: | Формат |
|---|---|---|---|
| TYPE | Тип записи. | normal |
|
| DATIME | Дата и время начала вызова (если учитываются промежуточные записи, то дата и время начала этой промежуточной записи). | normal manual extended | Формат: YYYY.MM.DD HH:MM:SS. пример: 2025.07.29 14:06:21 |
| OKOD_A | Номер вызывающего (абонента А) на входе (до модификации на входящей ТГ) | manual | Строка(63). |
| OKOD_B | Номер вызываемого (абонента B) на входе (до модификации на входящей ТГ) | manual | Строка(63). |
| KOD_A | Номер абонента А после маршрутизации. При переадресации (каскадных переадресаций) номер абонента А после маршрутизации в первом плече. | normal manual extended | Строка(63). |
| KOD_B | Номер абонента B после маршрутизации. При переадресации (каскадных переадресаций) номер абонента B после маршрутизации в последнем плече. | normal manual extended | Строка(63). |
| NAI_A | Тип номера А | manual |
|
| NAI_B | Тип номера B | manual |
|
| N_TR_GR_A | Номер транка абонента А. | normal manual extended | Строка(255). |
| N_TR_GR_B | Номер транка абонента B. | normal manual extended | Строка(255). |
| T_ECD | Длительность разговора в секундах. | normal manual extended | Целое(10). |
| T_DBA | Длительность до ответа абонента B. | normal manual extended | Целое(10). |
| T_DNA | Длительность вызова в случае, когда абонент B не ответил (доступно для расширенного формата CDR). | normal manual | Целое(10). |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | normal manual extended | Целое(3), код ошибки ISUP (Cause Number). |
| CAUSE_INT | Внутренняя причина завершения вызова. | normal manual extended | Строка(63), описание приведено в разделе Приложение В. Описание внутренних причин разъединения. |
| COMPLETIND | Вызов с ответом/без ответа. | normal manual extended | 1 — вызов без ответа; 7 — вызов был отвечен. |
| ORIGIN_DIG | Реальный номер абонента А. | manual | Строка(63). |
| DIALED_DIG | Набранные абонентом цифры. | normal manual extended | Строка(63). |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | normal manual extended |
|
| CATEG_A | Категория ОКС-7 абонента А. | normal manual extended | Целое(3). |
| CATEG_B | Категория ОКС-7 абонента A после обработки, передача на сторону B | manual | Целое(3). |
| PLACE | Сторона инициатор разъединения. | normal manual extended |
|
| REC_SEQ | Последовательность записи, если вызов представлен несколькими записями. | normal manual extended | Целое(10). В случае формирования Partial CDR в поле rec_seq в первой Partial CDR будет записана цифра 1, у второй — цифра 2 и т.д. В тот момент, как вызов завершится, и будет сформирована финальная запись CDR, в поле rec_seq будет записан 0. Таким образом, это служит признаком, что данный вызов завершен. |
| SERVUSER | Номер абонента, воспользовавшегося услугой (для вызова номер абонента А). | normal manual extended | Строка(255). |
| SERVINDIC | Код услуги, для записей типа "Service". | normal manual extended | Строка(32): - 'ACB' — блокировка анонимных вызовов; - 'Alarm' — будильник; - 'AutoRedial' — автодозвон; - 'AutoRedialWithCB' — автодозвон с обратным вызовом; - 'SCR' — "черный" список номеров для входящих вызовов; - 'SCO_black' — "черный" список номеров для исходящих вызовов; - 'CallBack' — обратный вызов; - 'CFB' — переадресация по занятости; - 'CFNR' — переадресация по неответу; - 'CFOS' — переадресация по недоступности; - 'CFT' — переадресация по времени; - 'CFU' — переадресация безусловная; - 'CFU_Type2' — переадресация безусловная тип 2; - 'FindMe' — безусловная переадресация по расписанию; - 'FindMeNR' — переадресация по расписанию по неответу; - 'CGG' — вызов на группу; - 'CHOLD' — вызов на удержании; - 'HOLE' — вызов снят с удержания; - 'CHUNT' — CHUNT-группа; - 'CLIP' — выдача номера вызывающего абонента (АОН); - 'CLIR' — ограничение выдачи номера вызова вызывающего абонента; - 'CTR' — перевод вызова; - '3WAY' — трехсторонняя конференция; - 'Conference' — конференция; - 'CW' — вторая линия; - 'DirectCall' — прямой вызов; - 'DND' — не беспокоить; - 'FollowMe' — следуй за мной; - 'MCID' — злонамеренный вызов; - 'MGM' — управление услугами с ТА абонента; - 'PICKUP' — перехват вызова; - 'RBP' — ограничение исходящих вызовов; - 'Redial' — повторный набор; - 'RFC' — запрет переадресованных вызовов; - 'SpeedDial' — быстрый набор; - 'SCA' — "белый" список номеров для входящих вызовов; - 'SCO_white' — "белый" список номеров для исходящих вызовов. |
| TREATMENT | Диагностика(текстовое описание) причины завершения вызова. В случае, если пишутся partial CDR ), то поле treatment равно NULL | normal manual extended | Строка(511). |
| CONN_ID | Идентификатор вызова. | normal manual extended | Целое(33). |
| REDIRECTED | Номер при переадресации, инициатора переадресации. В случае каскадной переадресации — номер инициатора последней переадресации. | normal manual extended | Строка(63). |
| REDIRECTION | Немодифицированный номер С при переадресации. В случае каскадной переадресации — первый номер, на который была сделана переадресация (немодифицированный). | normal manual extended | Строка(63). |
| ORIG_CALLED | Первоначально набранный номер. | normal manual extended | Строка(63). |
| PORT_A | Интерфейс ECSS-10, с которого был сделан вызов. | normal manual extended | Целое(255). |
| PORT_B | Интерфейс ECSS-10, на который был сделан вызов. | normal manual extended | Целое(255). |
| SRC_IP | IP-адрес шлюза абонента А. | normal manual extended | Строка(39). |
| DST_IP | IP-адрес шлюза абонента Б. | normal manual extended | Строка(39). |
| SRC_PORT | Порт источника вызова. | manual | Целое(10). |
| DST_PORT | Порт назначения вызова. | manual | Целое(10). |
| MEDIA_PROXY | Использование проксирования медиатрафика | normal manual | Целое(1) (0 — без проксирования, 1 — проксирование используется) |
| CODEC | Список кодеков, которые были согласованы в рамках разговора (доступно в случае расширенного формата CDR). | normal manual | Текст. |
| DIAGNOSTIC | Дополнительная диагностическая информация с причиной разъединения. | normal manual extended | Строка(128). |
| DOMAIN | Имя домена | manual | Текст |
| SIGN | Электронная подпись CDR-файла/записи в CDR-файле. | Строка(88). | |
| CDR_GROUP | Имя CDR группы | manual | Текст |
| SIGNAL_SRC_IP | IP абонента А, с которого пришел вызов | manual | Строка(39). |
| SIGNAL_DST_IP | IP абонента B, на который ушел вызов | manual | Строка(39). |
| SIGNAL_SRC_PORT | Порт абонента А, с которого пришел вызов | manual | Целое(10). |
| SIGNAL_DST_PORT | Порт абонента B, на который ушел вызов | manual | Целое(10). |
| CALL_RECORD_A | Ссылка на запись разговора абонента А | manual | Строка(511). |
| CALL_RECORD_B | Ссылка на запись разговора абонента B | manual | Строка(511). |
| ISUP_SPC_A | ISUP Оригинальный сигнальный код станции сторона А | manual | Строка(14). |
| ISUP_SPC_B | ISUP Оригинальный сигнальный код станции сторона В | manual | Строка(14). |
| ISUP_DPC_A | ISUP сигнальный код станции назначения сторона А | manual | Строка(14). |
| ISUP_DPC_B | ISUP сигнальный код станции назначения сторона В | manual | Строка(14). |
| ISUP_NI_A | ISUP индикатор сигнальной сети сторона А | manual | Целое(4). |
| ISUP_NI_B | ISUP индикатор сигнальной сети сторона В | manual | Целое(4). |
| CIC_A | Номер CIC для входящего вызова. Если вызов производился не через стык SS7, поле будет пустым; | manual | Строка(15). |
| CIC_B | Номер CIC для исходящего вызова. Если вызов производился не через стык SS7, поле будет пустым; | manual | Строка(15). |
| SMG_NAI_A | индикатор, указывающие на принадлежность номера A | manual | 0 – Spare; 1 – Subscriber number; 2 – unknown; 3 – National (significant) number; 4 – International number, где: Local – Subscriber; Международняя связь – INTERNATIONAL; Межгородская связь – NATIONAL; Спецслужбы, зоновые и ведомственные – unknown. |
| SMG_NAI_B | индикатор, указывающие на принадлежность номера B | manual |
|
| DATE_TIME | Дата начала вызова в формате SMG | manual | Формат: YYYY-MM-DD HH:MM:SS. пример: 2025-07-29 14:06:21 |
| CALL_DURATION | Длительность вызова от момента поступления до релиза в сек. | manual | пример: 6 |
| TYPE_A | Тип источника абонента А | manual | user – абонент trunk – транк |
| TYPE_B | Тип источника абонента B | manual | user – абонент trunk – транк |
| START_TIME | Дата ответа в формате SMG | manual | Формат: YYYY-MM-DD HH:MM:SS. пример: 2025-07-29 14:06:23 |
| END_TIME | Дата релиза в формате как у SMG | manual | Формат: YYYY-MM-DD HH:MM:SS. пример: 2025-07-29 14:06:28 |
| REDIRECT_FLAG | Метка переадресации | manual | A → B A → B → C A → B → C |
| INF_CONNECTION | Статусы вызова при разъединении | manual | user answer – успешный вызов; user called, but unanswer – неуспешный вызов, абонент не ответил; unassigned number – неуспешный вызов, не назначенный номер; user busy – неуспешный вызов, абонент занят; uncomplete number – неуспешный вызов, неполный номер; out of order – неуспешный вызов, оконечное оборудование не доступно; unavailable trunk line – неуспешный вызов, транк недоступен; unavailable voice-chan – неуспешный вызов, нет свободных разговорных каналов; access denied – неуспешный вызов, доступ запрещен; RADIUS-response not received – неуспешный вызов, ответ от RADIUS-сервера не получен; unspecified – неуспешный вызов, другая причина. |
Таблица 3 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса CFU
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, который выполнил переадресацию (Б). | Строка. |
| KOD_B | Номер абонента, на который был переадресован вызов (С). | Строка. |
| ORIG_CALLED | Номер вызываемого абонента (Б). | Строка |
| REDIRECTED | Номер, который был переадресован (А). | Строка |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, который осуществляет переадресацию вызова. | Строка. |
| SERVINDIC | Код услуги. | CFU |
Для остальных видов переадресации (CFNR, CFB, CFT, CFOS, CFU_Type2, CFNR_Type2, FollowMe, FollowMeNR, FindMe, FindMeNR) записи аналогичны.
Таблица 4 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса CHOLD
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента А исходного вызова. | Строка. |
| KOD_B | Номер абонента B исходного вызова. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, который ставит на удержание / снимает с удержания. | Строка. |
| SERVINDIC | Код услуги. | CHOLD — постановка на удержание; HOLE — снятие с удержания |
Таблица 5 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса CTR
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, которого переводят. | Строка. |
| KOD_B | Номер абонента, на которого переводят. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, который осуществляет перевод вызова. | Строка. |
| SERVINDIC | Код услуги. | CTR |
В случае сервиса передачи вызова в CDR формируется 2 записи типа call (звонок с А на B, с B на С), одна запись типа Service с SERVINDIC = CTR.
Таблица 6 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса 3WAY
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер первого участника конференции. | Строка. |
| KOD_B | Номер второго участника конференции. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, вызвавшего сервис конференции. | Строка. |
| SERVINDIC | Код услуги. | 3WAY |
Таблица 7 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса PICKUP
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер вызывающего абонента. | Строка. |
| KOD_B | Номер вызываемого абонента. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, вызвавшего сервис pickup для перехвата вызова на вызываемого абонента. | Строка. |
| SERVINDIC | Код услуги. | PICKUP |
Таблица 8 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса CW
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, воспользовавшегося услугой CW. | Строка. |
| KOD_B | Номер абонента, который звонит по второй линии абоненту с услугой CW. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, воспользовавшегося услугой CW для приема второго вызова. | Строка. |
| SERVINDIC | Код услуги. | CW |
Активация сервиса MALICIOUS_CALL осуществляется сразу после отбоя злонамеренного вызова. |
Таблица 9 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса MALICIOUS_CALL
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, совершившего злонамеренный вызов. | Строка. |
| KOD_B | Номер абонента, на которого поступил злонамеренный вызов. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, воспользовавшегося услугой. | Строка. |
| SERVINDIC | Код услуги. | MCID |
| CONN_ID | Идентификатор (CONN_ID) злонамеренного вызова. | Строка. |
Таблица 10 — Описание полей сервисной записи CDR, которая сохраняется при использовании сервиса MGM
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, который пользуется сервисом MGM. | Строка. |
| KOD_B | Управляющие команды с ТА на активацию/деактивацию сервиса. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | activation — активация сервиса; test — проверка, активирован ли сервис; deactivation — деактивация сервиса. |
| SERVUSER | Номер абонента, который используется услугу MGM. | Строка. |
| SERVINDIC | Код услуги. | Имя сервиса, к которому сейчас применяется управляющее воздействие. |
Таблица 11 — Описание полей сервисной записи CDR, которая сохраняется при использовании сервиса Alarm
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время срабатывания сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, который пользуется сервисом Alarm. | Строка. |
| KOD_B | Пустая строка | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, который используется услугу Alarm. | Строка. |
| SERVINDIC | Код услуги. | Alarm |
Таблица 12 — Описание полей сервисной записи CDR, которая сохраняется при использовании сервиса CallBack
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время срабатывания сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, который пользуется сервисом CallBack. | Строка. |
| KOD_B | Номер абонента, на которого выполняется исходящих вызов в рамках сервиса CallBack. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, который использует услугу CallBack. | Строка. |
| SERVINDIC | Код услуги. | CallBack |
Таблица 13 — Описание полей сервисной записи CDR, которая сохраняется при использовании сервиса CHUNT
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время срабатывания сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер абонента, который позвонил на сервис CHUNT. | Строка. |
| KOD_B | Номер абонента, который принял вызов в рамках сервиса CHUNT. | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, на котором активирован сервис CHUNT, и на которого изначально был вызов. | Строка. |
| SERVINDIC | Код услуги. | CHUNT |
При работе сервиса Conference при добавлении каждого участника в конференцию формируется Service запись. Запись у которой KOD_A, KOD_B совпадают — относится к добавлению мастера в конференцию.
Таблица 14 — Описание полей сервисной записи CDR, которая сохраняется при добавлении очередного участника в конференцию (сервис Conference)
| Имя колонки | Описание | Значения |
|---|---|---|
| TYPE | Тип записи. | Service |
| DATATIME | Дата и время активации сервиса. | Формат: YYYY.MM.DD HH:MM:SS:UU. |
| KOD_A | Номер мастера(владельца) конференции. | Строка. |
| KOD_B | Номер добавленного в конференцию участника. В случае, если это поле совпадает с KOD_A — это означает, что в конференцию добавили мастера | Строка. |
| T_ECD | Длительность вызова в секундах. | 0 |
| CAUSE_ISUP | Причина завершения вызова по ОКС7. | 0 |
| ACTSUSB | Действия абонента по управлению услугой для записей типа Service. | invocation — вызов услуги. |
| SERVUSER | Номер абонента, вызвавшего сервис конференции. | Строка. |
| SERVINDIC | Код услуги. | Conference |
В рамках работ по интеграции ECSS-10 с биллинговыми системами оператора могут использоваться разные варианты передачи CDR в автоматизированные системы расчета вызовов (ACP).
В текущем разделе рассмотрены основные варианты передачи CDR в ACP:
| В данном подразделе указаны команды, которые выполняются из командной консоли управления операционной системы Linux (shell) непосредственно хоста системы ECSS-10. |
Типовым решением по передаче CDR-файлов является предоставление к ним доступа по протоколу FTP.
В данном варианте на ECSS-10 поднимается FTP-сервер. АСР выступает в роли FTP-клиента, который загружает и удаляет успешно загруженные файлы.
Настройки системных параметров FTP-сервера описаны в разделе Команды управления конфигурацией доступа до FTP-сервера с CDR-файлами.
В рамках ECSS-10 логины FTP-пользователей являются фиксированными и имеют следующие значения:
Возможные проблемы и пути решения
FTP-сервер не открывает 21 порт. В log-файле errors.log ecss-core в первых строках есть:
Unknown report: {bifrost,init_error,eacces} |
Такое может возникнуть, если во время установки ecss-core не удалось выделить права на использование портов < 1024.
Решение:
Дать соответствующие права на запускаемый файл (Тонкая настройка системы) и перезапустить ecss-core.
В определенных ситуациях будет удобен метод, когда FTP-сервер развернут в системе ACP, хост с ECSS-10 передает CDR на сервер FTP-системы ACP.
В данном варианте хост ECSS-10 выступает в роли FTP-клиента, который передает файлы на удаленный FTP-сервер, при необходимости удаляет успешно переданные файлы.
Для работы в таком режиме на сервере необходимо настроить конфигурационный сервис ecss-copycdr.
При необходимости можно включить автоматическую выгрузку cdr в определенное время, для это нужно настроить утилиту ecss-copycdr.timer.
Настройка утилиты ecss-copycdr описана в разделе Утилита ecss-copycdr.
Возможны два варианта взаимодействия системы ECSS-10 с Автоматизированной системой расчетов (далее ACP), которые отличаются только стороной инициатором взаимодействия.
Следует помнить, что в случае схемы с резервированием в системе ECSS-10 файлы CDR хранятся на всех серверах, где работают ноды кластера CORE. Подключение АСР может осуществляться к любому хосту с нодой CORE.
В определенных ситуациях будет удобен метод, когда FTP-сервер развернут в системе ACP, хост с ECSS-10 передает CDR на сервер FTP-системы ACP.
В данном варианте хост ECSS-10 выступает в роли FTP-клиента, который передает файлы на удаленный FTP-сервер, при необходимости удаляет успешно переданные файлы.
Для работы в таком режиме на сервере необходимо настроить конфигурационный сервис ecss-copycdr.
При необходимости можно включить автоматическую выгрузку cdr в определенное время, для это нужно настроить утилиту ecss-copycdr.timer.
Ecss-copycdr — утилита для переноса файлов между FTP-серверами.
Используется для копирования CDR-записей с исходного сервера на сторонний.
При первичной установке ecss-node у пользователя спросит хочет ли он установить сервис ecss-copycdr.

После согласия установки появится очередное окно с предложением ввести IP адрес сервера FTP, с которого будут собираться cdr.

После предложат ввести протокол передачи: FTP или SFTP.

Далее нужно ввести порт FTP-сервера.

Введите директорию на FTP-сервере, из которой будут передаваться cdr-записи.

Введите логин для входа на FTP-сервер.

Введите пароль для входа на FTP-сервер.

Введите IP адрес FTP-сервера, на который нужно передавать cdr-записи.

После чего предложат ввести протокол передачи: FTP или SFTP.

Введите порт для приема cdr-записей.

Введите директорию, в которой будут храниться все переданные cdr-записи.

Введите логин для входа на FTP-сервер приема cdr-записей.

Введите пароль для входа на FTP-сервер приема cdr-записей.

В случае если шаг с настройкой ecss-copycdr при установке ecss-node был пропущен, сервис всегда можно настроить через конфигурационный файл ecss-copycdr.conf, который располагается по пути /etc/ecss/.
Для работы необходимо указать адрес исходного FTP-сервера и каталог, с которого будет производиться копирование файлов, и адрес стороннего FTP-сервера и каталог, в который будут скопированы файлы.
Также для каждого сервера можно указать номер порта и тип используемого протокола: FTP/SFTP.
Эти данные необходимо указывать либо при каждом запуске утилиты, либо в файле конфигурации /etc/ecss/ecss-copycdr, в котором:
Имеется возможность удаления скопированных файлов с исходного сервера (по умолчанию скопированные файлы не удаляются, а к именам файлов добавляется метка "_transfered". Файлы с такой меткой в имени игнорируются при следующих копированиях). Опция -r, --remove указывает необходимость удаления данных.
Имеется возможность копирования пустых файлов, которые по умолчанию игнорируются (пустым файлом считается файл, в котором имеется только одна строка — заголовок csv-таблицы). Опция -e, --empty указывает необходимость переноса пустых файлов.
Опции можно также указывать либо при запуске, либо в файле конфигурации.
Запуск утилиты может осуществляться из консоли:
ecss-copycdr [ОПЦИИ] <src_host> <src_dir> <dest_host> <dest_dir>,
где
Для авторизации на сервере адреса должны быть указаны c логином и паролем в следующем формате: ftp://Login:Password@Host:Port.
Если работа должна осуществляться по другому протоколу, то указать его: sftp://Login:Password@Host:Port.
Опция -r, --remove указывает необходимость удаления данных из источника.
Опция -e, --empty указывает необходимость переноса пустых файлов.
Если заполнен файл конфигурации, то запуск может производиться без указания параметров:
ecss-copycdr [ОПЦИИ]
Запуск может осуществляться через systemd.
/lib/systemd/system/ecss-copycdr.service /lib/systemd/system/ecss-copycdr.timer |
При работе используются данные из файла конфигурации /etc/ecss/ecss-copycdr.
Для настройки времени запуска ecss-copycdr необходимо изменить в файле /lib/systemd/system/ecss-copycdr.timer строку с таймером: OnCalendar=*-*-*
Формат таймера: День Недели Год-Месяц-День Часы:Минуты:Секунды
Чтобы указать все значения используется звездочка, для перечисления значения используется запятая, для промежутка используется две точки(..).
Пример запуска каждый день в 00:00:
OnCalendar=*-*-* |
Пример запуска каждый день в 12:30:
OnCalendar=*-*-* 12:30 |
Пример запуска первые 3 дня месяца в 00:00:
OnCalendar=*-*-1..3 |
Пример запуска каждый понедельник и субботу в 12:00:
OnCalendar=Mon,Sat *-*-* 12:00 |