Понятия, определения

Описание принципа работы

Принцип работы TTS

Подсистема TTS собирает первичную информацию о вызовах (анализирует поток сигнальной информации, проходящий через Core), осуществляет её накопление, обработку и формирование файлов с записями о разговорах (CDR — Call Detail Record) — CDR-файлов. Подсистема TTS работает в рамках кластера Core и состоит из трех приложений:

  1. ct_trike_tts_server — базовый сервис, занимающийся накоплением и обработкой первичной информации, формированием CDR-записей и записью их в БД;
  2. ct_trike_cdr_server — сервис занимается генерацией CDR-файлов на основе сформированных подсистемой ct_trike_tts_server-записей;
  3. tts_ftp_server — FTP-сервер, использующий БД MySQL в качестве файловой системы. Это приложение предоставляет доступ к файлам CDR, сгенерированным приложением "ct_trike_cdr_server" по протоколу FTP.

База данных TTS содержит следующие объекты:

Таблица 1 — Описание параметров приложения "core_trike_tts" сервиса TTS, доступные администратору виртуальной АТС

НазваниеЗначение по умолчаниюОписание
actual_calls_archive_size1000Количество завершенных вызовов, которое будет хранить сервис service_actual_calls.
actual_calls_enabledtrueОпределяет, включен (true) или выключен (false) сервисе истории вызовов (будет или нет история вызовов сохраняться в базу).
adaptationundefinedтекущая адаптация
autoclean_enabledtrueОпределяет, активирована ли автоочистка.
autoclean_start_atevery 1 day at 00:00Определяет время и периодичность запуска автоочистки.
Задается в следующих видах:
- every <N> (day/week/month/year) at <HH:MM>, где <N> — автоочистка будет срабатывать каждые <N> дней (недель, месяцев, лет соответственно) в заданное время с небольшой погрешностью, необходимой, чтобы при большом количестве доменов не создать большую нагрузку на сервер MySQL. Например, значение "every 1 day at 00:00" означает, что автоочистка будет запускаться каждый день около полуночи.
- at <DD.MM.YYYY HH:MM:SS> — автоочистка сработает в заданное время, после чего задача автоматически удалится. Например, "at 22.12.2014 15:00:00" означает, что необходимо выполнить очистку 22 декабря 2014 года ровно в 15:00.
cdr_columns_name
Команда позволяет изменить название колонки <column> на новое
cdr_generation_enabledtrueОпределяет, включена (true) или выключена (false) запись CDR в БД и генерации CDR-файлов.
cdr_field_delimitersemicolonРазделитель полей CDR:
tab — символ Tab (\t);
space — пробел ( );
comma — запятая (,);
semicolon — точка с запятой (;).
cdr_typenormalОпределяет формат создаваемых CDR-файлов: расширенный (extended), обычный (normal) или задаваемый вручную (manual). Расширенный режим отличается от обычного дополнительными полями:
- CODEC — список кодеков;
- T_DNA — время ожидания ответа абонента при неотвеченном вызове, в секундах.
В manual режиме список колонок создаваемого CDR-файла берется из свойства manual_cdr_columns
cdr_time_roundingdownsideОпределяет режим округления времени при записи CDR-файлов. Доступные значения:
downside — округление в меньшую сторону путем, берется только прошедшее целое количество секунд (2999мс округляется до 2-x секунд);
upside — округление в большую сторону путем. Если количество миллисекунд в последней секунде > 0 — считается эту секунду (1001мс округляется до 2-x секунд);
downside_with_delta — округление в меньшую сторону, если количество миллисекунд в последней секунде <= 850, иначе, округляем в большую сторону. Замечание: если весь вызов длился более 200мс, но меньше 1 секунды — то время вызова будет равно 1 секунде;
upside_with_delta — округление в большую сторону, если количество миллисекунд в последней секунде >= 330, иначе, округляем в меньшую сторону. Замечание: если весь вызов длился более 200мс, но меньше 1 секунды — то время вызова будет равно 1 секунде;
mathematically — математическое округление. Если количество миллисекунд в последней секунде >= 500 — округляем в большую сторону, иначе — в меньшую;
millisecond — записываем время в CDR в миллисекундах.
manual_cdr_columns

