Configuring the CDR format for Avaya Aura
Avaya Aura has a CDR format that is configurable both by the list of fields and by their order. To understand which CDR fields should be used in Avaya Aura to process them in the Tariscope billing system, here is the relevant information. For the correct processing of CDR data in Tariscope, almost all the fields listed below should be in the Avaya Aura CDR format setting.
acct-code. (Account Code). This CDR field can contain either a project code or an account code. If you use the project code when calling, then in Tariscope the field will go to ProjectCode. This field is not mandatory.
auth-code. (Authorization Code).If your telephone system allows you to use an authorization code when making calls, then this field should be added when configuring the CDR format in the PBX. In Tariscope, this field falls into a field with the corresponding name. If an authorization code calls are not used, this field is not required.
calling-num. (Calling Number). Depending on the call type in Tariscope, this field corresponds to one of the following fields: Originator, CLID, or DialNumber. This is a required field.
code-dial. (Code Dial). This field contains the access code that the subscriber dials when making outgoing calls. This field is optional.
code-used. (Access Code Used). This field is used only for outgoing calls when the system uses a trunk group that is different from the access code the subscriber dials. If you have such cases, then this field is mandatory. It is used when forming the Terminator field in Tariscope.
cond-code. (Condition Code).(Condition Code). Used in Tariscope to determine the call type.
date. This field contains the end date of the call. You can use the ‘start-date’ field instead. One of these fields is mandatory for Tariscope call processing.
dialed-num. (Dialed Number). Depending on the type of call in Tariscope, this field corresponds to one of the following fields: Terminator or DialNumber.
duration.This field contains the duration of the call in the format: hours (from 0 to 9), minutes (from 00 to 59), tenths of minutes (from 0 to 9). Thus, when using this field, the accuracy of determining the call duration is 6 seconds. The ‘sec-dur’ field can be used instead of this field. The use of one of these fields is required to determine the duration of a conversation in Tariscope.
in-crt-id. (Incoming Circuit Identification). This field contains the number of the trunk in the trunk group used for the incoming call. For outgoing calls, this field is empty. This is a required field, in Tariscope it is used to form the Originator field for incoming calls.
in-trk-code. (Incoming TAC). This field contains the access code for the incoming connection group. This field is mandatory for forming the Originator field in Tariscope for incoming or transit calls.
out-crt-id. (Outgoing Circuit Identification). For outgoing calls, this field contains the number of the outside line in the outside line group used during the call. This field is empty for incoming calls. This is a required field, in Tariscope it is used to form the Terminator field for outgoing calls.
sec-dur. This field contains the duration of calls in seconds with an accuracy of 1 second. It can be used instead of the ‘duration’ field. The use of one of these fields is required to determine the duration of a conversation in Tariscope.
start-date. This field contains the start date of the call. It can be used instead of the ‘date’ field. The use of one of these fields is mandatory to determine the start date of the call in Tariscope.
start-time. This field contains the start time of the call. It can be used instead of the ‘time’ field. The use of one of these fields is required to determine the start time of the call in Tariscope.
time. This field contains the end time of the call. It can be used instead of the ‘start-time’ field. The use of one of these fields is required to determine the start time of the call in Tariscope
ucid. ЭThis field contains the unique identifier of the call. It is necessary for linking in Tariscope individual CDR records formed during transfer calls.
All other CDR fields that are available in the Avaya Aura CDR format are not used in the Tariscope system.
Avaya Aura's CDR processing settings in Tariscope are described in the Tariscope document. Administrator's Guide.
Alcatel-Lucent OXE. Collecting CDRs via TCP in Tariscope
If you are an administrator or owner of an Alcatel-Lucent OmniPCX Enterprise PBX (Alcatel-Lucent OXE) and you want to collect CDR online via the IP network, you can use the Tariscope billing system (SoftPI). The Tariscope system not only provides CDR data collection, but also their processing and analysis, and has many other functions.
In this article, we will only describe how to configure Tariscope to receive CDRs via the TCP protocol.
Tariscope Observer (or simply Observer) services are used for collecting and initial processing of CDRs in the Tariscope system. One Observer service is designed to work with one phone system. The received and processed CDR data is stored in the Tariscope database, and then in Tariscope you can view, filter, sort, group the call information, create various reports, inform the administrator about the occurrence of some events related to calls, etc.
Let's create a new Tariscope Observer service to collect CDRs from Alcatel-Lucent OXE using the TCP/IP.
From the Tariscope application menu, select Data Collection/Observer -> Observer management. The Data Collection/Observer page appears, an example of which is shown in Figure 1.
Figure 1
This page contains a list of previously created Observers in a table, as well as a toolbar.
Click the Add icon on the toolbar (the name of the icon appears when you hover over the icon). In the menu that appears, select the New observer item, which will bring up the window shown in Figure 2.
Figure 2
In the Name textbox, enter the name of the Observer. For example, it will be AlcatelOXE. Click Save. A new window will appear, confirming the creation of a new Observer. In this window, click on the Settings button.
The Tariscope Observer configuration (Alcatel OXE) page will appear, as shown in Figure 3.
Figure 3
In the Device position, "not selected" is indicated. This means that you must select a previously created phone system in Tariscope, from which call information will be received and processed by Observer. To do this, click on the link "here". The Equipment selection window appears, where you should select the previously created PBX: Alcatel-Lucent OXE.
In the Data Source list, select the TCP client item. After that, click on the Data source configuration button. The Data source configuration window appears, an example of which is shown in Figure 4.
Figure 4
In the Server position, enter the IP address of your PBX.
If Alcatel-Lucent OXE uses a different IP port than the one specified in the Port textbox, specify its value.
There is no need to specify anything in all other positions.
Click Done.
You can leave all other settings unchanged on the Tariscope Observer configuration page. If necessary, they can be replaced. A detailed description of all Observer parameters can be found in the document: Tariscope.4.6. Administrator's guide.
Click the Done button. On the Data Collection/Observer page, a new line with the name of the created Observer will appear in the table. Select this line and click the Edit icon on the toolbar. In the menu that appears, select the Observers’ scripts item. The corresponding page will be opened, an example of which is shown in Figure 5.
Figure 5
This setting is required in order to connect to the TCP/IP server of Alcatel-Lucent OXE to receive tickers with CDR data. For this type of PBX, the usual TCP connection of the client to the TCP server is not enough.
In the Event list, select the Data source connection item, and in the Script list, select the script: alcatelOXE-TCP-client.cs. This script will perform the appropriate data exchange when connected to the TCP/IP server of Alcatel-Lucent OXE, which will allow Observer to receive CDR data.
Click Save.
This completes the process of creating and configuring Tariscope. It can be run to get CDR data.
Tariscope update for 3CX v.18
In October 2021, 3CX released a new version, 18, of its IP PBX. Since the API was changed in this PBX, the corresponding updates related to the operation of the restriction feature were made to the Tariscope billing system.
Let us remind 3CX users that using Tariscope allows you not only to take into account telephone calls made through 3CX, but also to manage the budget spending on telephone calls. In Tariscope, you can set limits for specific subscribers or a group of subscribers in the amount of money or the duration of calls per month. When this limit is reached, Tariscope will close the exit from the PBX to a subscriber or a group of subscribers until the end of the current month. At the beginning of the first day of the next month, Tariscope will automatically remove this restriction. Thus, a company with 3CX and Tariscope can accurately plan the costs of telephone calls and fulfill the planned budget.
But these are not all the possibilities that the joint use of the Tariscope system with 3CX provides. A list of additional features is provided on the 3CX settings page of Tariscope, an example of which is shown below.
As you can see from this figure, Tariscope allows:
- Reject calls from subscribers whose balance is below the specified value. This setting is relevant only for users of the Tariscope Provider edition.
- Terminate calls with a cost over the specified cost. If this setting is specified, then from the moment the call starts, Tariscope calculates the maximum possible duration of this call, based on the specified allowable call cost, and if the calls of this duration are exceeded, the call is terminated.
- Terminate calls longer than the specified duration. The principle of operation of this setting is similar to the previous setting.
- Reject calls without an access code (authorization code). The authorization code is not used in the 3CX PBX, but it can be set in Tariscope. At the start of a call, Tariscope will check whether the dialed number contains an authorization code or not. If not, then the call is rejected.
- Reject calls to certain destinations. Area, country codes are listed as a list in this setting.
- Export information about call queues for building reports, which are contained in this data, as well as in data CDR.
- Correct call duration for different stages of transfer calls. CDR data from 3CX contains only the total duration for transfer calls, making it impossible to understand how long each subscriber took part in the call. Therefore, to resolve this issue, additional information is needed that can be obtained from 3CX.
- Automatically create and periodically synchronize subscriber information based on the information contained in 3CX.
All these capabilities allow you to more efficiently use the 3CX, receive complete information about the calls made and manage the company's budget for telephone calls.
Tariscope restriction feature for 3CX
Tariscope system provides the restriction feature for some telephone systems including 3CX. The restriction feature allows the Tariscope administrator to set a limit for the specific type of calls for a subscriber, group of subscribers, route, or gateway. The limit can be set in monetary or time terms. The specific type of calls is defined by a call category, which is assigned to area (country) codes. When a subscriber or a group of subscribers exhausts the set limit, Tariscope will prohibit the subscriber or group of subscribers to make calls until the end of the period. Tariscope will remove this restriction at the beginning of a new period.
The basic Tariscope license does not include the restriction feature. To use the restriction feature you should have the Tariscope license, which includes the feature. Below we will consider how to configure the restriction feature in Tariscope.
First, you must install and configure Tariscope in accordance with the Tariscope documentation (http://www.tariscope.com/en/88-support_en/tariscope-4-6-administrator-en/1456-tariscope-4-6-admin-en.html).
Create a category which will be associated with the restriction feature (http://www.tariscope.com/en/81-support_en/tariscope-web-administrator-en/1161-categories-en.html) as it shown in Figure 1.
Figure 1
In the Tariscope menu, select Provider and rates → desired provider → Outgoing → Destination codes. The Destination codes page is displayed. Select the country and city codes for which calls should be restricted and set them to the created category. The windows where you set a category for area codes is shown in Figure 2.
Figure 2
In the Tariscope menu, select Communication nodes → your node name → your 3CX → Restriction classes. The Restriction classes page is displayed.
Create a restriction group. The group can include several classes of restrictions. You must associate each of the classes with a specific category of calls on which the restriction is set. Often one class of restrictions is sufficient. Create a restriction class. To do this, select the restriction group and click on the Add class icon on the toolbar. The Restriction class window appears as it is shown in Figure 3.
Figure 3
In the Name text box, enter a name for the restriction class.
In the Class text box, you should enter information that can be used in a script for this restriction. Usually for 3CX this information does not play a role.
Click on the Save button.
To associate a class with a category, select the class and click on the Configure categories icon on the toolbar. The Categories window appears. An example on the window is shown in Figure 4.
Figure4
Turn on the category which you set for area and country codes and click on the Save button.
In the Tariscope menu, select the Subscribers item. The Subscribers active page is displayed. Depending on the license you have, you can set the limits to only subscribers or also groups of subscribers. If you have the Tariscope license with restriction feature of “Only for subscribers”, you set the limits only for subscribers. If you have the Tariscope license with restriction feature of “Only for subscribers or groups of subscribers” or “All”, you can set the limits both subscribers and groups of subscribers.
To set a limit for a subscriber, select the subscriber on the page and click on the Restrictions icon on the toolbar. The Edit page appears. Click on the Add icon on the toolbar to add a limit. The New restriction window appears as it is shown in Figure 5.
Figure 5
In the Categories list, select a category whish is used for restrictions.
In the Restriction type list, select the Money item if you set a money limit, or the Seconds item if you set a time limit.
In the Restriction class list, select the class which you created in the previous configuration step.
In the Credit box, enter a limit value.
Click Save.
Repeat these actions for other subscribers.
If you need to set a limit for group of subscribers, select the group and click on the Restrictions icon on the toolbar. Repeat the steps that were described above for the subscriber.
The last step in setting the restrictions is settings of Tariscope Observer. In the Tariscope menu, select Data Collection/Observer → Observers management. The Data Collection/Observer page appears. Select the row for 3CX and click on the Edit icon on the toolbar. The menu appears. Select the Observers’ scripts item. The page appears as it is shown in Figure 6.
Figure 6
If you want to restrict only subscribers, in the Event list, select the Change class of service item. In the Script list, select the setcos-subscriber-3cx-v18.cs item.
If you want to restrict a group of subscribers, in the Event list, select the Group state changed item. In the Script list, select the setcos-group-3cx-v18.cs item.
Then, click on the Edit button that is on the right of the Script list. The Edit window appears an example of which is shown in Figure 7.
Figure 7
You should change the values in the script specifying your values.
In the following line, specify a username which you use to login to 3CX with admin rights:
const string PBX_USERNAME = "username";
In the following line, specify a password which you use to login: const string PBX_PASSWORD = "admin_password";
In the following line, specify IP address and IP port of your 3CX:
const string PBX_HOST = "http://your_pbx_address:5000";
Click Save.
In the Unrestrict interval list, select the desired period. The default value is Every month.
In the Next auto unrestrict interval calendar box, select day and time when the set restrictions must be reset. For example, this could be the beginning of the first day of the next month if the interval is one month.
Click on the Save button.
Start the Tariscope Observer.
Who hung up first the call?
This question sometimes arises in companies that handle calls, and, for example, there are some complaints from customers that employee of your company, not listening to them, hang up. If you have a modern call center, it probably has the required report. But if such a report is available, then it will contain the necessary information only if the call was not transferred outside the call center. Usually, the call center does not have information on calls that have been transferred from it, for example, to company managers. If you need to have information on who first hung up on all calls and you are using Cisco Unified Communications Manager (CUCM) as your telephone system, we can suggest using Tariscope, which will allow you to get the information you need.
Tariscope system receives CDR and CMR from CUCM and allows you to analyze them in the views for calls.
To have information on who completed the call first, you need to specify in the Tariscope settings for CUCM that all CDR fields are saved, as shown in Figure 1.
Figure 1
It should be borne in mind that this will require additional disk space and the Tariscope database can quickly reach the limit if you use Microsoft SQL Server Express edition.
The usual view for calls in Tariscope does not have a field for displaying information on who first hung up. There is only information on the call termination cause code. But the relevant information can be found in the detailed information, which contains all the CDR fields. If you are interested in data on some individual calls, select them in the view and click on the Record Details icon on the toolbar. If you are interested in information on all calls, then click on the Details of all records icon. The call detail view can be displayed instead of the main view, or in a separate view, depending on what the user chooses. An example of a record detail view is shown in Figure 2.
Figure 2
As with the usual call view, this view allows you to select only those fields of interest for analysis. To identify who hung up first, analyze the origCause_value and destCause_value fields, which are highlighted in the figure. A value of 0 in the fields means which the party originated the call (origCause_value) or the party that received the call (destCause_value) hung up first. In this case, in the opposite field contains the value of 16 for normal call termination. For more information on call termination cause codes, see the article.
But this view may not always be convenient, because it does not contain information about the subscriber, which is in the usual view for calls. In Tariscope it is possible to combine the necessary information on the view of call details with the usual view for calls. A typical call view contains a large set of fields that are not used for each of the phone systems that are supported. Let us, for example, display the name of Number A or Number B, depending on which subscriber with Number A or Number B initiated the end of the conversation, in the field intended for the project code.
To do this, you need to execute the following SQL query:
ALTER VIEW dbo.viCalls as SELECT C.ID, PBXID, NodeID, RecType, CallDirection, CallType, Originator, OriginatorAuxId, Terminator, TerminatorAuxId, CONVERT(datetime2(0), CallDateTime) AS CallDateTime, CallSeconds, AccessCode, OriginalDialnumber, Dialnumber, OriginalCLID, CLID, DNIS, RingTimeSeconds, HoldTimeSeconds, ReleaseCause, NoAnswerReasonID, AuthCode, (CASE WHEN CCM.destCause_value = 0 THEN (CASE WHEN CCM.origCause_value = 0 THEN '' ELSE 'Number A' END) ELSE (CASE WHEN CCM.origCause_value = 0 THEN 'Number B' ELSE '' END) END) as ProjectCode, FromAbonentID, FromAbonentPlaneID, ToAbonentID, ToAbonentPlaneID, FromTelephoneID, ToTelephoneID, CategoryID, ParentCallID, Tarif, Cost, Cost2, FromDepartmentID, FromDepartment, ToDepartmentID, ToDepartment, FromTelephone, ToTelephone, CONVERT(datetime2(0), EndDateTime) AS EndDateTime, CallDate, CONVERT(datetime2(0), CallTime) AS CallTime, CallDuration, CallDurationDays, RingTime, HoldTime, NumberA, NumberB, FromAbonent, ToAbonent, ISNULL(ISNULL(FromAbonent, FromTelephone), NumberA) AS CallingParty,
ISNULL(ISNULL(ToAbonent, ToTelephone), NumberB) AS CalledParty
FROM dbo.viCallsInternal AS C
left join dbo.CallsCCM as CCM on C.ID = CCM.CallID
GO
The part of the SQL query that was added is highlighted in red.
This query can be executed by selecting in the menu: Additional options → SQL- queries and placing the above query, as shown in Figure 3.
Figure 3
Click the Execute button.
That is all there is to it. Then create a new view or add the Project code field to an existing call view. After that, the view will be like as shown in Figure 4.
Figure 4
As you can see in this figure, information is displayed on the party of the call that first hung up. Since we used the Project Code field to display this information, the previous column heading remains. It can be changed to anything, for example, "Who hung up". To do this, in Windows Explorer, find the file that corresponds to this view. The view files are located in the folder: ...\SoftPI\Tariscope\Views\[user name]\,
where [user name] is the Tariscope use name who created this view.
In the files of the view for which you want to change the name of the Project Code column, find the tags of <DisplayName>Project code</ DisplayName> that are located after the tags of <FullName>ProjectCode</ FullName> and replace the value in the <DisplayName> tag, for example "Who hung up". After that, refresh the view and it will be as shown in Figure 5.
Figure 5
If necessary, you can create reports that will contain this information, but this is a topic for another article.
Tariscope and Cisco Unified Communications Manager
Benefits of Tariscope to collect and analyze CDR and CMR from CUCM
Control of call quality for CUCM using Tariscope
Tariscope configuration to use the restriction feature with CUCM