Archive for the ‘TSAPI’ Category

Introduction

There are two methods which allow Asterisk to get call information from Avaya, CallAnalytics and RouteManager are using in the two methods respectively.

CallAnalytics Method

The first method can be found from this Avaya documentation, the UCID is passing from Avaya to Asterisk using the SIP UUI header. By sending the UUI field as parameter to CallAnalytics, we can get the information details related to the call which is dialed from Avaya to Asterisk. The REST API of the CallAnalytics is http://IP.PORT/callinfo?hexucid=SIPHEADER_UUI

The SIP header under different call scenario is extracted and the REST API to the call information is provided for your reference.

Manual dial without using CTI
INVITE sip:52001@asterisk SIP/2.0
From: “E.50001” <sip:50001@upinget.com>;tag=042529099c9e914aab5cea912500
To: <sip:52001@asterisk>
Call-ID: 042529099c9e914bab5cea912500
CSeq: 1 INVITE
Max-Forwards: 71
Via: SIP/2.0/TCP 10.10.1.100;branch=z9hG4bK042529099c9e914cab5cea912500
Supported: 100rel,histinfo,join,replaces,sdp-anat,timer
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,SUBSCRIBE,NOTIFY,REFER,INFO,PRACK,PUBLISH,UPDATE
User-Agent: Avaya/R016x.03.3.256.0
Contact: “E.50001” <sip:50001@10.10.1.100;transport=tcp>
Route: <sip:10.10.1.200;transport=tcp;lr;phase=terminating>
Accept-Language: en
Alert-Info: <cid:internal@asterisk>;avaya-cm-alert-type=internal
Min-SE: 1200
P-Asserted-Identity: “E.50001” <sip:50001@upinget.com>
Record-Route: <sip:10.10.1.100;transport=tcp;lr>
Session-Expires: 1200;refresher=uac
User-to-User: 00FA080002175F5D676591;encoding=hex
Diversion: <sip:40001@upinget.com>;reason=”unknown”
Content-Type: application/sdp
Content-Length: 208

To get the call information of Avaya, using the CallAnalytics REST API
http://IP.PORT/callinfo?hexucid=00FA080002175F5D676591
or
http://IP.PORT/callinfo?hexucid=0002175F5D676591

Dial using CTI with User Specific data
INVITE sip:52001@asterisk SIP/2.0
From: “E.50001” <sip:50001@upinget.com>;tag=8090c4e399c9e9120ac5cea912500
To: <sip:52001@asterisk>
Call-ID: 8090c4e399c9e9121ac5cea912500
CSeq: 1 INVITE
Max-Forwards: 71
Via: SIP/2.0/TCP 10.10.1.100;branch=z9hG4bK8090c4e399c9e9122ac5cea912500
Supported: 100rel,histinfo,join,replaces,sdp-anat,timer
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,SUBSCRIBE,NOTIFY,REFER,INFO,PRACK,PUBLISH,UPDATE
User-Agent: Avaya/R016x.03.3.256.0
Contact: “E.50001” <sip:50001@10.10.1.100;transport=tcp>
Route: <sip:10.10.1.200;transport=tcp;lr;phase=terminating>
Accept-Language: en
Alert-Info: <cid:internal@asterisk>;avaya-cm-alert-type=internal
Min-SE: 1200
P-Asserted-Identity: “E.50001” <sip:50001@upinget.com>
Record-Route: <sip:10.10.1.100;transport=tcp;lr>
Session-Expires: 1200;refresher=uac
User-to-User: 00C816FC7C2215000000005D6766210ABB71D013EC00000009FA08000218085D676621;encoding=hex
Diversion: <sip:40001@upinget.com>;reason=”unknown”
Content-Type: application/sdp
Content-Length: 208

To get the call information of Avaya, using the CallAnalytics REST API
http://IP.PORT/callinfo?hexucid=00C816FC7C2215000000005D6766210ABB71D013EC00000009FA08000218085D676621
or
http://IP.PORT/callinfo?hexucid=000218085D676621
To update the user data to CallAnalytics or CTI middleware such as CtiSVR, using the CallAnalytics REST API
http://IP.PORT/setuserdata?userdata=41101234567890&uui=FC7C2215000000005D6766210ABB71D013EC00000009

Dial using CTI with ASCII data
INVITE sip:52001@asterisk SIP/2.0
From: “E.50001” <sip:50001@upinget.com>;tag=8024fa5a9ac9e9110ad5cea912500
To: <sip:52001@asterisk>
Call-ID: 8024fa5a9ac9e9111ad5cea912500
CSeq: 1 INVITE
Max-Forwards: 71
Via: SIP/2.0/TCP 10.10.1.100;branch=z9hG4bK8024fa5a9ac9e9112ad5cea912500
Supported: 100rel,histinfo,join,replaces,sdp-anat,timer
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,SUBSCRIBE,NOTIFY,REFER,INFO,PRACK,PUBLISH,UPDATE
User-Agent: Avaya/R016x.03.3.256.0
Contact: “E.50001” <sip:50001@10.10.1.100;transport=tcp>
Route: <sip:10.10.1.200;transport=tcp;lr;phase=terminating>
Accept-Language: en
Alert-Info: <cid:internal@asterisk>;avaya-cm-alert-type=internal
Min-SE: 1200
P-Asserted-Identity: “E.50001” <sip:50001@upinget.com>
Record-Route: <sip:10.10.1.100;transport=tcp;lr>
Session-Expires: 1200;refresher=uac
User-to-User: 04C809313233343536373839FA08000218EF5D6766E9;encoding=hex
Diversion: <sip:40001@upinget.com>;reason=”unknown”
Content-Type: application/sdp
Content-Length: 208

