Подсистема TTS собирает первичную информацию о вызовах (анализирует поток сигнальной информации, проходящий через Core), осуществляет её накопление, обработку и формирование файлов с записями о разговорах (CDR - Call Detail Record) - CDR-файлов. Подсистема TTS работает в рамках кластера Core и состоит из трех приложений:
База данных TTS содержит следующие объекты:
Таблица 1 - Описание параметров приложения "core_trike_tts" сервиса TTS, доступные администратору виртуальной АТС
|
Команды управления сервисом TTS приведены в разделах:
Как правило, по результату обслуживания вызова системой 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-файлы сохраняются на файловой системе в следующей древовидной структуре:
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-файла имеет следующую структуру:
для режимов "time", "period":
cdr<Prefix>_<TimeStamp>_<F>.csv
cdr<Prefix>_<TimeStamp>_<FileNumber>_<F>.csv
где
<Prefix> - префикс имени файла;
<TimeStamp> - метка времени создания файла в формате (ГГГГММДД_ЧЧ_ММ_ДД);
<FileNumber> - монотонно возрастающий счетчик. Начинается с 1. Для каждого времени формирования CDR типа "counter" свой счетчик;
<F> - флаг режима файла, значения описаны в главе "Режимы генерации CDR-файлов".
Примеры имен файлов:
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 файлов, описание полей файлов см. 3.14.3 Описание полей 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
где
<DOMAIN> - имя виртуальной АТС.
Если включена подпись CDR-файла, то в CDR-файл добавляется колонка с именем SIGN, в которую для каждой записи будет записана её цифровая подпись. Кроме того, в CDR-файле будет создана CDR-запись типа "final", все поля которой, кроме "SIGN", будут пустыми. В поле "SIGN" у данной записи будет подпись всего CDR-файла.
Проверка цифровой подписи СDR-файла:
Для проверки подписи CDR-файла используется команда:
/domain/<DOMAIN>/cdr/validate --line <CDR_Line> | --file <CDR_File_Path>
где
--line <CDR_Line> - опция для проверки подписи CDR-записи, где
<CDR_Line> - имя CDR-записи;
--file <CDR_File_Path> - опция для проверки подписи CDR-файла, где
<CDR_File_Path> - имя CDR-файла.