Створення спеціальних форм звітів для CUCM
Ця стаття призначена для користувачів білінгової системи Tariscope, які використовують її для аналізу викликів, виконаних через Cisco Unified Communications Manager (CUCM), і які бажають отримати якусь додаткову інформацію про виклики, яка міститься в CDR файлах, але відсутня в поданнях для викликів і стандартних формах звітів системи Tariscope. Також ця стаття може бути корисна всі користувачам Tariscope, як приклад по самостійному створенню необхідних форм звітів.
CDR файл від CUCM містить багато полів, більшість з яких не потрапляє до бази даних Tariscope, якщо в налаштуваннях цієї телефонної системи не вказано зберігати усі CDR поля. В деяких випадках ті CDR поля, які не обробляються, можуть становити інтерес. Наприклад, це може бути корисно, якщо ви бажаєте аналізувати, яка із сторін телефонної розмови припинила виклик. Про цей випадок є окрема стаття на сайті.
Інший приклад, це аналіз кодів завершення викликів. Інформація про це не потребує зберігання всіх полів, і цьому питанню присвячена наступна стаття на сайті. Але якщо ви бажаєте генерувати періодичні звіти по кодам завершення викликів, то пропонуємо далі прочитати цю статтю, де ми розглянемо, як створити необхідну форму звіту.
Для створення форм звітів для Tariscope слід використовувати безкоштовну програму Microsoft Report Builder . Інсталяцію цієї програми можна завантажити з сайту компанії Microsoft.
В межах цієї статті неможливо розглянути всі можливості цієї програми. Для цього звертайтеся до документації на сайті Microsoft. Ми розглянемо тільки основні кроки, які треба виконати для створення форми звіту по кодам завершення викликів. Будемо вважати, що нам треба створити фору звіту, за допомогою якої будуть формуватися звіти за заданий період і будуть відображатися коди завершення викликів і кількість викликів відповідного коду. Дані звіту повинні бути упорядковані за кодами закінчення виклику.
Зауважимо, що в основі форми звіту використовується SQL запит або ціла програма з використанням мови Transact-SQL (T-SQL). Крім цього необхідно знати, де в базі даних Tariscope знаходяться необхідні дані. Таку інформацію можна знайти в документі “Tariscope 4.6. Каталог бази даних”. Цей документ надається тільки офіційним користувачам Tariscope. Для цього надішліть запит в службу підтримки компанії SoftPI.
Після запуску програми Microsoft Report Builder з’являється вікно, яке пропонує варіанти створення форми звіту за допомогою різних майстрів або використовуючи «Blank Report” (пустий звіт). Виберемо останній варіант, вікно програми прийме вигляд, як на малюнку 1.
Малюнок 1
Вікно програми містить меню, а також вікна: Report Data, форми звіту та Properties.
Меню програми складається із наступних пунктів:
- File. Дозволяє відкрити існуючу форму звіту або зберегти форму звіту.
- Home. Відображається панель інструментів для редагування елементів звіту, а також кнопку Run для запуску формування звіту.
- Insert. Відображається панель з елементами, які можна вставити в форму звіту.
- View. Відображається панель інструментів для вибору вікон програми, які будуть відображатися.
Вікно Properties відображає властивості, які відносяться до всієї форми звіту. Рекомендуємо зразу задати деякі властивості звіту, такі як автор (Author), опис (Description) та мова (Language).
Перші два параметри – інформативні і не є обов’язковими для задання, хоча ми рекомендуємо. А ось відсутність конкретної мови інколи може привести до того, що звіт не буде працювати. Тому для параметра Language виберіть значення uk-UA.
Серед властивостей звіту зверніть також увагу на розмір звіту. Для цього використовуються наступні параметри: ActiveSize, Margins, PageSize. При необхідності ви можете змінити ці параметри.
На формі звіту за замовчуванням вже вставлені зверху розділ Report Title (Заголовок звіту) і знизу колонтитул сторінки (Page Footer), в якому відображається вбудований параметр (Build-in-Fieled), що відображує час виконання запиту до SQL сервера. Це параметр має назву Execution Time.
Перелік інших вбудованих полів, які можна використовувати у формі звіту, можна побачити, якщо у вікні Report Data відкрити гілку Build-in-Fields.
Якщо вас не цікавить час виконання запиту, то клацніть по контуру поля &ExecutionTime і видаліть його. Якщо ви не плануєте відображення якихось даних в нижньому колонтитулі, то його також можна видалити. Для цього в його властивостях для параметру Height (висота) задайте 0. Можна також видалити і розділ Report Title, а для заголовку звіту вставити текстове поле. Для цього в меню програми виберіть Insert (вставити) і клацніть по іконці Text Box (текстове поле) і на формі звіту виберіть область, де це поле буде знаходитися. Потім введіть в ньому назву звіту (малюнок 2).
Малюнок 2
Задамо параметри звіту: дату і час, починаючи з яких будуть аналізуватися дані викликів, та дату і час, до яких будуть аналізуватися дані викликів. Для цього у вікні New виберіть Parameters і клацніть правою кнопкою миші. З’явиться пункт Add Parameter (додати параметр), клацніть по ньому. В наслідок чого з’явиться вікно Report Parameter Properties (властивості параметру звіту).
В цьому вікні в позиції Name введіть назву параметру. Наприклад, для першого параметра хай це буде FromDate. В позиції Prompt задамо, наприклад, фразу “From date, time”(З дати, часу). І переліку Data Type (тип даних) виберемо пункт Date/Time. Після чого клацніть по кнопці OK для збереження даних параметру.
Повторимо подібні дії для другого параметру (Малюнок 3).
Малюнок 3
Наступним кроком створення форми звіту буде створення SQL запиту для отримання необхідних даних. Для цього слід зрозуміти, де ці дані брати. Основні параметри виклику зберігаються в таблиці Calls або в поданні viCalls. Як згадувалося вище, таку інформацію можна знайти в документі “Tariscope 4.6. Каталог бази даних”. Як видно з опису таблиці Calls цього документа, таблиця містить поле ReleaseCause, в якому зберігається код причини завершення виклику. Також з цієї таблиці для створення SQL запиту буде необхідне поле CallDateTime, в якому зберігається дата і час початку викликів.
Для створення SQL запиту в формі звіту в першу чергу треба вказати джерело даних. В нашому випадку це база даних Tariscope. Для цього у вікні Report Data виберіть Data Sources і клацніть правою кнопкою миші, далі клацніть по Add Data Source. З’явиться вікно Data Source Properties (малюнок 4), де слід вказати параметри підключення до SQL серверу і бази даних Tariscope.
Малюнок 4
В позиції Name можете залишити назву DataSource1 або замінити, наприклад, на Tariscope.
Виберіть Use a connection embedded in my report.
В переліку Select connection type залишаємо вибраним пункт Microsoft SQL Server.
В позиції Connection string треба задати рядок підключення до бази Tariscope. В залежності від того, на якому комп’ютері ви створюєте форму звіту цей рядок підключення може бути різним.
Одним із варіантів рядка підключення до бази даних Tariscope при створенні форми звіту на тому ж самому комп’ютері, де встановлений SQL сервер, буде наступне:
Data Source=.\\;Initial Catalog=Tariscope
Для того щоб впевнитися, що цей рядок введений правильно, клацніть по кнопці Test connection. Якщо все введено правильно, то ви отримаєте вікно з надписом: Connection created successfully. Якщо ви отримали помилку при тестовому підключенні, то перевірте введені дані і виправіть помилку.
Клацніть по кнопці OK щоб зберегти параметри налаштування рядка підключення до бази даних.
У вікні Report Data виберіть пункт Datasets і потім клацніть правою кнопкою миші, далі клацніть по Add Dataset.
З’явиться вікно Dataset Properties (малюнок 5).
Малюнок 5
В позиції Name можете залишити назву набору даних або задати свою назву, наприклад, CallTerminationCodes.
Виберіть позицію Use a dataset embedded in my report. Вікно Dataset Properties дещо змінить свій вигляд (малюнок 6).
Малюнок 6
В переліку Data source виберіть назву джерела даних, яке ви створили на попередньому кроці. В нашому прикладі це джерело даних Tariscope.
В позиції Query введіть SQL запит, який буде отримувати необхідні дані з бази даних Tariscope.
Одним з варіантів SQL запитів, що буде відображати код причини завершення виклики і кількість викликів з таким кодом за заданий проміжок часу, буде наступний:
SELECT ReleaseCause, COUNT(ID) AS TerminationCodeNumber
FROM Calls
WHERE CallDateTime BETWEEN @FromDate AND @ToDate
GROUP BY ReleaseCause
ORDER BY ReleaseCause
Перший рядок цього запиту забезпечує вибір коду закінчення виклику (ReleaseCause) та кількості, скільки кожний код зустрічається (TerminationCodeNumber).
Другий рядок запиту показує, що дані вибираються з таблиці Calls.
Третій рядок вказує, що дані вибираються за період, де початок виклику (поле CallDateTime) знаходиться в проміжку часу, що задається параметрами початку періоду (@FromDate) та закінчення періоду (@ToDate).
Четвертий рядок забезпечує групування даних по полю причини завершення виклику (ReleaseCause). Останній, п’ятий рядок упорядковує результати запиту за значенням поля ReleaseCause.
Наведений SQL запит буде працювати коректно, якщо у вас з Tariscope використовується тільки одна телефонна система, CUCM. Якщо у вас декілька телефонних систем, але CUCM тільки один, то вибір даних саме по його викликам можна напряму задати в умовах SQL запиту. Для цього слід визначити, якій ідентифікатор має CUCM в системі Tariscope. Для цього в Tariscope відкрийте сторінку Управління пристроями. Таблиця пристроїв містить ідентифікатори (ID) телефонних систем. Знайдіть ID, що належить CUCM. Наприклад, це
ID= 320. В цьому випадку наведений вище SQL запит слід записати наступним чином:
SELECT ReleaseCause, COUNT(ID) AS TerminationCodeNumber
FROM Calls
WHERE CallDateTime BETWEEN @FromDate AND @ToDate
AND PBXID = 320
GROUP BY ReleaseCause
ORDER BY ReleaseCause
В цьому запиті виділена частина, яка була додана. Тобто додана умова, що обробляються виклики тільки від АТС з ідентифікатором 320.
В тому випадку, якщо у вас декілька телефонних систем, і ви по кожній з них бажаєте отримувати окремий звіт, то треба у форму звіту додати ще одним параметр: ID АТС. Тип даних для цього параметру повинен бути: integer. І якщо ми його назвали PBXID, то SQL запит, який враховує АТС, буде мати наступний вигляд:
SELECT ReleaseCause, COUNT(ID) AS TerminationCodeNumber
FROM Calls
WHERE CallDateTime BETWEEN @FromDate AND @ToDate
AND PBXID = @PBXID
GROUP BY ReleaseCause
ORDER BY ReleaseCause
Рекомендуємо завжди перед написанням запиту в цьому вікні переконатися, що цей запит працює правильно. Для цього можна використовувати або сторінку SQL-запити в Tariscope, або Microsoft SQL Server Management Studio (SSMS). При такій перевірці слід мати на увазі, що заміть параметрів форми звіту слід вказати конкретні дані. Наприклад, наш останній запит ми можемо перевірити на даних за 01.09.2024 року для АТС з ID = 320. Для цього запит повинен мати наступний вигляд:
SELECT ReleaseCause, COUNT(ID) AS TerminationCodeNumber
FROM Calls
WHERE CallDateTime BETWEEN '2024-09-01 00:00:00' AND '2024-09-01 23:59:00' AND
PBXTD =320
GROUP BY ReleaseCause
ORDER BY ReleaseCause
Після того, як ви впевнилися, що запит працює коректно і ви вставили його у вікно Dataset Properties, збережіть цей запит, клацнувши по OK в цьому вікні.
Тепер додамо в форму звіту таблицю, де будуть відображатися результати SQL запиту. Для цього в меню програми Microsoft Report Builder треба вибрати пункт Insert, а потім клацнути на панелі інструментів по іконці Table -> Insert table. Після чого на формі звіту вказати місці для таблиці. Форма звіту буде мати вигляд подібний тому, що вказаний на малюнку 7.
Малюнок 7
При цьому вікно Properties буде відображати параметри цієї таблиці. Треба зв’язати таблицю з набором даних (dataset), який ми попередньо створили. Для цього для параметра таблиці DataSetName слід вибрати набір даних CallTerminationCodes.
Таблиця, яку ми вставили містить 3 стовпця. Але в нашому запиті ми маємо тільки два поля. Тому один із стовпців таблиці треба видалити. Для цього слід клацнути по рядку заголовка стовпця, з’явиться обрамлення таблиці, клацнути по цьому обрамленню, що призведе до виникнення меню (малюнок 8).
Малюнок 8
Виберіть пункт Delete Columns, цей стовпчик буде видалений. Існують і інші варіанти видалення стовпця.
В стовпцях, що залишилися, введемо заголовки, а в наступному рядку виберемо поля даних, які будуть відображатися (малюнок 9).
Малюнок 9
Після цього можна перевірити формування звіту. Для цього на панелі інструментів програми клацніть по іконці Run. В наслідок чого програма прийме вигляд, як показано на малюнку 10.
Малюнок 10
В позиції "З дати, часу" введіть дату і час початку періоду в форматі: день.місяць.рік години:хвилини:секунди. Наприклад: 01.09.2024 00:00:00
В позиції "До дати, часу" введіть дату і час закінчення періоду в форматі: день.місяць.рік години:хвилини:секунди. Наприклад: 01.09.2024 23:59:59.
В позиції ID АТС введіть ідентифікатор АТС. Наприклад: 320.
Клацніть по кнопці View Report. Якщо все зроблено коректно, то відобразиться звіт. Приклад такого звіту наведений на малюнку 11.
Малюнок 11
Ми отримали той результат, який і очікували. Але звіт можна удосконалити. Наприклад, вказати період, за який він містить дані; додати опис коду завершення виклику, вказати загальну кількість викликів та інше.
Давайте додамо дані щодо періоду, за який формується звіт. Ці дані містяться в параметрах FromDate та ToDate, які ми створили. Додамо в форму звіту Text Box за аналогією, як додавали таблицю. Виберемо цю текстову позицію на формі звіту і клацнемо правою кнопкою миші. З’явиться меню, в якому треба вибрати значення Expression. Це призводить до відкриття вікна Expression. В цьому вікні треба ввести вираз, приклад якого показаний на малюнку 12 і клацнути ОК.
Малюнок 12
Якщо після цього виконати формування звіту, то тепер звіт буде містити дані про період, що показано на прикладі в малюнку 13.
Малюнок 13
Тепер додамо підсумок кількості викликів, які потрапляють до звіту. Для цього треба стати на формі звіту на рядку таблиці, де виводяться дані. Клацнути правою кнопкою миші, в меню, що з’явиться, вибрати:
Insert Row -> Outside Group – Below. З’явиться новий рядок. В цьому рядку в стовпчику Код завершення можна ввести, наприклад: Всього, а в стовпчику Кількість клацнути правою кнопкою миші і вибрати в меню пункт Expression. У вікні Expression введіть наступний вираз:
SUM(CInt(Fields!TerminationCodeNumber.Value))
Цей вираз буде підсумовувати значення поля TerminationCodeNumber за допомогою функції SUM, яке попереднє переводиться у ціле (integer) за допомогою функції CInt.
Сформувавши звіт з цими змінами, отримаємо результат, приклад якого наведений на малюнку 14.
Малюнок 14
Тепер розглянемо, як додати у звіт опис кодів завершення виклику. Така інформація є безпосередньо в коді системи Tariscope, але вона відсутня в базі даних. Тому одним з варіантів є додання такої інформації в базу даних Tariscope. Для цього треба мати перелік кодів і їх опису. Перелік кодів і їх опис українською мовою є в статті на нашому сайті, таблиці 1.
Скопіюйте дані цієї таблиці і вставте в Excel в Аркуш. Перший рядок хай містить назви стовпців (малюнок 15).
Малюнок 15
Збережемо ці дані в csv файл з назвою: CallTerminationCauseCodes.csv
Назва цього файлу може бути будь-яка, але вона не повинна збігатися з будь-якою назвою таблиць бази даних Tariscope.
Для створення таблиці з кодами завершення і їх описом скористаємося програмою Microsoft SQL Server Management Studio (SSMS). Треба підключитися в цій програмі до SQL серверу з базою даних Tariscope. Вибрати рядок бази Tariscope, клацнути правою кнопкою миші і в меню, що з’явиться вибрати: Tasks -> Import Flat File. Відкриється вікно Import Flat File ‘Tariscope’. Клацніть Next. Вікно прийме вигляд, як показано на малюнку 16.
Малюнок 16
Клацніть Browse і виберіть створений csv файл. В позиції New table name буде запропонована назва файла. При бажанні ви можете цю назву змінити. Клацніть Next. Вікно відобразить попередній перегляд даних. Якщо все влаштовує, то клацніть Next. Вікно програми відобразить структуру таблиці, що створюється, приклад чого наведений на малюнку 17.
Малюнок 17
При бажанні можете зробити поле Code як Primary Key.
Клацніть Next, а потім Finish. В разі успішного імпорту даних з csv файлу з’явиться інформація: Operation Complete. Після цього треба оновити дані і перевірити наявність створення нової таблиці, в нашому прикладі це dbo.CallTerminationCauseCodes.
Тепер треба змінити SQL запит форми звіту, щоб враховувати дані цієї таблиці у звіті. Одним з варіантів, як це зробити наводиться нижче:
SELECT ReleaseCause, Min(Description) AS Description, COUNT(ID) AS
TerminationCodeNumber
FROM Calls
JOIN CallTerminationCauseCodes ON Code = ReleaseCause
WHERE CallDateTime BETWEEN @FromDate AND @ToDate
AND PBXID = @PBXID
GROUP BY ReleaseCause
ORDER BY ReleaseCause
Після збереження цього запиту треба додати відображення значення поля Description у таблиці форми звіту. Для цього треба вибрати стовпчик Кількість і клацнути правою кнопкою миші. В меню, що з’явиться вибрати: Insert Column -> Left. У заголовку стовпця напишемо: Опис. В рядку значень вибираємо Description (малюнок 18).
Малюнок 18
Якщо тепер сформувати цей звіт, то отримаємо результат, подібний до того, що показаний на малюнку 19.
Малюнок 19
Можна і далі удосконалювати цю форму звіту в залежності від вимог до нього.
Якщо цей звіт планується формувати автоматично за розкладом за допомогою Планувальника Tariscope, то знову треба внести зміни в SQL запит, щоб в звіті автоматично формувався заданий проміжок часу відносно поточного часу, бо неможливо буде їх задавати в якості параметрів, а також напряму, без параметру, задавався ідентифікатор АТС. В залежності від проміжку часу, за який планується формувати звіт, SQL запит може трохи відрізнятися. Якщо, наприклад, ви плануєте формувати звіти по кодам завершення викликів щогодинно, то в формі звіту слід видалити параметри, а SQL запит написати наступним чином:
SELECT ReleaseCause, Min(Description) AS Description, COUNT(ID) AS
TerminationCodeNumber
FROM Calls
JOIN CallTerminationCauseCodes ON Code = ReleaseCause
WHERE CallDateTime BETWEEN DateAdd(hh, -1, GetDate()) AND GetDate()
AND PBXID = 320
GROUP BY ReleaseCause
ORDER BY ReleaseCause
В цьому запиті ви повинні змінити значення поля PBXID з 320 на ідентифікатор вашого CUCM. Визначення поточного часу виконується за допомогою функції GetDate. Визначення часу, який був на годину раніше, ніж поточний час, використовується функція DateAdd.
Налаштування формату CDR для Avaya Aura
Avaya Aura має CDR формат, що налаштовується як за переліком полів так і за їх порядком. Щоб зрозуміти, які CDR поля слід використовувати в Avaya Aura для обробки їх в білінговій системі Tariscope, наведемо відповідну інформацію. Для коректної обробки CDR даних в Tariscope практично усі з перелічених нижче полів повинні були в налаштуванні CDR формату Avaya Aura.
acct-code. (Account Code). Це CDR поле може містити або код проекту або код рахунку. Якщо ви використовуєте код проекту при викликах, то в Tariscope поле буде потрапляти в ProjectCode. Це поле не є обов’язковим.
auth-code. (Authorization Code). Якщо в вашій системі при виконанні викликів використовується код авторизації, то це поле слід додати при налаштуванні формату CDR в АТС. В Tariscope це поле потрапляє в поле з відповідною назвою. Якщо виклики з кодом авторизації не використовуються, то це поле непотрібно.
calling-num. (Calling Number). В залежності від типу виклику в Tariscope це поле відповідає одному з наступних полів: Originator, CLID або DialNumber. Це обов’язкове поле.
code-dial. (Code Dial). Це поле містить код доступу, який абонент набирає при виконанні вихідних викликів. Це поле необов’язкове.
code-used. (Access Code Used). Це поле використовується лише для вихідних викликів, коли система використовує групу з’єднувальних каналів, яка відрізняється від коду доступу, який набирає абонент. Якщо у вас є такі випадки, то це поле обов’язкове. Воно використовується при формуванні поля Terminator в Tariscope.
cond-code. (Condition Code). Використовується в Tariscope для визначення типу виклику.
date. Це поле містить дату закінчення виклику. Замість нього можна використовувати поле start-date. Одне з цих полів є обов’язковим для обробки викликів в Tariscope.
dialed-num. (Dialed Number). В залежності від типу виклику в Tariscope це поле відповідає одному з наступних полів: Terminator або DialNumber.
duration. Це поле містить тривалість виклику у форматі: години (від 0 до 9), хвилини (від 00 до 59), десяті долі хвилини (від 0 до 9). Таким чином, при використанні цього поля точність визначення тривалості виклику становить 6 секунд. Замість цього поля можна використовувати поле sec-dur. Використання одного з цих полів є обов’язковим для визначення тривалості розмови в Tariscope.
in-crt-id. (Incoming Circuit Identification). Це поле містить номер зовнішньої лінії в групі зовнішніх ліній, яка використовується для вхідного виклику. Для вихідних дзвінків це поле порожнє. Це обов’язкове поле, в Tariscope воно використовується для формування поля Originator для вхідних викликів. Потрібно, щоб в цьому полі в CDR потрапляли тільки цифри.
in-trk-code. (Incoming TAC). У цьому полі міститься код доступу до вхідної групи з’єднань. Це поле є обов’язковим для формування в Tariscope поля Originator для вхідних або транзитних викликів. Потрібно, щоб в цьому полі в CDR потрапляли тільки цифри.
out-crt-id. (Outgoing Circuit Identification). Для вихідних викликів це поле містить номер зовнішньої лінії в групі зовнішніх ліній, яка використовується під час виклику. Це поле порожнє для вхідних дзвінків. Це обов’язкове поле, в Tariscope воно використовується для формування поля Terminator для вихідних викликів. Потрібно, щоб в цьому полі в CDR потрапляли тільки цифри.
sec-dur. Це поле містить тривалість викликів в секундах з точністю до 1 секунди. Може використовуватися замість поля duration. Використання одного з цих полів є обов’язковим для визначення тривалості розмови в Tariscope.
start-date. Це поле містить дату початку виклику. Воно може використовуватися замість поля date. Використання одного з цих полів є обов’язковим для визначення дати початку виклику в Tariscope.
start-time. Це поле містить час початку виклику. Воно може використовуватися замість поля time. Використання одного з цих полів є обов’язковим для визначення часу початку виклику в Tariscope.
time. Це поле містить час закінчення виклику. Воно може використовуватися замість поля start-time. Використання одного з цих полів є обов’язковим для визначення часу початку виклику в Tariscope.
ucid. Це поле містить унікальний ідентифікатор виклику. Воно необхідно для зв’язування в Tariscope окремих CDR записів, що формуються під час виконання трансферних викликів.
Всі інші CDR поля, які доступні в CDR форматі Avaya Aura не використовуються в системі Tariscope.
Налаштування обробки CDR формату від Avaya Aura в Tariscope описуються в документі Tariscope. Керівництво адміністратора.
Функція обмеження Tariscope для 3CX
Система Tariscope надає функцію обмеження для деяких телефонних систем, включаючи 3CX. Функція обмеження дозволяє адміністратору Tariscope встановити обмеження певного типу дзвінків для абонента, групи абонентів, маршруту або шлюзу. Ліміт може бути встановлений у грошовому чи часовому вигляді. Конкретний тип дзвінків визначається категорією дзвінка, яка призначається коду міста (країни). Коли абонент або група абонентів вичерпають встановлений ліміт, Tariscope заборонить абоненту або групі абонентів дзвонити до закінчення періоду.
Tariscope зніме це обмеження на початку нового періоду. Базова ліцензія Tariscope не включає функцію обмеження. Щоб використовувати функцію обмеження, ви повинні мати ліцензію Tariscope, яка включає цю функцію.
Нижче ми розглянемо, як налаштувати обмеження в Tariscope.
По-перше, ви повинні встановити та налаштувати Tariscope відповідно до документації Tariscope. (http://www.tariscope.com/uk/86-support_uk/tariscope-4-6-administrator-uk/1446-tariscope-4-6-admin-uk.html).
Створіть категорію, яка асоціюватиметься з функцією обмеження, як показано на малюнку 1. (http://www.tariscope.com/uk/79-support_ru/tariscope-web-administrator-ru/1009-calls-categories-uk.html).
Малюнок 1
У меню Tariscope виберіть Оператори та тарифи → потрібний оператор зв'язку → Вихідні → Номери та коди. Відобразиться сторінка Номери та коди. Виберіть коди країн, міст, дзвінки, які повинні обмежуватися, та встановіть ним створену категорію дзвінка. Вікно, де встановлюється категорія виклику для конкретного телефонного коду, показано на малюнку 2.
Малюнок 2
У меню Tariscope виберіть Вузли зв'язку → найменування вузла зв'язку → Пристрої → 3CX → Класи обмежень. Відобразиться сторінка Класи обмежень.
Створіть групу обмежень. Група може містити кілька класів обмежень. Ви повинні зв'язати кожен із класів із певною категорією викликів, на які встановлено обмеження. Найчастіше досить одного класу обмежень. Створіть клас обмеження. Щоб зробити це, виберіть групу обмежень і клацніть по іконці Додати клас на панелі інструментів. З'явиться вікно Клас обмежень, як показано на малюнку 3.
Малюнок 3
У позиції Назва введіть назву класу обмежень.
У позиції Клас введіть інформацію, яка може бути використана в сценарії для цього обмеження. Зазвичай для 3CX ця інформація не має значної ролі.
Натисніть кнопку Зберегти.
Щоб зв'язати клас обмеження з категорією виклику, виберіть потрібний клас та клацніть по іконці Налаштувати категорії на панелі інструментів. З'явиться вікно Категорії, приклад якого показано на малюнку 4.
Малюнок 4
Увімкніть перемикач біля категорії, яку ви встановили для телефонних кодів, і натисніть кнопку Зберегти.
У меню системи Tariscope виберіть Абоненти. Відобразиться сторінка Активні абоненти. Залежно від ліцензії, що є у вас, ви можете встановити обмеження тільки для абонентів або також для груп абонентів. Якщо у вас є ліцензія Tariscope з функцією обмеження "Тільки для абонентів", ви можете встановити обмеження тільки для абонентів. Якщо у вас є ліцензія Tariscope з функцією обмеження "Тільки для абонентів або груп абонентів" або "Всі", ви можете встановити обмеження як для абонентів, так і груп абонентів.
Щоб встановити обмеження для абонента, виберіть абонента на сторінці та клацніть по іконці Обмеження на панелі інструментів. З'явиться сторінка Редагування. Натисніть кнопку Додати на панелі інструментів, щоб додати обмеження. З'явиться вікно Нове обмеження, як показано на малюнку 5.
Малюнок 5
У списку Категорії виберіть категорію, яка використовується для обмеження.
У списку Тип обмеження виберіть значення Гроші, якщо використовується грошовий ліміт, або виберіть Секунд, якщо використовується часовий ліміт.
У списку Клас обмежень виберіть клас, який ви створили на попередньому етапі налаштування.
У позиції Кредит встановіть величину ліміту.
Натисніть кнопку Зберегти.
Повторіть наведені вище дії для інших абонентів.
Якщо потрібно встановити обмеження для групи абонентів, виберіть групу та клацніть по іконці Обмеження на панелі інструментів. Повторіть кроки, описані вище для абонента.
Останнім кроком для встановлення обмежень є налаштування Tariscope Observer. У меню Tariscope виберіть Збір даних/Observer → Керування збором даних. З'явиться сторінка Збір даних/Observer. Виберіть рядок 3CX і клацніть по іконці Змінити на панелі інструментів. Відобразиться меню. Виберіть Сценарії Observer. Сторінка буде виглядати так, як показано на малюнку 6.
Малюнок 6
Якщо ви хочете обмежити лише абонентів, у списку Подія виберіть Зміна класу абонента. У списку Сценарій виберіть setcos-subscriber-3cx-v18.cs.
Якщо ви бажаєте обмежити групу абонентів, у списку Подія виберіть Зміна класу групи. У списку Сценарій виберіть setcos-group-3cx-v18.cs.
Потім натисніть кнопку Змінити, яка знаходиться праворуч від списку Сценарій. З'явиться вікно редагування, приклад якого показано малюнку 7.
Малюнок 7
У сценарії ви повинні змінити підкреслені значення на ваші значення. У наступному рядку вкажіть ім'я користувача (адміністратора), з яким ви підключаєтеся до 3CX:
const string PBX_USERNAME = "username";
У наступному рядку вкажіть пароль, який використовується для підключення:
const string PBX_PASSWORD = "admin_password";
У наступному рядку вкажіть IP адресу та IP порт вашого 3CX:
const string PBX_HOST = "http://your_pbx_address:5000";
Натисніть кнопку Зберегти.
У списку Інтервал автопідключення виберіть бажаний інтервал. За замовчуванням пропонується значення Кожен місяць.
У календарному списку Дата автопідключення виберіть день та час, коли встановлені обмеження повинні бути скинуті. Наприклад, це може бути початок першого дня нового місяця, якщо в якості інтервалу обрано кожний місяць.
Натисніть кнопку Зберегти.
Запустіть Tariscope Observer.
Alcatel-Lucent OXE. Отримання CDR через TCP в Tariscope
Якщо ви адміністратор або власник АТС Alcatel-Lucent OmniPCX Enterprise (Alcatel-Lucent OXE) і ви бажаєте отримувати інформацію про виклики (CDR) в онлайн режимі через IP мережу, то ви можете скористатися білінговою системою Tariscope (SoftPI). Система Tariscope не тільки забезпечує збір CDR даних, але і їх обробку і аналіз, а також має ще багато функцій.
В цій статті ми тільки опишемо, як налаштувати Tariscope для отримання CDR через TCP протокол.
Для отримання і первинної обробки CDR в системі Tariscope використовують служби Tariscope Observer (або просто Observer). Одна служба призначена для роботи з однією телефонною системою. Отримані і оброблені CDR дані зберігаються в базі даних Tariscope, а далі ви в Tariscope можете переглядати, фільтрувати, сортувати, групувати інформацію по викликам, створювати різні звіти, інформувати адміністратора про настання якихось подій, пов’язаних з викликами, тощо.
Створимо нову службу Tariscope Observer для отримання CDR від Alcatel-Lucent OXE з використанням TCP протоколу.
В меню додатка Tariscope виберіть Збір даних/Observer -> Керування збором даних. З’явиться сторінка Збір даних/Observer, приклад якої наведений на малюнку 1.
Малюнок 1
Ця сторінка містить в таблиці перелік раніше створених Observer-ів, а також панель інструментів.
Клацніть на панелі інструментів по іконці Додати (назва іконки з’являється при наведенні курсора на іконку). В меню, що з’явиться виберіть Новий Observer, в наслідок чого з’явиться вікно, що показане на малюнку 2.
Малюнок 2
В позиції Назва введіть назву Observer-у. Наприклад, це буде AlcatelOXE. Клацніть Зберегти. З’явиться нове вікно, що підтверджує створення нового Observer-у. В цьому вікні клацніть по кнопці Налаштування.
З’явиться сторінка Налаштування Tariscope Observer (AlcatelOXE), яке показано на малюнку 3.
Малюнок 3
В позиції Пристрій вказано «не обрано». Це означає, що ви повинні вибрати раніше створену в Tariscope телефонну систему, інформацію про виклики з якої буде отримувати і обробляти Observer. Для цього клацніть по посиланню «тут». З’явиться вікно Вибір пристрою, де слід вибрати раніше створену АТС Alcatel-Lucent OXE.
В переліку Джерело даних виберіть значення Клієнт TCP/IP. Після цього клацніть по кнопці Налаштування джерела даних. З’явиться вікно Налаштування джерела даних, приклад якого наведений на малюнку 4.
Малюнок 4
В позиції Сервер вкажіть IP адресу вашої АТС.
Якщо в Alcatel-Lucent OXE використовується інший IP порт, ніж той, що вказаний в позиції Порт, вкажіть його значення.
В усіх інших позиціях нічого вказувати не треба.
Клацніть Готово.
На сторінці Налаштування Tariscope Observer всі інші параметри можете залишити без змін. При необхідності їх можна замінити. Детальний опис всіх параметрів Observer-а дивиться в документі Tariscope.4.6. Керівництво адміністратора.
Кликніть по кнопці Готово. На сторінці Збір даних/Observer в таблиці з’явиться новий рядок з назвою створеного Observer-а. Виберіть цей рядок і на панелі інструментів клацніть по іконці Змінити. В меню, що з’явиться, виберіть Сценарії Observer. Відкриється відповідна сторінка, приклад якої наведений на малюнку 5.
Малюнок 5
Це налаштування потрібно для того, щоб виконати при підключенні до TCP/IP серверу Alcatel-Lucent OXE з’єднання з сервером для отримання тикерів з CDR даними. Для цього типу АТС недостатньо звичайного підключення TCP клієнта до TCP серверу.
В переліку Подія виберіть значення Підключення джерела даних, а в переліку Сценарії виберіть сценарій alcatelOXE-TCP-client.cs. Цей сценарій буде виконувати при підключенні до TCP/IP серверу Alcatel-Lucent OXE відповідний обмін даними, що дозволить отримувати CDR дані.
Кликніть Зберегти.
На цьому процес створення і налаштування Tariscope закінчено. Його можна запускати для отримання CDR даних.
Про інші налаштування та роботу з системою Tariscope дивіться у розділі База знань Tariscope
Оновлення Tariscope для 3CX v.18
У жовтні 2021 року компанія 3CX випустила нову, 18 версію, своєї IP АТС. Оскільки в цій АТС було змінено API, то в систему обліку телефонних дзвінків (білінгову систему) Tariscope було внесено відповідні оновлення, пов'язані з роботою функції обмеження.
Нагадаємо користувачам 3CX, що використання Tariscope дозволяє не лише враховувати телефонні дзвінки, виконані через 3CX, але й керувати витрачанням бюджету на телефонні розмови. У Tariscope можна задати конкретним абонентам або групі абонентів ліміти у грошовій сумі або тривалості дзвінків за місяць. Після досягнення цього ліміту Tariscope закриє абоненту або групі абонентів вихід з АТС до кінця поточного місяця. На початку першого числа наступного місяця це обмеження Tariscope автоматично зніме. Таким чином, компанія, що має 3CX і Tariscope, може точно планувати витрати на телефонні розмови і виконувати запланований бюджет.
Але це не всі можливості, які надає спільне використання системи Tariscope із 3CX. Перелік додаткових можливостей наведено на сторінці налаштування параметрів АТС 3CX у системі Tariscope, приклад якої наведено нижче.
Як видно з цього малюнка, Tariscope дозволяє:
- Відхиляти дзвінки абонентів, у яких баланс нижче за задану величину. Це налаштування є актуальним лише для користувачів редакції Tariscope Provider.
- Припиняти дзвінки з більшою заданою вартістю. Якщо таке налаштування задано, то з моменту початку виклику Tariscope розраховує максимально можливу тривалість цього виклику, виходячи із заданої допустимої вартості виклику, і при перевищенні викликом цієї тривалості виклик припиняється.
- Припиняти дзвінки із тривалістю більш заданої величини. Принцип роботи такого налаштування подібний попередньому налаштуванню.
- Відхиляти дзвінки без коду доступу (коду авторизації). Код авторизації не використовується в АТС 3CX, але його можна встановити в Tariscope. У момент початку виклику Tariscope перевірятиме, чи містить набраний номер код авторизації чи ні. Якщо його немає, виклик відхиляється.
- Відхиляти дзвінки за певними напрямками. Коди міст, країн або мобільних операторів вказані як список у цьому налаштуванні.
- Експортувати інформацію про черги дзвінків для побудови звітів, які містяться ці дані, а також дані з CDR.
- Виправляти тривалість дзвінка для різних етапів здійснення трансферних дзвінків. CDR дані від 3CX містять лише сумарну тривалість для трансферних дзвінків, не дозволяючи зрозуміти, скільки часу брав участь у дзвінку кожен з абонентів. Тому для вирішення цього питання потрібна додаткова інформація, яку можна отримати від 3CX.
- Автоматично створювати та періодично синхронізувати інформацію про абонентів на основі інформації, що міститься в 3CX.
Всі ці можливості дозволяють більш ефективно використовувати IP АТС 3CX, отримувати повну інформацію про виконані дзвінки та керувати бюджетом компанії на телефонні розмови.