The ASCII data is 313233343536373839
To get the call information of Avaya, using the CallAnalytics REST API
http://IP.PORT/callinfo?hexucid=04C809313233343536373839FA08000218EF5D6766E9
or
http://IP.PORT/callinfo?hexucid=000218EF5D6766E9

Route Manager Method

The second method is by Avaya Adjunct Routing. TSAPI UUI data can be passing to Asterisk by using of Avaya Adjunct Routing, this enables us to use Asterisk as IVR for call center environment. For example, many IVR applications such as Language Selection, Survey and PIN Verification can be implemented by the Asterisk. Our solution included using tools such is RouteMgr, callAnalytics, ctiSVR and uuiSVR, the architecture diagram is shown below.

The RouteMgr is for routing of incoming calls and creation of UUI data for Avaya and Asterisk integration. RouteMgr required advanced TSAPI license, it creates UUI data when the call has no attached UUI data and routes the call to destination based the routing configuration. Asterisk will see the UUI data in the SIP header, it can retrieve the call information which is in JSON format by sending REST command to callAnalytics. When Asterisk wants to transfer the call to Agent, it can update the user data with the same UUI by sending REST command to ctiSVR. Once call is transferred to Agent, the Agent softphone which has connection to AES will receive the call event with the UUI, the user data can be obtained by sending REST command to ctiSVR.

Avaya Monitoring Tool

Posted: June 10, 2018 in System Monitoring, TSAPI

Introduction

This tool uses Avaya TSAPI library, it monitors Avaya resources such as Trunk groups, Hunt groups and Test numbers. When default conditions such as Trunk group member, Hunt group member becomes ZERO or the Test number is unreachable, it sends notification emails to your administrators. Some triggers such as Skill Login or Logout can be executed right after such condition occurred. This tool also provides high level testers such as Line Tester and Recorder Tester for the contact center. The Line Tester is for testing of IVR circuits one by one. The Recorder Tester makes calls on behalf of agent extensions, voice recording will be triggered for these agent extensions so you can verify the healthiness of voice recording system before the operating hours of your agents. The tool can integrate with Nagios so you can monitor the Avaya resources in Nagios.

Preparation and Password Encryption

  • The access MDB file stored the the username and password of Avaya AE server for this tool. For security reason, a tool called encryptpasswd.exe is provided to generate an encrypted password for the installation and configuration of the software
  • Execute the program, generate the encrypted password for the user of Avaya AE server for this tool, then paste the encrypted password to a parameter called tm_tlink_01. For example, the encrypted password for “p@ssword” is “R3NIw1yJMLlnPFzEQtuh2A==”
  • encryptpasswd

64 bit Windows System 

  • For 64 bit Windows system, please follow the steps below
    • Configure ODBC System DSN using C:WindowsSysWOW64odbcad32.exe
    • Configure the Windows firewall if you configure the tool to support Nagios monitoring