type, datetime, kod_a, kod_b, nai_a, nai_b, n_tr_gr_a, n_tr_gr_b, t_ecd, t_dba, t_dna, cause_isup, cause_int, completind, origin_dig, dialed_dig, actsusb, categ_a, place, rec_seq, servuser, servindic, treatment, conn_id, redirected, redirection, orig_called, src_ip, dst_ip, port_a, port_b, diagnostic, call_record_a, call_record_b, codec, src_port, dst_port, media_proxy, signal_src_ip, signal_dst_ip, signal_src_port, signal_dst_port

Задается список колонок, которые будут присутствовать в CDR-файле. При этом колонки будут в том порядке, в каком они заданы.
enabledtrueОпределяет, включен (true) или выключен (false) сервис TTS (история вызовов, запись CDR).
partial_cdr_timeout300Период, по истечении которого в базе данных создается запись с информацией о вызове. Также параметр задает периодичность, с которой будут выгружаться "partial CDR", в секундах.
port_sourceiface_name

Формат записи имен интерфейсов:

iface_name — в CDR/tollticket будет записано имя интерфейса;

iface_id — в CDR/tollticket будет записано id интерфейса.

purge_older_than2 monthПериод времени, по истечении которого записи в базе данных будут удалены. Значение может быть задано в часах (hour[s]), днях (day[s]), неделях (week[s]), месяцах (month[s]), годах (year[s]).
sign_cdr_enabledfalseОпция, при включении которой (значение "true") будет производиться цифровая подпись CDR-файлов и отдельных записей в рамках CDR-файлов. В CDR-файл будет добавлена колонка с именем SIGN, в которой для каждой записи будет прописана её цифровая подпись. Кроме того, в CDR-файле будет создана CDR-запись типа "final", все поля которой, кроме "SIGN", будут пустыми. В поле "SIGN" у данной записи будет подпись всего CDR-файла.


Команды управления сервисом TTS приведены в разделах:

Принцип работы системы сбора CDR

Как правило, по результату обслуживания вызова системой TTS формируется один пакет информации в CDR-файле с полной информацией о вызове. 
Если вызов находится продолжительное время в фазе разговора, осуществляется формирование промежуточных записей (partial cdr).
Промежуточная 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.
Например, после ответа абонента через 5 минут происходит формирование промежуточной CDR-записи и повторный запуск таймера. 
Если по истечении очередного периода разговор между абонентами продолжается, то формируется следующая промежуточная CDR-запись. По завершении разговора формируется финальная CDR-запись, которая закрывает записи о вызове.
Если во время звонка абоненты пользовались услугами, формируется запись, у которой поле "type" соответствует "service", в поле 
"actsusb" будет записан вид услуг, которое было использовано. Более подробное описание поля CDR в случае использования услуг приведено в разделе Управление системой CDR.

Группировка CDR, структура папок и файлов

CDR-файлы сохраняются на файловой системе в следующей древовидной структуре:

domain
 ├─ some_domain_1
    ├─ default
    │  └─ csv
    ├─ some_group_1
    │  └─ csv
    │  ...
    └─ some_group_n
       └─ csv

Вызовы в рамках системы группируются в заданные оператором логические группы. Подкаталоги в файловой системе создаются только под существующие группы. При удалении группы папка с группой удаляется автоматически в случае, если для данной группы нет ни одного CDR-файла, иначе папку необходимо удалять вручную.
Вызовы одной группы сохраняются в файлы общей папки, определенной для этой группы на виртуальной файловой системе. Файл формируется только в момент закрытия CDR-файла. Принадлежность вызова к группе определяется принадлежностью к этой группе вызывающего абонента (абонента А) или транка, с которого поступил вызов. Определение, к какой группе относится абонент или транк, является задачей оператора.

