Создание специальных форм отчетов для CUCM
В настоящей статье мы рассмотрим примеры создания форм отчетов с использованием Дизайнера Форм Отчетов системы Tariscope для расширенных параметров CDR формата от Cisco Unified Communications Manager (CUCM). Под расширенными параметрами подразумеваются те поля CDR файлов от CUCM, которые не используются в целях тарификации вызовов. Они, как правило, не попадают в представление Tariscope, но содержатся в исходных CDR файлах, и при соответствующей настройке в Tariscope обрабатываются и сохраняются в базе данных Tariscope. Их информация может быть полезна для выполнения различных анализов, отличных от анализа затрат на телефонные разговоры. Также эта статья может быть полезна просто как пример по самостоятельному созданию необходимых форм отчетов в системе Tariscope.
Заметим, что кроме Дизайнера форм отчетов, для создания форм отчетов для Tariscope можно использовать Microsoft SQL Server Report Builder.
Несколько слов о Дизайнере Форм Отчетов
Дизайнер форм отчетов является программой, входящей в состав биллинговой системы Tariscope, которая предназначена для редактирования пользователем Tariscope форм отчетов, входящих в инсталляционный пакет, или создания собственных форм отчетов, графиков, процедур, работающих с базой данных.
Форма отчета представляет собой шаблон отчета, содержащий его структуру в виде таблицы, каждая из ячеек которой может содержать текстовую информацию, рисунки, переменные величины или функции. Каждая из ячеек может иметь собственные параметры формата: шрифт текста, заливку, границы. В качестве переменных величин могут выступать переменные, созданные пользователем, определенные поля из баз данных Tariscope или результаты обработки этих полей.
Внутренне форма отчета состоит из команд языка Visual Basic Script (VBScript) с несколькими дополнительными функциями, разработанными специально для данной цели. Поэтому пользователь, хорошо знающий язык VBScript может редактировать существующую форму отчета или создавать собственную в любом текстовом редакторе. Однако, даже для профессионального программиста на VBScript данная работа в обычном текстовом редакторе может вызвать существенные затруднения, не говоря уже о большинстве пользователей, которые мало знакомы или вообще не знакомы с языком VBScript. Именно с целью облегчения работы при редактировании или создания новых форм отчетов и была разработана программа Дизайнер Форм Отчетов.
Тем не менее, следует отметить, что для работы с Дизайнером Форм Отчетов пользователям потребуется разобраться со структурой баз данных биллингового комплекса Tariscope и созданием SQL запросов к базам данных.
Файлы форм отчетов имеют расширения ABR. Они хранятся в папке: \Program Files (x86)\SoftPI\Tariscope4\Reports\. Подпапки являются названиями групп форм отчетов.
Отчет по причинам завершения вызовами
Итак, допустим, что нас интересует: по каким причинам завершаются вызовы. То есть это могут быть: нормальное завершение вызова, абонент не отвечал, какие-то ошибки и т.п. Вообще-то информация о причинах завершения содержится в представлении в соответствующем поле. И применив функцию группирования можно получить обобщенную информацию о причинах завершения вызовов. Но попробуем сами создать отчет с помощью Дизайнера форм отчетов.
Что для этого нужно?
Во-первых, точно представлять, что хотим получить. Например, мы хотим иметь таблицу содержащую наименования причин завершения вызовов, их коды (коды отсутствуют в представления вызовов Tariscope), и соответствующее количество вызовов. Иметь информацию, за какой период времени обработаны данные, и, наконец, дату формирования отчета.
Откуда брать эту информацию?
Для это откроем документ "Tariscope 4.x. Каталог баз данных". Раздел 2 этого документа содержит перечень всех таблиц и представлений базы данных Tariscope. Просмотрев этот перечень, находим, что таблица CallsCCM содержит подробную информацию о вызовах. Далее переходим к описанию этой таблицы (раздел 2.13). В ней находим, что код причины завершения вызова содержится в поле origCause_value. Запоминаем это название и имя таблицы. Другие поля в этой таблице нас для этого отчета не интересуют.
Открываем Дизайнер Форм Отчетов, в появившемся окне программы, в меню Файл, выбираем Создать. Окно программы примет вид, как показано на рисунке 1.
Рисунок 1
В левой части окна отображается форма отчета, а в правой (Декларация отчета) основные параметры отчета. С нее и начнем создание отчета.
В позиции Название вводим название отчета (не путайте с именем файла формы отчета): Коды завершения вызовов CUCM.
В позиции Описание вводим краткое описание отчета. Оно будет отображаться в режиме Отчеты программы Tariscope.
Позиции Автор и Версия не обязательные для заполнения.
В позиции Ссылка вводится ссылка для открытия интернет страницы, где приводится подробное описание отчета. Если этой формой отчета могут пользоваться различные сотрудники Вашей компании, и вы можете разместить такое описание на сайте вашей компании, то укажите соответствующую ссылку.
В позиции Дата по умолчанию устанавливается текущая дата.
В списке Видимость оставляем значение по умолчанию: Always.
Заполненная декларация отчета показана на рисунке 2.
Рисунок 2
Чтобы введенные нами данные случайно не пропали, сохраним их, выбрав в меню программы Файл → Сохранить как. Откроется окно для сохранения файла, где будет отражаться содержимое папки Reports. Выбираем нужную подпапку и сохраняем файл.
Теперь, чтобы нам не мешала декларация отчета, устанавливаем курсор на границе окно декларации и формы отчета, нажимаем левую кнопку мыши и скрываем правую часть окна.
Далее несколько изменим общие параметры формы отчета. Для этого выберем в меню Отчет → Свойства отчета. Появится окно Свойства отчета (рисунок 3). Изменим параметры шрифта, заданных по умолчанию. Эти параметры будут по умолчанию применяться к каждой ячейке таблицы формы отчета. При необходимости каждая ячейка может иметь собственные параметры шрифта.
Рисунок 3
Введем наименование отчета, добавим строки и создадим SQL запрос, который будет получать минимальную и максимальную дату, которая содержится в представлении вызовов, на базе которого будет формироваться отчет. Подобный SQL запрос используется во многих формах отчета, поставляемых с Tariscope. Поэтому его можно просто скопировать из какой-либо другой формы отчета:
SELECT MIN(CallDateTime) As MinDate, MAX(CallDateTime) as MaxDate FROM $Calls$ WHERE NOT CallDateTime IS NULL
Поле MinDate будет содержать наиболее раннюю дату/время вызова в представлении вызова, а поле MaxDate – наиболее позднюю дату/время в этом представлении.
Эти данные отобразим в позиции Период отчета. Также создадим позицию Дата отчета. Текущую дату для этой позиции получим с помощью функции: Now.
Форма отчета примет вид, показанный на рисунке 4.
Рисунок 4
Теперь сформируем основной запрос, который будет группировать данные по полю origCause_value и подсчитывать количество вызовов с конкретным кодом:
SELECT origCause_value, COUNT(origCause_value) as CauseNumber FROM CallsCCM WHERE CallID IN (SELECT ID FROM $Calls$) GROUP BY origCause_value ORDER BY origCause_value
origCause_value после слова SELECT означает, что требуется отбирать такое поле.
COUNT(origCause_value) – будет подсчитывать количество вызовов для конкретного кода и сохраняться в CauseNumber ("as CauseNumber").
Данные должны выбираться из (FROM) таблицы CallsCCM.
Выражение WHERE и GROUP указывает условия для отбора данных. Если вы обрабатываете в Tariscope данные только от одного CUCM, то слово WHERE и все, что до слова GROUP, можно не указывать. Если же обрабатываются несколько CUCM, то чтобы в таблице CallsCCM найти данные, относящиеся только к тем вызовам, которые отражаются в представлении, необходимо ввести выражение CallID IN (SELECT ID FROM $Calls$).
После GROUP BY указывается поле, по которому должны группироваться данные.
И, наконец, чтобы данные были отсортированы по коду завершения, указывается поле после ORDER BY.
Форма отчета будет иметь вид, как показано на рисунке 5.
Рисунок 5
Далее в части заголовка SQL запроса (в структуре отчета выделено красным цветом) вводим заголовок отчета.
В строке тела таблицы (находится между строками выделенными красным и зеленым цветом) вводим поля запроса.
В строке итогов (выделена зеленым цветом) подсчитываем общее количество вызовов. Для этого справа от шапки таблицы вводим: =MarkRow, это означает, что подсчет будет выполняться со строки ниже этой. А в итоговой строке введем: =SumCol(3), что будет означать, что вычисляется сумма строк 3-го столбца (нумерация столбцов отображается вверху окна отчета).
Всё, форма отчета готова (рисунок 6).
Рисунок 6
Запускаем ее на выполнение в программе Tariscope и получаем результат (рисунок 7).
Рисунок 7
Посмотрев на результат, можно захотеть добавить в отчет описание причины завершения вызова.
В настоящий момент, эта информация отсутствует в базе данных, поэтому решить вопрос можно написав небольшой код на VBScript. Создадим в нем двухмерный массив, содержащий коды завершения и их описание, и создадим функцию, которая возвращает описание причины завершения вызова на основе полученного аргумента — кода завершения. Для создания кода необходимо выбрать в меню программы Отчет → Общий код. Появится окно Общий код, где и следует его ввести. Пример этого окна с введенным кодом показан на рисунке 8.
Рисунок 8
В показанном примере в массив введена только часть кодов завершения вызовов и их описаний. Для универсального использования этой формы отчета следует ввести все возможные варианты кодов завершения вызова и их описания.
Возможны и другие варианты реализации требуемой функции.
Теперь вернемся к форме отчета и добавим еще один столбец, где будет отражаться описание причины завершения вызова. Форма отчета при этом примет вид, как показано на рисунке 9.
Рисунок 9
Как видно из рисунка 8, функция, возвращающая описание причины завершения вызова, названа CodeDescription.
Поэтому она и указана в таблицы (рисунок 9), а аргументом ее является значение кода завершения origCause_value: $CodeDEscription(#origCause_value#)$
Заново строим отчет. Результат построения отчета показан на рисунке 10.
Рисунок 10
При необходимости эту форму можно совершенствовать и далее, например, изменив сортировку с поля Код завершения на поле Количество вызовов, добавив еще поле Процент, где отражать процент вызовов с определенным кодом завершения от общего числа вызовов и тому подобное.
Отчет по используемым кодекам
В некоторых случаях для администраторов CUCM могут представлять интерес кодеки, которые используются при выполнении вызовов. Эта информация может быть полезна, например, для выявления причин с качеством передачи голоса, занимаемой полосой пропускания и т.п.
Поэтому создадим форму отчета, где будут отображаться:
- код кодека;
- его описание;
- количество вызовов с данным кодеком.
Чтобы сократить время на создание отчета, используем выше рассмотренную форму отчета в качестве шаблона.
Откроем форму отчета, показанную на рисунке 8 и сохраним ее под другим именем.
Внесем соответствующие изменения в декларативную часть формы отчета.
Заменим заголовок отчета.
Первый SQL запрос, получающий даты, время самого давнего вызова в представлении и самого последнего, оставим без изменения.
Перейдем к основному запросу отчета. Перед внесением в него изменений откроем документ "Tariscope 4.x. Каталог баз данных" и в разделе 2.13 найдем поле, которое содержит информацию о кодеке. Это поле origMediaCap_payloadCapability.
Теперь внесем изменения в запрос, на основании которого формируется таблица с результатами, записав его следующим образом:
SELECT origMediaCap_payloadCapability, COUNT(origMediaCap_payloadCapability) as CodecNumber FROM CallsCCM WHERE CallID IN (SELECT ID FROM $Calls$) GROUP By origMediaCap_payloadCapability ORDER BY CodecNumber DESC
Итак, запрос отбирает (SELECT) поле origMediaCap_payloadCapability и вычисляет число записей с конкретным значением этого поля COUNT(origMediaCap_payloadCapability) as CodecNumber.
Данные выбираются из таблицы CallsCCM: FROM CallsCCM.
Будут отбираться только те записи, которые имеют соответствующие записи о вызовах в представлении, на основе которого формируется отчет: WHERE CallID IN (SELECT ID FROM $Calls$) GROUP By origMediaCap_payloadCapability
Результаты запроса сортируются по полю CodecNumber - количество вызовов с конкретным кодеком.
Изменим код программы (меню: Отчет → Общий код), как показано на рисунке 11.
Рисунок 11
Здесь введены не все возможные кодеки.
Далее вносим соответствующие изменения в в таблицу формы отчетов. В результате получаем форму, как показано на рисунке 12.
Рисунок 12
Формируем отчет на основе созданной формы. Пример сформированного отчета по кодекам показан на рисунке 13.
Рисунок 13
В заключение отметим, что используя эти примеры, пользователи Tariscope и Cisco Unified Communications Manager могут создавать любые отчеты по данным, полученным из CDR файлов.
Пользователи Tariscope могут загрузить описанные выше отчеты, используя режим Отчеты программы Tariscope.
Ссылки
Контроль качества VoIP вызовов, выполненных через CUCM, используя Tariscope
Конфигурация Tariscope для использования функции ограничения с CUCM
Обработка CDR из CUCM в Tariscope
Коды завершения вызовов в CUCM
Функции редакции Tariscope Enterprise
Функции редакции Tariscope Provider
Решения на основе Tariscope