Windows Installation

  • Download the TSAPI client for Windows 32-bit from Avaya web site, it contains the library files. You are required to register DevConnect before you can access the download page.
  • Download the Avaya Monitoring Tool zip file here.
  • Follow the installation steps below to install the software.
    • Extract all the files into directory c:\program files\avayamonitor
    • Open Windows Command Prompt, enter the following commands to register the program as Windows Service
      • cd c:\program files\avayamonitor
      • avayamonitor -i
    • Open ODBC Setting, create System DSN called AVAYAMONITORCFG for Microsoft Access Driver and point the DB to avayamonitor.mdb which is located in the directory c:\program files\avayamonitor
    • Open the Access file, edit the value of parameters tm_tlink_01 and tm_tlink_02 to the TLINK of your AES servers in the tParameter table
    • Edit the value of parameter tg_emailserverip to define your email server IP address.
    • Edit the value of parameter tg_emailsmtpport to define the SMTP port number of your email server. The default value is 25.
    • Edit the value of parameter tg_emailusername to define the  username of email agent which is responsible to send notification emails.
    • Start the Windows Service AvayaMonitor
    • Telnet to localhost and port number 14008, enter username tcpgate and password tcpgate01 to access the program console
    • Type genpass in the program console to generate encrypted password string for the email agent, copy the string for later use.
    • Stop the Windows Service AvayaMonitor
    • Open the Access File again for other parameters
    • Edit the value of parameter tg_emailpasswd to define the password of the email agent. The password should be in encrypted format, you can use console command genpass to generate the encrypted password.
    • Edit the value of parameter tg_emailsenderdisplay to define the display name of the email agent.
    • Edit the value of parameter tg_emailauth to define whether authentication is required between your machine and the email server. When your email server trust your machine, set it to false, otherwise set it to true.
    • Edit the value of parameter tg_emailssl to define whether SSL communication is required for the SMTP session. The default value is false, set it to true when SSL is required.
    • Start the Windows Service AvayaMonitor
    • Telnet to localhost and port number 14008, enter username tcpgate and password tcpgate01 to access the program console
    • Enter the following command to add trunk group monitoring
      • add trunk 412 24 name
      • Hint: 412 is trunk access code (TAC), provide a name so you can identify it easily
      • Hint: 24 is the number of member of the trunk
    • Enter the following command to add IVR split monitoring
      • add ivrsplit 12345 name
      • Hint: 12345 is split number for IVR, provide a name so you can identify it easily
      • Hint: when the number of login agent is ZERO, alert email will be sent
    • Enter the following command to add Agent split monitoring
      • add agentsplit 12346 name
      • Hint: 12346 is split number for Agent, provide a name so you can identify it easily
      • Hint: when the number of login agent is ZERO and there is call in QUEUE, alert email will be sent
    • Enter the following command to monitor queue size of split
      • add splitqueue 12345 10 name 
      • Hint: 12345 is split number for IVR or Agent
      • Hint: when the call queue size > threshold value (e.g. 10), an alert email will be sent
    • Enter the following command to add Emergency split (or called Control split) monitoring
      • add emergencysplit 12347 name
      • Hint: 12347 is Emergency split, provide a name so you can identify it easily
      • Hint: when the number of login agent is > ZERO, alert email will be sent
    • Enter the following commands for test number monitoring
      • add phantom 12345
      • Hint: 12345 is phantom device which is used for call dialing
      • add testnumber 912345678 description
      • Hint: phantom device 12345 will be used and the number 912345678 will be dialed at interval that specify by parameter tm_schedulerinterval
    • Enter the following command in the program console to add your email address
      • add email youremail@company.com
      • Hint: replace your email address please
    • Enter the following command in the program console, you will receive debug information.
      • trace on asc
    • Enter the following command in the program console, you will get the help message
      • help

Uninstallation

  • Stop the Window Service AvayaMonitor
  • Open Windows Command Prompt, enter the following commands to uninstall the program from Windows Service
    • cd c:\program files\avayamonitor
    • AvayaMonitor -u

RedHat/CentOS 7.x Installation Guide

  • centos
  • The following is for RedHat/CentOS 7 (64 bit only), other Linux distributions are not supported
  • Avaya provides only 32bit version of TSAPI SDK, the AvayaMonitor executable is also a 32bit application
  • Login as root and execute the following commands
  • yum update
  • reboot
  • Install the MySQL 8.x
  • sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    sudo yum --enablerepo=mysql80-community install mysql-community-server
    sudo service mysqld start
    grep "A temporary password" /var/log/mysqld.log
    mysql_secure_installation
  • Install the following packages
  • yum install glibc.i686 libstdc++.i686 expat.i686 unixODBC.i686 openssl-libs.i686 telnet wget telnet
  • wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-setup-8.0.22-1.el7.i686.rpm
    wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.22-1.el7.i686.rpm
    yum install mysql-connector-odbc*
    ln -s /usr/lib/libmyodbc8a.so /usr/lib/libmyodbc5.so
  • Download Avaya Aura AE Services 8.1.3 TSAPI Client for RHEL 7 from DevConnect
  • chmod +x tsapi-client-linux-8.1.3-25.i386.bin
  • Execute the installation file tsapi-client-linux-8.1.3-25.i386.bin
    • ./tsapi-client-linux-8.1.3-25.i386.bin
  • Edit /usr/lib/tslibrc, change 127.0.0.1 to the IP address of your Avaya AES
  • Config and start MySQL
  • chkconfig mysqld on
  • service mysqld start
  • Create database and user
  • mysql -u root -p
  • create database avayamonitor;
  • create user 'tcpgate'@'localhost' identified by 'P@ssw0rd';
  • grant all on avayamonitor.* to 'tcpgate'@'localhost';
  • flush privileges;
  • quit
  • mysql -h localhost -u tcpgate -p avayamonitor <avayamonitor.sql
  • Copy the following to /etc/odbc.ini file
    • [AVAYAMONITORCFG]
      Description = MySQL connection to AvayaMonitor
      Driver = MySQL
      Server = localhost
      Port = 3306
      Database = avayamonitor
  • Create user and copy files
  • useradd upinget
  • mkdir /usr/local/avayamonitor
  • cp AvayaMonitor /usr/local/avayamonitor
  • chmod +x /usr/local/avayamonitor/AvayaMonitor
  • chown -R upinget.upinget /usr/local/avayamonitor
  • mkdir -p /var/log/avayamonitor
  • chown -R upinget.upinget /var/log/avayamonitor
  • Auto Start the daemon after server reboot
  • echo "rm /tmp/avayamonitor.log" >> /etc/rc.local
  • echo "su ctisvr -c '/usr/local/avayamonitor/AvayaMonitor -u tcpgate -p 40UIt9O3PqtwsSn+Wx6pig=='" >> /etc/rc.local
  • chmod +x /etc/rc.local