Информация о вызове записывается в БД MySQL с именем ecss_calls_db в таблицу cdr
Сформированные CDR-файлы хранятся на виртуальной файловой системе, которая также хранится в БД MySQL, доступ до которой осуществляется по протоколу FTP.

Имя CDR-файла имеет следующую структуру:

Примеры имен файлов:

cdrAts23_20150925_11_15_00_p.csv
cdrAts23_20150925_17_00_00_1_с.csv

Формат CDR-файлов

В системе поддерживается формат сохранения файлов с CDR-записями — csv. Это стандартный формат представления данных в табличной форме.

Первая строка в файле — список с именами колонок, которые разделяются символом разделителем (по умолчанию точка с запятой ";").
Каждая следующая строка соответствует одной CDR. В строке перечислены значения полей, разделенные символом разделителем.
Состав полей и названия колонок можно настраивать.

Файлы в этом формате имеют расширение .csv.

Набор полей при разных cdr_type:

normal

  • type
  • datetime
  • kod_a
  • kod_b
  • n_tr_gr_a
  • n_tr_gr_b
  • t_ecd
  • t_dba
  • cause_isup
  • cause_int
  • completind
  • dialed_dig
  • actsusb
  • categ_a
  • place
  • rec_seq
  • servuser
  • servindic
  • treatment
  • conn_id
  • redirected
  • redirection
  • orig_called
  • src_ip
  • dst_ip
  • port_a
  • port_b
  • diagnostic

extended

  • type
  • datetime
  • kod_a
  • kod_b
  • n_tr_gr_a
  • n_tr_gr_b
  • t_ecd
  • t_dba
  • t_dna
  • cause_isup
  • cause_int
  • completind
  • dialed_dig
  • actsusb
  • categ_a
  • place
  • rec_seq
  • servuser
  • servindic
  • treatment
  • conn_id
  • redirected
  • redirection
  • orig_called
  • src_ip
  • dst_ip
  • port_a
  • port_b
  • media_proxy
  • diagnostic
  • codec

manual

  • type
  • datetime
  • kod_a
  • kod_b
  • nai_a
  • nai_b
  • n_tr_gr_a
  • n_tr_gr_b
  • t_ecd
  • t_dba
  • cause_isup
  • cause_int
  • completind
  • origin_dig
  • dialed_dig
  • actsusb
  • categ_a
  • place
  • rec_seq
  • servuser
  • servindic
  • treatment
  • conn_id
  • redirected
  • redirection
  • orig_called
  • src_ip
  • dst_ip
  • port_a
  • port_b
  • diagnostic
  • signal_src_ip
  • signal_dst_ip
  • signal_src_port
  • signal_dst_port
  • call_record_a
  • call_record_b

При этом в режиме manual можно менять состав колонок и их порядок

Кроме того, система ECSS-10 поддерживает возможность цифровой подписи СDR файлов. В этом случае в CDR-файл добавляется колонка sign, которая содержит подпись данной CDR-записи/файла. Подробнее про цифровую подпись CDR-файлов написано в главе Цифровая подпись СDR файлов, описание полей файлов см. Описание полей CSV-файла.

Режимы генерации CDR-файлов

В ECSS-10 поддерживаются следующие режимы сохранения CDR-файлов: "count", "period", "time".

Рекомендуется устанавливать большой период закрытия файла (1 раз в сутки).

При малых значениях периода (например, "count" с ограничением 10 вызовов в файле или "period" с ограничением в интервал меньше одного часа) создается очень большое количество файлов, что приводит к деградации производительности файловой подсистемы хоста, снижению производительности кластера CORE, снижению производительности последующей обработки при импорте в биллинг. Такого рода режимы можно использовать только для проверки функциональности. Также нужно производить удаление CDR-файлов после экспорта их в биллинговую систему.

Режим "count"

Режим "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"

В режиме "period" CDR-файлы формируются каждые <N> секунд. При этом начало интервала выравнено по 01.01.1970 г. Этот режим позволяет сохранять файлы с ограничением по времени.