Triggers ACD Login/Logout When Check Error

  • Enter the following command to implement skill trigger for a monitored number
    • genpass
      • Hint: use the genpass command to generate an encrypted password for acd login
    • add skilltrigger 912345678 66001 55001 oKd75RltJLcf+uXkp2CYHA== login
      • Hint: 912345678 is the monitoring number resource, it can be trunk group, ivr split, agent split or test number
      • Hint: 66001 is an extension number for ACD login or logout
      • Hint: 55001 is an agnt ID for ACD login or logout
      • Hint: oKd75RltJLcf+uXkp2CYHA== is encrypted password, use that one generated by genpass command
      • Hint: login means ACD login when error occurred, logout means ACD logout when error occurred

Triggers Call Transfer to Announcement Message When Check Error

  • Enter the following command to implement transfer trigger for a monitored number
    • add transfertrigger 912345678 987654321 10001 10002 Comment
      • Hint: 912345678 is the monitoring number resources, it can be hunt group, ivr split, agent split or testing number
      • Hint: 987654321 is the dialed number when error or resume happened
      • Hint: 10001 is an announcement number for error condition
      • Hint: 10002 is an announcement number for resume condition

Triggers Make Call and Sends DTMF Pattern 

  • Enter the following command to implement dtmf trigger for a monitored number
    • add dtmf 0 1 5 123
    • add dtmf 0 2 6 999
      • Hint: dtmf parttern 0 has two steps, step 1 wait 5 seconds and sends DTMF 123, step 2 waits 6 seconds and sends DTMF 999
    • add dtmftrigger 912345678 987654321 0 1 Comment 
      • Hint: 912345678 is the monitoring number resources, it can be hunt group, ivr split, agent split or testing number
      • Hint: 987654321 is the dialed number when error or resume happened
      • Hint: 0 is the dtmf pattern for error condition
      • Hint: 1 is the dtmf pattern for resume condition

Triggers RESTful API 

Line Tester Feature 

  • Enter the following command to add a line tester job
    • add ltjob 1 apple 7 8 
      • add a line tester job called apple, start dialing from 7:00am and end at 8:00am
  • Enter the following command to add internal stations for testing
    • add ltstation 1 12345 
      • add one station to the job
    • bulkadd ltstation 1 12345 12350
      • add the range of stations to the job

Recorder Tester Feature 

  • Enter the following command to add a recorder tester job
    • add rtjob 1 orange 12345 5 6 
      • add a recorder test job called orange, start dialing announcement 12345 from 5:00am and end at 6:00am
  • Enter the following command to add agent stations for testing
    • add rtstation 1 40001
      • add one station to the job
    • bulkadd rtstation 1 40001 40005 
      • add the range of stations to the job

Answer Call Tester Feature 

  • Enter the following command to add a answer call tester job
    • add answerjob 1 orange 5 6  12345 54321
      • add a answer call test job called orange, start the job from 5:00am to 6:00am, call number 12345 and expected answered by 54321

Nagios XI Integration

AvayaMonitor can integrate with Nagios by REST interface. Nagios XI is free when the number of monitoring host less than 7 and it is a good tool when using it to monitor Avaya objects such as Trunk, IVR splits, Agent splits and Hotline numbers. The following is the procedure to install and configure Nagios XI on the AvayaMonitor CentOS solution.

  • Follow this guide to install Nagiox XI
  • Install the following package on AvayaMonitor CentOS server
    • yum install perl-JSON
    • yum install perl-Nagios-Plugin
  • Follow this guide to install check_json.pl plugin
  • Once the plugin is added, add the following commands in Nagios
    • check_trunk
      • Command Name
        • check_trunk
      • Command Line
      • Command Type
        • check command
      • Active
        • checked
    • check_ivrsplit
      • Command Name
        • check_ivrsplit
      • Command Line
      • Command Type
        • check command
      • Active
        • checked
    • check_agentsplit
      • Command Name
        • check_agentsplit
      • Command Line
      • Command Type
        • check command
      • Active
        • checked
    • check_number
      • Command Name
        • check_number
      • Command Line
      • Command Type
        • check command
      • Active
        • checked
  • Then add your services one by one, for example
  • After the services were added, you can see the status of the services in the Nagios view

License 

btn_buynowCC_LG_wCUP

ctiSVR 1.2.10 Released

Posted: April 26, 2018 in News, TSAPI

ctiSVR 1.2.10 just released, this version has the following updates:

1. Change TSAPI event notification method from acsSetESR to acsEventNotify.
2. calltoui.exe supports Microsoft Dynamic CRM generic listener adapter.
3. calltoui.exe supports parameterized URL for inbound call solution.
4. Recompile Linux distribution to fix potential segmentation fault caused by strtok function.

CallAnalytics 2.0.6 Released

Posted: February 12, 2018 in News, TSAPI

CallAnalytics 2.0.6 just released. This release has the following updates

1. Fixed a minor bug without releasing device in the Splunk and databaes logging.
2. Added a REST interface to query call answer extensions.
3. Fixed a bug to prevent multi-threading dead locking.

CallAnalytics 2.0.5 Released

Posted: December 1, 2017 in News, TSAPI

CallAnalytics 2.0.5 just released. This release has the following updates

1. Add a new parameter called ca_splunklogdir. When it is defined, all Splunk logs are saved in the directory and the log is kept daily basis.
2. Supports logging of clipboard copy data from ClipBoardAgent.
3. Handle CSTA_DIVERTED event for VDN and extension.
4. The REST interface supports QueryACDSplit and new report called qacdsplit can be added to log the data in Splunk.
5. Support multiple objects in the report.
6. Extension call abandon event is logged.
7. Call established caused by playing of vector announcement will be checked.
8. Call connection cleared caused by playing of vector announcement will be checked.
9. Added alert time, answer time, alert duration and answer duration in the database and Splunk interfaces.

CtiSVR 1.2.9 Released

Posted: October 10, 2017 in News, TSAPI

CtiSVR 1.2.9 just released. This version has the following updates

1. Increased buffer size from 1024 to 4096 for bigger CSTA and private data events.
2. Fine tuned the stream checking to avoid broken stream false alarm detection.
3. A parameter called ivr_privatedataversion is added, the default value is 6.
4. Supports SingleStepTransfer when the value of ivr_privatedataversion is equal or large than 8.
5. The failed event included the calling device when the ivr_privatedataversion is equal or large than 8.

Customers who subscribed the annual email support service are entitled to software upgrade. Please contact support for the download URL.

This post is about using Nagios plugin check_json to monitor system status. Since CtiSVR can return XML or JSON as payload over the REST interface, we can use the check_json plugin to monitor Avaya resource such as Trunk Group and ACD Hunt Group.

For example, the following command is to query Avaya Trunk Group (TAC) 3491, the result is is WARNING if the used trunks over 15 and CRITICAL if the used trunk over 20. The threshold format for Nagios is here.

check_json.pl --url 'http://$HOSTADDRESS$:9001/querytrunkgroup?tac=3491&payload=json' --attribute '{usedtrunks}' -w15 -c20 --perfvars 'idletrunks,usedtrunks'

To monitor Avaya Hunt Group such as the number of call queued, we can use the following command to monitor ACD Hunt Group 20666, the result is WARNING when the number of call queued over 0 and it is CRITICAL when the number of call queued over 5.

check_json.pl --url 'http://$HOSTADDRESS$:9001/queryacdsplit?split=20666&payload=json' --attribute '{callsqueue}' -w0 -c5 --perfvars 'callsqueue'

AstLogger 1.4.13 and DMCCLogger 1.0.2 just released. The updates are

1. Fixed AES 7.0 SingleStepConference failed issue in AstLogger.
2. Supports waveform display in the AstLoggerWeb and DMCCLoggerWeb applications.

Call Analytics

Posted: April 30, 2017 in TSAPI

Introduction

Call Analytics tool is a server program that monitors Avaya VDNs, ACD Hunt Groups and Extension objects, it extracts useful information from monitoring events and outputs call and agent records for applications such as reporting, wallboard integration and call log analysis. The Call Analytics tool is a CTI reporting and real time monitoring engine and it is an ideal tool when CMS is not in placed for call center environment.

callanalytics

The Call Analytics tool uses Avaya TSAPI library, it monitors these Avaya objects and produces the data for real time reports, splunk and database logging. Also, the data can be accessed by various interfaces such as API DLL, database and REST interface. The Call Analytics tool is useful in the following areas:

  • To detect nuisance call attacks by monitoring abandon calls and short duration calls
  • To detect fraud activities such as KPI manipulation which caused by agent short duraton calls
  • To identify the callers of the abandon and short duration calls
  • To capture user data from TSAPI UUI and store the user data together with the call data in Splunk and database
  • To provide real time data for building of real time reports and dashboards
  • To trace a call from its beginning to end, multiple call records can be correlated by common key such as UCID
  • To list customers waiting in queue together with their calling number and waiting time
  • To find out how long each customer waits for an agent
  • To find out the frequency and duration of an agent to perform hold call
  • To find out agent or customer who hangups a call first
  • Uses the VDN detail call logging which stored in the database for different kind of reports
  • Uses the abandon and short duration data for different kind of CRM application
  • Passing Data between Avaya and Asterisk

See Also: clintSVR / CMS Real Time Data

See Also: bcmsSVR/BCMS Real Time and Historical Report Data

See Also: CallAnalyticsLight

See Also: Splunk App CallAnalytics

See Also: Passing CTI Data between Avaya and Asterisk