Для режима "period" актуально замечание о возможности разнесения записей длительных вызовов (вызовов по услугам) в разные файлы. В имени файлов данного режима присутствует суффикс "p", указывающий на режим "period".

Режим "time"

В этом режиме CDR записываются в текущий файл, пока не наступит очередной заданный момент времени в сутках, по которому происходит закрытие текущего файла и открытие нового. Этот режим позволяет делать "нарезку" файлов в определенные моменты времени в течение суток (например, закрывать файл в 00:00).

Можно задать несколько моментов закрытия файла за сутки, они могут указываться с точностью до секунды (если секунды опущены, то они считаются равными нулю). В имени файлов данного режима присутствует суффикс "t", указывающий на режим "time".

Цифровая подпись СDR-файлов

Система ECSS-10 может производить цифровую подпись CDR-файлов и отдельных записей в рамках CDR-файлов. Для этого необходимо включить цифровую подпись CDR-файлов командой:

/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

Для управления настройками системы CDR используется интерфейс командой строки и web-интерфейс.

Команды, предназначенные для управления настройками CDR, располагаются на виртуальной файловой системе CLI в директории /domain/<DOMAIN>/cdr/. Описание команд приведено в разделе Справочник команд CLI.

Для управления CDR-файлами через web-конфигуратор используется приложение Менеджер cdr (Cdr manager).

Если система в кластере, предварительно должна быть настроена Репликация БД MySQL.

Порядок настройки системы CDR:

  1. Настройки TTS;
  2. Создание и настройка CDR-группы;
  3. Добавление алиаса (абонента) или транка в определенную CDR-группу.

Настройка системы сбора CDR через CLI

Создание CDR-группы

Создание групп производится командой:


Если значения параметров группы при создании не были заданы, то их значения определяются из настроек домена.


Значения параметров для группы устанавливаются в момент создания группы. Изменение общих значений параметров для виртуальной АТС не приводит к изменению индивидуальных значений параметров для группы внутри этой АТС.
  1. Создание CDR-группы cdr_test для виртуальной АТС d.cargo без указания дополнительных параметров:

    /domain/d.cargo/cdr/add_cdr_group cdr_test                               
    ok


  2. Создание 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-группу

Параметр с именем "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

Конфигурирование режимов генерации CDR-файла

При создании виртуальной АТС (описание приведено в разделе Создание виртуальной АТС (домена). Порядок настройки) значения параметров "default_format", "default_mode", "default_prefix" устанавливаются в значения по умолчанию:

default_format = csv
default_mode = time, 00:00:00
default_prefix = "" 

Просмотреть значения по умолчанию можно командой:

Изменить префикс для всей АТС можно командой: 

Изменить режим формирования файла для всей АТС можно командой: 

Настройка системы сбора CDR через web-конфигуратор

Для работы с CDR-файлами через web-конфигуратор используется приложение "Cdr Manager" ("Менеджер CDR").
Описание приложения приведено в разделе Менеджер cdr (Cdr manager) или во вкладке ниже.


Менеджер cdr (Cdr manager)


Система переименования колонок CDR

Механизм позволяет переименовывать колонки в выгружаемых файлах 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

Описание полей CSV-файла

Таблица 2 — Список полей CSV-файла

НазваниеОписаниеФормат
TYPEТип записи.
  • -Call — вызов;
  • -Service — запись о срабатывании услуг в рамках вызова.
DATIMEДата и время начала вызова.Формат: YYYY.MM.DD HH:MM:SS.
NAI_AТип номера А
  • subscriberNumber;
  • unknown;
  • nationalNumber;
  • internationNumber;
  • spare.
NAI_BТип номера B
  • subscriberNumber;
  • unknown;
  • nationalNumber;
  • internationNumber;
  • spare.