Preparation and Password Encryption

  • The access MDB file stored the username and password of AE server. For security reason, a tool called encryptpasswd.exe is provided to generate an encrypted password for the installation and configuration of the software in Windows environment
  • Execute the program, generate an encrypted password for the AE server CTI user, then paste the encrypted password to parameter ca_tlink01 or ca_tlink02. For example, the encrypted password for “p@ssword” is “R3NIw1yJMLlnPFzEQtuh2A==”
  • encryptpasswd

64 bit Windows System 

  • For 64 bit Windows system, please follow the steps below
    • Configure ODBC System DSN using
      • C:\Windows\SysWOW64\odbcad32.exe

Windows Installation

  • Download the TSAPI client for Windows 32-bit from Avaya web site, it contains the TSAPI library files. DevConnect registration is required before you can access the download page.
  • Download the Call Analytics Tool zip file here.
  • Follow the installation steps below to install the software.
    • Extract all the files into directory c:\program files\callanalytics
    • Open Windows Command Prompt, enter the following commands to register the program as Windows Service.
      • cd c:\program files\callanalytics
      • callanalytics -i
    • Open ODBC Setting, create System DSN called CALLANALYTICSCFG for Microsoft Access Driver and point to callanalytics.mdb which is located in the directory c:\program files\callanalytics
    • Open the Access file, edit the value of parameters ca_tlink_01 and ca_tlink_02 to the TLINK of your AES servers in the tParameter table.
    • Edit the value of parameter ca_movingavgmin to define the moving average period for the calculation of abandon and short duration call rate. The default value is 15 minutes.
    • Edit the value of parameter ca_intervalstatmin to define the interval statistics period for the calculation of abandon and short duration call rate. The default value is 30 minutes.
    • Edit the value of parameter ca_shortduration to define the number of seconds for short duration calls. The default value is 3 seconds.
    • Edit the value of parameter ca_agentstatechecksplit to true when you want to poll agent state of agents that login to split, the default value is true
    • Edit the value of parameter ca_agentstaterefreshrate to the number of seconds for each polling, the default value is 15 seconds, the minimum value is 5 seconds.
    • Edit the value of parameter ca_cache_timeout to define the number of seconds as cache time for real time reports. This setting reduce the AES loading when multiple clients retrieve the same report during the cache period.
    • Edit the value of parameters ca_splunkhost and ca_splunkport with IP address of Splunk and port number for TCP data input.
    • Start the Windows Service callanalytics
    • Telnet to localhost and port number 14003, enter username tcpgate and password tcpgate01 to access the program console.
    • Enter the following command in the program console, you will receive information when there is call abandon and short duration call.
      • trace on asc
    • Enter the following command to add your VDN
      • add vdn xxxxx
    • Enter the following command to add your ACD
      • add acd xxxxx
    • Enter the following command to add your Extension
      • add extension xxxxx
    • Enter the following command to display help message
      • help
  • After installation, we can use Splunk to implement real time and historical reports. These reports can be viewed as Splunk Dashboards. Also we can use to send Alert when certain predefined condition is occurred. The following is description is for each of the scenario and the Splunk search command and Visualization are provided for your easy reference.

RedHat/CentOS 7.x Installation Guide

  • centosredhat
  • The following is for RedHat/CentOS 7 (64 bit only), other Linux distributions are not supported
  • Avaya provides only 32bit version of TSAPI SDK, the CallAnalytics executable is also a 32bit application
  • Login as root and execute the following commands
  • yum update
  • reboot
  • Install the MySQL 8.x
  • sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
    sudo yum --enablerepo=mysql80-community install mysql-community-server
    sudo service mysqld start
    grep "A temporary password" /var/log/mysqld.log
    mysql_secure_installation
  • Install the following packages
  • yum install glibc.i686 libstdc++.i686 expat.i686 unixODBC.i686 openssl-libs.i686 telnet wget telnet
  • wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-setup-8.0.22-1.el7.i686.rpm
    wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.22-1.el7.i686.rpm
    yum install mysql-connector-odbc*
    ln -s /usr/lib/libmyodbc8a.so /usr/lib/libmyodbc5.so
  • Download Avaya Aura AE Services 8.1.3 TSAPI Client for RHEL 7 from DevConnect
  • chmod +x tsapi-client-linux-8.1.3-25.i386.bin
  • Execute the installation file tsapi-client-linux-8.1.3-25.i386.bin
    • ./tsapi-client-linux-8.1.3-25.i386.bin
  • Edit /usr/lib/tslibrc, change 127.0.0.1 to the IP address of your Avaya AES
  • Config and start MySQL
  • chkconfig mysqld on
  • service mysqld start
  • Create database and user
  • mysql -u root -p
  • create database callanalyticscfg;
  • create database callanalytics;
  • create user 'tcpgate'@'localhost' identified by 'P@ssw0rd';
  • grant all on callanalyticscfg.* to 'tcpgate'@'localhost';
  • grant all on callanalytics.* to 'tcpgate'@'localhost';
  • flush privileges;
  • quit
  • mysql -h localhost -u tcpgate -p callanalyticscfg < callanalyticscfg.sql
  • mysql -h localhost -u tcpgate -p callanalytics < callanalytics_MYSQL.sql
  • Copy the following to /etc/odbc.ini file
    • [CALLANALYTICSCFG]
      Description = MySQL connection to callAnalytics
      Driver = MySQL
      Server = localhost
      Port = 3306
      Database = callanalyticscfg
    • [CALLANALYTICSDBCFG]
      Description = MySQL connection to callAnalytics
      Driver = MySQL
      Server = localhost
      Port = 3306
      Database = callanalytics
  • Create user and copy files
  • useradd upinget
  • mkdir /usr/local/upinget
  • cp CallAnalytics /usr/local/upinget
  • chmod +x /usr/local/upinget/CallAnalytics
  • chown -R upinget.upinget /usr/local/upinget
  • mkdir -p /var/log/callanalytics
  • chown -R upinget.upinget /var/log/callanalytics
  • Auto start the daemon after server reboot
  • echo "rm /tmp/callanalytics.log" >> /etc/rc.local
  • echo "su upinget -c '/usr/local/upinget/CallAnalytics -u tcpgate -p 40UIt9O3PqtwsSn+Wx6pig=='" >> /etc/rc.local
  • chmod +x /etc/rc.local

Splunk Integration using HTTP Event Collector 

  • Follow this guide to enable HTTP Event Collector in Splunk
  • Create a token specific for Call Analytics application, copy the token after its creation, it is suggested to create a token for each specific application and link the token to it’s index
  • Update the parameter ca_splunkhectoken using the newly created token
    • update parameter ca_splunkhectoken new_created_token
  • Update the parameter ca_splunkhecurl using your site specific Splunk url
  • Update the parameter ca_splunkprotocol to use HTTP Event Collector
    • update parameter ca_splunkprotocol hec 
  • Update the parameter ca_splunkhecchannel using the newly create token
    • update parameter ca_splunkhecchannel new_created_token
  • Update the parameter ca_splunkdataformat to use JSON format
    • update parameter ca_splunkdataformat json 
  • Reload the configuration
    • reload
  • If insert to Splunk failure, the data will be written to a local file called splunk_err.txt. You can upload the data to Splunk manually using curl command

Real Time Agent Snapshot  

  • You need to add a report agent to execute agent snapshot report in order to generate the data to Splunk, the command to add this report in tcpgate console is
    •  add agentsnapshot all 15 agent_snapshot_every_15s
    • Hint: Execute agent snapshot report every 15 seconds
  • To snapshot the current status of each agent, the Splunk command is
  • index=callanalytics logtype=agentsnapshot [search index=callanalytics logtype=agentsnapshot progress=end | head 1 | fields + timestamp] progress=start | chart count by mode, talkstate
  • The Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Real Time Calls in Queue for Specific Split

  • You need to add a report agent to execute the SplitSkillStatus report in order to generate data to Splunk, the command to add this report in tcpgate console is
    • add splitskillstatus xxxxx 15 SplitSkillStatus_15s
    • Hint: Execute SplitSkillStatus report every 15 seconds
  • To find calls in queue for a specific split, the Splunk command is
  • index=callanalytics logtype=splitskillstatus  split=xxxxx | head 1 | stats values(callsqueue) as CallQueued 
  • Replace the xxxxx with the specific split, the Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Real Time Top 10 AUX Agents with Reason Code

  • To find out the top 10 AUX agents with longest duration, the Splunk command is
  • index=callanalytics logtype=agentsnapshot [search index=callanalytics logtype=agentsnapshot progress=end | head 1 | fields + timestamp] progress=start mode=AUX | table agentid, duration, reasoncode | sort - duration limit=10
  • The Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Real Time Split Skill Status Summary – Moving Statistics

  • To display major moving statistics of all splits , the Splunk command is
  • index=callanalytics logtype=splitskillstatus | dedup split sortby -time | table split, agentsavailable, agentslogon, callsqueue, awt, lwt, ms_asa, ms_acdcalls, ms_avgacdtime, ms_abancalls, ms_abanrate
  • The Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Real Time Split Skill Status Summary – Interval Statistics

  • To display major current interval statistics of all splits , the Splunk command is
  • index=callanalytics logtype=splitskillstatus | dedup split sortby -time | table is_starttime, is_endtime, split, agentsavailable, agentslogon, callsqueue, awt, lwt, is_asa, is_acdcalls, is_avgacdtime, is_abancalls, is_abanrate
  • The Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Real Time Top 10 Connected Calls Sorted by Duration 

  • You need to add a report agent to execute the SplitSkillStatus report in order to generate data to Splunk, the command to add this report in tcpgate console is
    • add vdnsnapshot all 15 vdnsnapshot_every_15s
    • Hint: Execute vdn snapshot report every 15 seconds
  • To display top 10 connected calls sorted by duration , the Splunk command is
  • index=callanalytics logtype=vdnsnapshot [search index=callanalytics logtype=vdnsnapshot progress=end | head 1 | fields + timestamp] progress=start callstate!=queued | eval caller = if (len(calling)>len(origcalling),calling,origcalling) | table vdn, split, caller, agentid, answering, callstate, callduration, trunkgroup, trunkmember | sort - callduration limit=10
  • The Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Real Time Top 10 Queued Calls Sorted by Duration 

  • To display top 10 queued calls sorted by duration , the Splunk command is
  • index=callanalytics logtype=vdnsnapshot [search index=callanalytics logtype=vdnsnapshot progress=end | head 1 | fields + timestamp] progress=start callstate=queued | eval caller = if (len(calling)>len(origcalling),calling,origcalling) | table vdn, split, caller, agentid, answering, callstate, callduration, trunkgroup, trunkmember | sort - callduration limit=10
  • The Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Real Time AUX Reason with Average Duration

  • To display the distribution of AUX reason code together with the average duration, the Splunk command is
  • index=callanalytics logtype=agentsnapshot [search index=callanalytics logtype=agentsnapshot progress=end | head 1 | fields + timestamp] | rename reasoncode as "AUX Reason" | chart count as Count, avg(duration) as Duration by "AUX Reason" | eval Duration=round(Duration,0) 
  • The Splunk Visualization is
  • We can add the report to Spunk Dashboard with refresh rate 15 seconds, the final result is