KOD_AНомер абонента А после маршрутизации. При переадресации (каскадных переадресаций) номер абонента А после маршрутизации в первом плече.Строка(63).
KOD_BНомер абонента B после маршрутизации. При переадресации (каскадных переадресаций) номер абонента B после маршрутизации в последнем плече.Строка(63).
N_TR_GR_AНомер транка абонента А.Строка(255).
N_TR_GR_BНомер транка абонента B.Строка(255).
T_ECDДлительность разговора в секундах.Целое(10).
T_DBAДлительность до ответа абонента Б.Целое(10).
T_DNAДлительность вызова в случае, когда абонент Б не ответил (доступно для расширенного формата CDR).Целое(10).
CAUSE_ISUPПричина завершения вызова по ОКС7.Целое(3), код ошибки ISUP (Cause Number).
CAUSE_INTВнутренняя причина завершения вызова.Строка(63), описание приведено в разделе Приложение Г. Описание внутренних причин разъединения.
COMPLETINDВызов с ответом/без ответа.1 — вызов без ответа;
7 — вызов был отвечен.
ORIGIN_DIGРеальный номер абонента А.Строка(63).
DIALED_DIGНабранные абонентом цифры.Строка(63).
ACTSUSBДействия абонента по управлению услугой для записей типа Service.
  • test — проверка услуги;
  • activation — активация услуги;
  • deactivation — деактивация услуги;
  • invocation — использование услуги;
  • registration — регистрация услуги;
  • erasure — очистка услуги.
CATEG_AКатегория ОКС-7 абонента А.Целое(3).
PLACEСторона инициатор разъединения.
  • 0 — система;
  • 1 — вызывающая сторона;
  • 2 — вызываемая сторона.
REC_SEQПоследовательность записи, если вызов представлен несколькими записями.Целое(10). В случае формирования Partial CDR в поле rec_seq в первой Partial CDR будет записана цифра 1, у второй — цифра 2 и т.д. В тот момент, как вызов завершится, и будет сформирована финальная запись CDR, в поле rec_seq будет записан 0. Таким образом, это служит признаком, что данный вызов завершен.
SERVUSERНомер абонента, воспользовавшегося услугой (для вызова номер абонента А).Строка(255).
SERVINDICКод услуги, для записей типа "Service".Строка(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Строка(511).
CONN_IDИдентификатор вызова.Целое(33).
REDIRECTEDНомер при переадресации, инициатора переадресации. В случае каскадной переадресации — номер инициатора последней переадресации.Строка(63).
REDIRECTIONНемодифицированный номер С при переадресации. В случае каскадной переадресации — первый номер, на который была сделана переадресация (немодифицированный).Строка(63).
ORIG_CALLEDПервоначально набранный номер.Строка(63).
SRC_IPIP-адрес шлюза абонента А.Строка(39).
DST_IPIP-адрес шлюза абонента Б.Строка(39).
PORT_AИнтерфейс ECSS-10, с которого был сделан вызов.Целое(255).
PORT_BИнтерфейс ECSS-10, на который был сделан вызов.Целое(255).
SRC_PORTПорт источника вызова.Целое(10).
DST_PORTПорт назначения вызова.Целое(10).
DIAGNOSTICДополнительная диагностическая информация с причиной разъединения.Строка(128).
CODECСписок кодеков, которые были согласованы в рамках разговора (доступно в случае расширенного формата CDR).Текст.
SIGNЭлектронная подпись CDR-файла/записи в CDR-файле.Строка(88).
MEDIA_PROXYИспользование проксирования медиатрафикаЦелое(1) (0 — без проксирования, 1 — проксирование используется)
SIGNAL_SRC_IPIP абонента А, с которого пришел вызовСтрока(39).
SIGNAL_DST_IPIP абонента B, с на который ушел вызовСтрока(39).
SIGNAL_SRC_PORTПорт абонента А, с которого пришел вызовЦелое(10).
SIGNAL_DST_PORTПорт абонента B, на который ушел вызовЦелое(10).
CALL_RECORD_AСсылка на запись разговора абонента АСтрока(511).
CALL_RECORD_BСсылка на запись разговора абонента BСтрока(511).

Примеры формата записей в случае услуг

CFU

Таблица 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) записи аналогичны.