Database Logging

  • The following example is to create MySQL database and tables
  • CREATE DATABASE callanalytics;
    CREATE USER 'callanalytics'@'localhost' IDENTIFIED BY 'analyticscall';
    CREATE USER 'callanalytics'@'%' IDENTIFIED BY 'analyticscall';
    GRANT ALL ON callanalytics.* TO 'callanalytics'@'localhost';
    GRANT ALL ON callanalytics.* TO 'callanalytics'@'%';
    FLUSH PRIVILEGES;
  • Use mysql to import table information as follow:
  • mysql -h localhost -u callanalytics -p callanalytics < callanalytics.sql
  • Open ODBC Setting, create a System DSN called CALLANALYTICSDBCFG for MySQL ODBC Driver, MySQL is used to store callinfo, abandon and short duration calls details information.
  • Edit the parameters follow:
    • ca_dbsqltype, supported database such as mysqlmssql and oracle
    • ca_dbdsn, enter the ODBC System DSN, the default value is CALLANALYTICSDBCFG
    • ca_dbusername, the username used to connect the database, default value is callanalytics
    • ca_dbpasswd, the password used to connect the database, default value is encrypted password spT+9YcyxYwZuoi5z2+8Qg==
    • ca_writecallinfo, set it to true if CALLINFO data logging is required
    • ca_remotedb_errfile, the filename to store temporary SQL statements when database is not reachable
    • ca_dbmssqlobject, if you are using mssql and you want to change the object name of the database, then change the value of this parameter

REST Interface 

Limitation

  • This software requires AE server up and running. Missing events will be occurred when the AE server is down or during the fail over from one AE server to another.

Email Notification for Abandon and Short Duration Call

  • Edit the following parameters for email notification
    • Edit the value of parameter ca_emailabancall, set it to true for email notification of abandon calls
    • Edit the value of parameter ca_emailshortcall, set it to true for email notification of short duration calls
    • Edit the value of parameter tg_emailserverip to define the IP address of your email server.
    • Edit the value of parameter tg_emailsmtpport to define the SMTP port number of your email server. The default value is 25.
    • Edit the value of parameter tg_emailusername to define the username of email agent which is responsible to send notification emails.
    • Type genpass in the program console to generate an encrypted password string for the email agent, copy the string for later use.
    • Edit the value of parameter tg_emailpasswd to define the password of the email agent. The password should be in encrypted format, you can use console command genpass to generate the encrypted password.
    • Edit the value of parameter tg_emailsenderdisplay to define the display name of the email agent.
    • Edit the value of parameter tg_emailauth to define whether authentication is required between your CallAnalytics machine and the email server. When your email server trust your machine, set it to false, otherwise set it to true.
    • Edit the value of parameter tg_emailssl to define whether SSL communication is required for the SMTP session. The default value is false, set it to true when SSL is required.
    • Enter the following command in the program console to add your email address
      • add email youremail@company.com
      • Hint: Replace my email address to yours
    • Enter the following command to test the configuration
      • test email

AstLogger 1.4.12 Released

Posted: December 21, 2016 in News, TSAPI

21 Dec 2016, AstLogger 1.4.12 just released. The changes are

1. Linux logging with timestamp.
2. al_callinfodbtest parameter is added to control testing of remote callinfo db connection.
3. AstLogger Web supports searching of voice files by different user logins.
4. Supports encryption of voice files by Linux installation. Parameters al_encryptionenable, al_cmdencryption, al_encryptfileextension and al_decryptdirectory are added for this purpose. Also new tcpgate console “add encryptionkey” is added to add encryption keys.
5. Supports playback of voice records via Avaya extension or external phone.