CHOLD/HOLE

Таблица 4 — Описание полей сервисной записи CDR, которая сохраняется при активации сервиса CHOLD

Имя колонкиОписаниеЗначения
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Код услуги.CHOLD — постановка на удержание; HOLE — снятие с удержания

CTR

Таблица 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 (звонок с А на Б, с Б на С), одна запись типа Service с SERVINDIC = CTR.

3WAY

Таблица 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

PICKUP

Таблица 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

CW

Таблица 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

MCID

Активация сервиса 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) злонамеренного вызова.Строка.

MGM (Управление услугами с телефонного аппарата)

Таблица 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Код услуги.Имя сервиса, к которому сейчас применяется управляющее воздействие.

Alarm

Таблица 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

CallBack

Таблица 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

CHUNT

Таблица 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

При работе сервиса 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

Примеры CDR

Взаимодействие c ACP

В рамках работ по интеграции ECSS-10 с биллинговыми системами оператора могут использоваться разные варианты передачи CDR в автоматизированные системы расчета вызовов (ACP).

В текущем разделе рассмотрены основные варианты передачи CDR в ACP:

  1. ACP самостоятельно вычитывает CDR с FTP-сервера на хосте с ECSS-10.
  2. CDR-файлы передаются с сервера ECSS-10 на FTP-сервер системы ACP согласно расписанию.
В данном подразделе указаны команды, которые выполняются из командной консоли управления операционной системы Linux (shell) непосредственно хоста системы ECSS-10.

Настройка FTP-сервера для доступа к CDR

Типовым решением по передаче 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.

Утилита ecss-copycdr

В определенных ситуациях будет удобен метод, когда FTP-сервер развернут в системе ACP, хост с ECSS-10 передает CDR на сервер FTP-системы ACP.
В данном варианте хост ECSS-10 выступает в роли FTP-клиента, который передает файлы на удаленный FTP-сервер, при необходимости удаляет успешно переданные файлы.

Для работы в таком режиме на сервере необходимо настроить конфигурационный сервис ecss-copycdr.
При необходимости можно включить автоматическую выгрузку cdr в определенное время, для это нужно настроить утилиту ecss-copycdr.timer.

Настройка утилиты ecss-copycdr описана в разделе Утилита ecss-copycdr.

Взаимодействие с Автоматизированной системой расчетов по протоколу FTP

Возможны два варианта взаимодействия системы ECSS-10 с Автоматизированной системой расчетов (далее ACP), которые отличаются только стороной инициатором взаимодействия.

  1. Если АСР работает как FTP-клиент, то АСР инициирует FTP соединение с необходимой ей периодичностью и выполняет все процессы по подчистке CDR-файлов.
  2. Если АСР работает как FTP-сервер, то система ECSS-10 устанавливает соединение с АСР с заданной в конфигурации периодичностью, выполняет функции копирования и последующего удаления CDR-файлов.

Следует помнить, что в случае схемы с резервированием в системе ECSS-10 файлы CDR хранятся на всех серверах, где работают ноды кластера CORE. Подключение АСР может осуществляться к любому хосту с нодой CORE.

Утилита ecss-copycdr

В определенных ситуациях будет удобен метод, когда FTP-сервер развернут в системе ACP, хост с ECSS-10 передает CDR на сервер FTP-системы ACP.
В данном варианте хост ECSS-10 выступает в роли FTP-клиента, который передает файлы на удаленный FTP-сервер, при необходимости удаляет успешно переданные файлы.

Для работы в таком режиме на сервере необходимо настроить конфигурационный сервис ecss-copycdr.
При необходимости можно включить автоматическую выгрузку cdr в определенное время, для это нужно настроить утилиту ecss-copycdr.timer.

Настройка сервиса ecss-copycdr

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.timer

Для настройки времени запуска 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