Cpa User Guide
Cpa User Guide
User Guide
v2.0.3
September 20, 2011
Copyright © 2010. Sangoma Technologies Inc. All Rights Reserved.
Version: 2.0.3
Contents
Table of Contents
About this document................................................................................................... 6
Audience................................................................................................................. 6
Prerequisites........................................................................................................... 6
Organization........................................................................................................... 7
Related documentation........................................................................................... 7
Reference material................................................................................................. 9
Text and writing conventions................................................................................ 10
Chapter 1: Product overview.................................................................................... 11
Introduction to Call Progress Analysis................................................................. 12
Call progress tones........................................................................................... 12
The process....................................................................................................... 13
Benefits............................................................................................................. 13
Product description.............................................................................................. 14
NetBorder Software Suite................................................................................ 15
NetBorder Call Analyzer ................................................................................. 15
System architecture............................................................................................. 17
Chapter 2: Installation.............................................................................................. 18
System requirements............................................................................................ 18
Installing the software.......................................................................................... 19
Directories and files installed by the software................................................. 21
The Cpa-stats.csv file........................................................................................ 23
Obtaining and installing the license file............................................................... 24
Uninstalling the software..................................................................................... 27
Validating the installation..................................................................................... 28
Starting the service.......................................................................................... 29
What to do if the service fails to start.............................................................. 32
Chapter 3: Getting started........................................................................................ 33
Prerequisites to making a test SIP call................................................................. 34
Configuring as an outbound proxy....................................................................... 35
Making a call without CPA.................................................................................... 38
Making a call with CPA......................................................................................... 40
What to do if a call is not connected.................................................................... 43
Chapter 4: Call flow fundamentals........................................................................... 45
SIP transactions and dialogs................................................................................ 46
SIP messages........................................................................................................ 46
SIP requests...................................................................................................... 46
SIP responses................................................................................................... 47
SIP message structure.......................................................................................... 47
Start-line........................................................................................................... 47
SIP headers....................................................................................................... 48
SDP body.......................................................................................................... 51
Sample SIP messages....................................................................................... 51
Sample call flow.................................................................................................... 53
Chapter 5: Configuring the application.................................................................... 55
Selecting a mode of operation ............................................................................. 56
Initial mode....................................................................................................... 56
Data collection mode........................................................................................ 56
Production mode............................................................................................... 57
Selecting the Application Class............................................................................ 57
Configuring NetBorder as an outbound proxy..................................................... 58
Configuring NetBorder to be used with Genesys SIP Server (ie relay server). . . .59
Configuring End Of Greeting Detection (EAMD)................................................. 61
Configuring the country used for tone definitions............................................... 62
Changing the SIP transport to TCP...................................................................... 63
Returning NetBorder to its original configuration............................................... 63
Recording media................................................................................................... 64
Using the CPA embedded recorder...................................................................... 64
Setting up logging................................................................................................ 65
Viewing logs and events................................................................................... 66
Enabling logging parameters........................................................................... 69
Enabling/disabling call logs.............................................................................. 70
Chapter 6: Troubleshooting...................................................................................... 72
Appendix A: Glossary................................................................................................ 75
Appendix B: Configuration parameters.................................................................... 81
call-analyzer-service.properties............................................................................ 82
call-analyzer-engine.properties............................................................................ 84
call-properties files............................................................................................... 86
Timeout Sequence............................................................................................ 91
Appendix C: Logging configuration.......................................................................... 92
Logging levels....................................................................................................... 93
Logger hierarchy.................................................................................................. 94
Configuring the logging subsystem...................................................................... 95
Step 1: Set the logging level and appender..................................................... 95
Step 2: Set the pattern layout.......................................................................... 97
Step 3 (optional): Set child-specific behaviour................................................. 98
Dynamic call logging............................................................................................ 99
Syslog integration............................................................................................... 100
Step 1: Add a Syslog appender....................................................................... 100
Step 2: Enable network logging in syslogd.................................................... 100
Appendix D: SIP response codes............................................................................ 101
Appendix E: Sample SIP messages......................................................................... 105
Sample call flows................................................................................................ 106
Audience
This document is intended for application developers and system
administrators who manage and interface with the NetBorder Call Analyzer.
Prerequisites
This guide is intended for installers and advanced users. Prior knowledge of
IP (Internet Protocol) networks is required.
This guide assumes:
● You have planned and/or managed the requirements of your VoIP and IP
network.
Organization
This document is organized as follows:
Related documentation
Together with this guide, you may also want to reference the following
additional Sangoma documentation:
For the latest news and information on our products and on current as well as
upcoming releases, visit the Sangoma Technologies Inc. website at
www.sangoma.com.
Reference material
Commercial documentation on related technologies and applications is
widely available from a number of sources. In addition, you may find the
following specific information helpful.
SIP RFCs
In March 1999, SIP (Session Initiation Protocol) was defined in RFC (Request
for Comments) 2543 by the Multiparty Multimedia Session Control (MMUSIC)
Working group of the Internet Engineering Task Force (IETF). In June 2002, the
IETF published a new SIP RFC (RFC 3261). The NetBorder Call Analyzer is fully
compliant with RFC 3261.
You can find all RFCs online at http://www.ietf.org/rfc/rfc[xxxx].txt,
where [xxxx] is the number of the RFC; for example,
http://www.ietf.org/rfc/rfc3261.txt.
To search by topic, visit http://www.rfc-editor.org/rfcsearch.html.
● Italics indicate book titles, parameters and elements, file and path
names, as well as terms introduced for the first time, which are usually
spelled out and followed by their acronym or abbreviation in parentheses.
For example: VoIP (Voice over Internet Protocol)
● Courier New indicates commands and keywords that you enter literally
as shown, and on-screen output such as prompts and system messages.
For example: ipconfig /all
● [Square brackets] indicate values that you replace, which are often
followed by an explanation of what is required. Do not type the brackets
when entering the command.
For example: [ NETBORDER_INSTALLDIR
]\config\cpa_media_uas.properties
In addition, note boxes, tips and cautions point out areas of special interest
or concern. These boxes are set apart from the text and their purpose is
clearly identified. For example:
N
OTE: This is a box designated for a note. It contains information
that it is set apart so as to catch your eye. Tips and cautions are
handled similarly and labelled accordingly.
The process
CPA involves the following three crucial steps:
Benefits
Out of these operations, two very important factors emerge, which directly
impact the success and efficiency of outbound dialing operations:
1. CPA accuracy
If the Netborder Call Analyzer determines that a call has been answered
by a person, while in fact it has encountered a voice-mail greeting, the
agent receiving the call will spend time handling the call before he or she
once again becomes available to answer another call. While this
timeframe may be short (under a minute or so), it translates into a
considerable loss of productivity when accumulated over time and in
large volume call centers.
Similarly, should the Netborder Call Analyzer determine that an answering
machine has picked up the call, when in fact a person has answered, the
Contact Center operator may face stiff fines for contravening regulations.
2. Response time
If it takes too long to connect to an agent, there is an increased risk of not
being able to deliver the service at all, whether the Netborder Call
Analyzer is accurate or not. Customers may hang up on the call (the
infamous “dead air”), or the Contact Center operator may face penalties
for non-compliance of nuisance call regulations.
With its unique call progress analysis capabilities, the NetBorder Call
Analyzer provides superior performance and optimal use of resources for IP-
based outbound voice solutions.
Product description
The NetBorder Call Analyzer is a component of Sangoma’s NetBorder
Software Suite.
Each software subsystem has its own OAM (Operations, Administration, and
Maintenance) components, for increased flexibility and manageability.
In NetBorder, these software subsystems combine to provide the necessary
network connectivity, signaling proxy, signaling harmonization, media
processing, media conversion and call control scripting, to remove the
complexity from SIP applications.
Note that the application provides connectivity to both legacy and IP networks,
and routes both inbound and outbound traffic through a single element.
This simplified approach, and particularly a process based on statistical models
and SIP-based integration, permits the NetBorder Call Analyzer to deliver many
improvements to the call progress analysis process.
System architecture
Sangoma uses an innovative approach based on software platforms and SIP.
The figure below depicts the architecture of a typical IP Contact Center.
On the left side of the diagram are the network interconnections of the
Contact Center. These network interconnections may be delivered over
traditional interfaces (T1/E1) or via SIP trunking. For the delivery of SIP
services, the SIP trunk interconnects directly on the customer LAN/WAN. For
TDM traffic, VoIP gateways are used to convert to SIP/RTP.
On the right side of the diagram are depicted the various users and applications:
● Application Server(s), delivering a complete suite of Contact Center
applications (such as ACD, Dialer, IVR).
● SIP Agents, which are registered (as part of the SIP protocol) to the
Application Server. Note that with VoIP, these agents can be located
almost anywhere.
● NetBorder Suite (shown inside the dotted line), providing the necessary
Session and Media Control mediation to deliver the complex call control
required in Contact Center applications.
Chapter 2: Installation
This section describes how to install (and uninstall) the NetBorder Call
Analyzer software.
For information on how to start using the service once the NetBorder Call
Analyzer has been installed successfully, see Chapter 3: Getting started .
This chapter contains the following topics:
● System requirements on page 18
● Installing the software on page 19
● Obtaining and installing the license file on page 24
● Uninstalling the software on page 27
● Validating the installation on page 28.
System requirements
Before you begin the installation process, please refer to the Release Notes
to ensure compatibility with third party software and hardware.
You must download this installer to your system before proceeding with the
installation. Before starting the installation, exit all other applications.
If you click Cancel, the installation will abort. The NetBorder Call Analyzer
software will not be installed.
3. Set the home directory for the installation.
● Look for 603 Decline (Licensing capacity has been reached) in file:
[NETBORDER_INSTALLDIR]/ logs/call-analyzer-service.out if you get
603 Decline responses to confirm it is a license capacity issue.
To obtain a full license (host-locked) , obtain the MAC (Media Access Control)
address of the system and use the Installation ID that came with the software to
generate a license file. Please follow this URL:
● http://www.sangoma.com/support/register_netborder_software.html
T IP: To start a command prompt, select Run from the Start Menu. Type “
cmd ” in the textbox, and click OK.
2. Look for the Physical Address item. For example, it should look
something like this:
● 90-E6-BA-88-1D-AA
T IP: To start a command prompt, select Run from the Start Menu. Type “
cmd ” in the textbox, and click OK.
2. Look for the Physical Address item. For example, it should look
something like this:
● 90-E6-BA-88-1D-AA
1. Upon filling the online form, you will be able to download your new
license files in a .zip file:
● call-analyzer-license.txt
● call-analyzer-license.txt.sig
2. Once you have received the license files, copy the files (in effect, you will
be replacing the temporary license) to the following folder:
● [ NETBORDER_INSTALLDIR ]\config
where [NETBORDER_INSTALLDIR] is the root folder of the
installation (for example, C:\Program Files\Sangoma NetBorder
Platform 2.0\config).
3. Start the Sangoma NetBorder Call Analyzer service. See Starting the
service on page 29.
1. Launch the uninstaller from the Start Menu: select Programs >
Sangoma NetBorder Platform 2.0 > Uninstall . The following window
appears:
2. Click Uninstall.
The NetBorder Call Analyzer software is removed from your system.
N
OTE: You can also remove the software using the Add/Remove
Program Manager found in the Control Panel. Alternatively, you
can run the following command from a Windows command line: [
NETBORDER_INSTALLDIR ]\uninst.exe (where [ NETBORDER_INSTALLDIR ]
is the root folder of the installation).
1. Make sure you backed up any file that you manually edited under
[NETBORDER_INSTALLDIR]/config
2. Execute the following command in a shell (superuser, ie root, privileges are
required):
● rpm -e netborder-call-analyzer
To start all the services required to run the NetBorder Call Analyzer on Windows,
you only need to start the Sangoma NetBorder Call Analyzer service.
If you don’t have a My Computer icon on your desktop, click the Start
button and look for My Computer listed on the right side of the Start
Menu.
Alternatively, you can access the Services list from the Control
Panel: double-click Administrative Tools and then double-click
Services.
b) In the left pane, select “Services” under the “Services and
Applications” folder.
If the services are already running, you will see their Status as “Started”.
In this case, the option “Start” will not be accessible from the right-click
action menu.
The Sangoma NetBorder Call Analyzer and related services will start.
You are now ready to place a call through your IP network. Turn to Chapter 3:
Getting started. However, if you encountered an error, see What to do if the
service fails to start on page 32.
This chapter assumes that the NetBorder Call Analyzer software has been
successfully installed on your system. For installation procedures, please
read Chapter 2: Installation.
N
OTE: If you do not have a softphone, both of the products listed
above are available for download at the URIs provided. For the
purposes of this test, you will be making a SIP to SIP call; therefore,
you will need two softphones, one on your system, and another installed on
a different system (the callee).
You will also need to configure the softphone to use NetBorder Call Analyzer
as an outbound proxy. See Configuring as an outbound proxy on page 35.
N
OTE: If the User Agent Client (UAC) or caller cannot use NetBorder
as an outbound SIP proxy, a relay server may be used. For more
information, see Configuring NetBorder to be used with Genesys SIP
Server (ie relay server) on page 59.
The following steps feature X-Lite. Configuration of other softphones will follow
the same general procedures.
The step to use the NetBorder Call Analyzer is to make sure you can use it in
your own environment. To do so, the setup illustrated below should be used.
Note that the caller softphone, on your left, is located on its own computer with a
different IP address than the NCA, in the center and the called softphone, on
your right. It would also be possible to use the same computer for the caller
softphone and the NCA, but the callee should be on its own computer.
2. Depending on the softphone you are using (for example, X-Lite), add a
new profile.
Again, the following steps feature X-Lite. Other softphones will follow the
same general procedures.
3. Place the call. If you are using X-Lite, press Enter or click the green
telephone icon in the left side of the application.
4. Verify that you hear a ringing tone and ultimately, once the call is
connected, audio on the other end.
5. Interact with the application to verify that audio is coming through on
both ends of the call.
N
OTE: If you fail to hear audio, your firewall may be preventing calls
from being put through. Also, if the call is established successfully
and no audio is heard, the firewall may be blocking the media (RTP)
packets. Try disabling your firewall. If you continue to experience problems,
see What to do if a call is not connected on page 43.
5. Verify that you hear a ringing tone and ultimately, once the call is
connected, audio on the other end.
6. Interact with the application to verify that audio is coming through on
both ends of the call.
7. When finished, hang up.
If you are using X-Lite, click the red telephone icon on the right side of the
application.
If you receive an error message, such as a “Decline” message from the
softphone application, see What to do if a call is not connected on page
43.
8. Now take a look at the call-log files to verify the results of the call and
particularly of the call progress analysis.
Do the following:
a) Open the call-log files located in the following directory:
● [NETBORDER_INSTALLDIR]\logs\call-logs
where [NETBORDER_INSTALLDIR] is the root folder of the
installation (for example, C:\Program Files\Sangoma NetBorder
Platform 2.0\logs\call-logs).
By default, call-log files are saved in subdirectories based on date and
time.
a) Take a look at both the SIP request and SIP response messages.
Conduct a search for the following:
● “CPD-Result” in the .log file: For the result of the call progress
analysis (for example, “CPD-Result: Voice” in a SIP response
header).
● “CPA” in the .analyzer-engine.log file: To locate information such as
the degree of certainty (expressed in decimal percentages) of the
NCA result. For example:
CPA_HUMAN=0.710736
CPA_MACHINE=0.150314
CPA_FAX=0.13895
5. Be sure the IP address you are calling is valid. Use the ping command to
verify IP-level connectivity to the other TCP/IP user.
T IP: To start a command prompt, select Run from the Start Menu. Type
“cmd” in the textbox, and click OK.
SIP messages
Each SIP transaction consists of a request that invokes a particular method,
or function, on the server, and at least one response.
SIP requests
SIP requests are messages that are sent from client to server to invoke a SIP
operation. RFC 3261 defines six requests or methods that enable a User
Agent or SIP proxy to locate users and initiate, modify, and tear down
sessions:
● INVITE: An INVITE method indicates that the recipient user or service is
invited to participate in a session. This method can also be used to modify
the characteristics of a previously established session.
● ACK: An ACK request confirms that the UAC has received the final
response to an INVITE request. ACK is used only with INVITE requests.
● OPTIONS: An OPTIONS request is used to query servers about their
capabilities. If the UAS is capable of delivering a session to a user, it
responds with its capability set.
● BYE: A BYE request signifies the termination of a previously established
session.
● CANCEL: A CANCEL request allows UACs and network servers to cancel
an in-progress request, such as an INVITE.
In addition, RFC 3515 defines the REFER method. This SIP extension
requests that the recipient REFER to a resource provided in the request. This
method can be used to enable many applications, including call transfer.
SIP responses
A server sends a SIP response to a client to indicate the status of a SIP
request that the client previously sent to the server. Specifically, the UAS or
proxy server generates SIP responses in response to a SIP request that the
UAC initiates.
SIP responses are numbered from 100 to 600. Appendix D lists common SIP
responses you may encounter while using the NetBorder Call Analyzer. For a
complete list, see Section 21 of RFC 3261.
Start-line
The start-line for a SIP request is known as the Request-Line. The start-line
for a SIP response is known as the Status-Line.
The Request-Line specifies the SIP method, the Request-URI, and the SIP version.
With NetBorder Call Analyzer applications, by default the Request-Line also
indicates whether call progress analysis is requested.
The Status-Line describes the SIP version, the SIP response code, and an
optional reason phrase. The reason phrase is a textual description of the 3-digit
SIP response code.
SIP headers
A SIP message is composed of header fields that convey the signaling and
routing information for the SIP network entities (User Agent, proxy, B2BUA, and
so on). Each header field consists of a field name followed by a colon (:) and the
field value. For a description of the key SIP headers, refer to Section 7.3 of RFC
3261.
CPD-Result
The 'CPD-Result' header is provided for legacy purposes. Please see the X-
Netborder-Detailed-CPD-Result header below which contains an extended level
of details over the 'CPD-Result' header.
X-Netborder-Detailed-CPD-Result
The SIP header 'X-Netborder-Detailed-CPD-Result' informs the end-user of the
audio analysis result returned by the NetBorder Call Analyzer. See the X-
Netborder-Detailed-CPD-Result Table for details on the different possible values
for this SIP header.
Sip
DetailedCpdResult CpdResult Explanation
Code
Pre-Connect Results
Post-Connect Results
'End of Greeting - 'Answering- 200 The Netborder Call Analyzer has detected an
answering machine followed by a 'beep'.
Beep' Machine' OK
'End of Greeting - 'Answering- 200 The Netborder Call Analyzer has detected an
answering machine followed by silence.
Silence' Machine' OK
X-Netborder-Call-ID
When NetBorder Call Analyzer includes a CPD-Result header in a SIP response
message, it also add the custom SIP header named “X-Netborder-Call-ID ” that
contains the unique call-id that was used internally to process this call. It is the
same ID that is used as filename for logs, recording and in cpa-stats file. It may
reliably be used to cross-reference calls from NetBorder Call Analyzer logs to the
dialer application logs or database entries.
It looks like this:
X-Netborder-Call-ID : 1257866196-453125-14693-23
X-Netborder-Cpa-Reference-ID
The NetBorder Call Analyzer may optionally use a custom SIP header named “X-
Netborder-Cpa-Reference-ID” to associate any given string identifier with its own
call identifier. The given identifier is expected to be unique in the scope of a
campaign. If more than one campaign go through the same NetBorder Call
Analyzer, you may want to use X-Netborder-Cpa-Campaign-Name SIP header to
further identify the call.
The sole purpose of this reference is to help map NetBorder Call Analyzer logs
with the caller UAC application logs, it is not used by NetBorder Call Analyzer
except for adding it in the cpa-stats.csv file. (See section “The Cpa-stats.csv file“
on page 23).
In order to use this feature, add the following header to the initial INVITE
message sent to NetBorder Call Analyzer:
X-Netborder-Cpa-Reference-ID: XXX-XXX
X-Netborder-Cpa-Campaign-Name
The NetBorder Call Analyzer may also optionally use a custom SIP header named
“X-Netborder-Cpa-Campaign-Name“ to associate a call to a specific campaign
name. The specified name has no meaning for NetBorder Call Analyzer, it is not
used except for adding it in the cpa-stats.csv file. (See section “The Cpa-
stats.csv file“ on page 23).
In order to use this feature, add the following header to the initial INVITE
message sent to NetBorder Call Analyzer:
X-Netborder-Cpa-Campaign-Name: XXX-XXX
SDP body
The SDP (Session Description Protocol) body contains information about the
message. The SDP body is optional. For a complete explanation of the SDP
session description, see RFC 2327.
a=sendrecv
a=silenceSupp:off - - -
a=rtcp:5563
a=maxptime:20
a=ptime:20
a=rtpmap:0 pcmu/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15,36
Notice the value of the CPD-Result header field. The NetBorder Call Analyzer
has determined the result of the call analysis to be “Voice” (a person, as
opposed to a machine, has evidently answered the call).
Throughout the call, NetBorder stays in line with the SIP call control path, but
gets out of the loop on the audio stream as soon as call progress is complete.
Another way to depict the same scenario is provided below (a network
incorporating TDM traffic and a VoIP gateway would be the same).
Initial mode
“Out-of-the-box” the NetBorder Call Analyzer is configured as follows:
● Used as an outbound proxy
● Call logging is enabled.
● Call Recording is not used.
● Activate the following logger, and raise its logging level to INFO, so that
CPA data collected may be simulated offline:
log4cplus.logger.netborder.cpa=INFO
For procedures, see Enabling logging parameters on page 69.
● Enable Call Recording (see Recording media on page 64).
Production mode
Production mode is the mode to use for deployment. To go into production
mode, you should:
● Disable call logging (see Enabling/disabling call logs on page 70 ).
● If your application no longer requires call recording, disable it (see
Recording media on page 64 ).
● Set the netborder.sip.message logger to WARN level
(log4cplus.logger.netborder.sip.message=WARN ) in files call-analyzer-
engine-logging.properties and call-analyzer-logging.properties.
Name Use
● Using the text editor of your choice, open the file call-analyzer-
service.properties located at:
● [NETBORDER_INSTALLDIR]\config\ call-analyzer-service.properties
where [NETBORDER_INSTALLDIR] is the root folder of the installation
(for example, C:\Program Files\Sangoma NetBorder Platform 2.0\ ) .
● Set the parameter netborder.sip.ua.python.appClass to
cpa.CallAnalyzerGenesysOCS
# Host:Port of SIP UAS (media gateway or SIP trunk) used to reach the PSTN
#
# **** Host must be set by entering host name or IP after the "=" sign ***
# Ex. app.nca.RelayServerHost=192.168.1.100
#
app.nca.RelayServerHost=<Replace by relay server hostname or IP>
app.nca.RelayServerPort=5060
# Timeouts
app.nca.PreConnectTimeout.ms=26000
# Thresholds
#
app.nca.HumanThreshold=0.75
app.nca.MachineThreshold=0.85
app.nca.FaxThreshold=0.85
● Using the text editor of your choice, open the call properties in the
[NETBORDER_INSTALLDIR]\config\ CallAnalyzerAsOutboundProxy.call-
properties file.
● Set app.nca.EndOfGreeting.enable to true
● Restart the Sangoma NetBorder Call Analyzer service
● Using the text editor of your choice, open the call properties in the
[NETBORDER_INSTALLDIR]\config\ CallAnalyzerGenesysOCS.call-
properties file.
● Set app.nca.EndOfGreeting.enable to true
● Restart the Sangoma NetBorder Call Analyzer service
● Using the text editor of your choice, open the call properties in the
[NETBORDER_INSTALLDIR]\config\ <Application Class>.call-properties
file.
● Set app.nca.ExpectPhoneNumberPrefix to true
● Restart the Sangoma NetBorder Call Analyzer service
● Call Analyzer will now expect a prefix of 4 digits to be used in the
phone numbers to dial. Valid prefixes:
● 9900: follow static configuration to determine how to treat call
● 9910: relay call without performing Answering Machine Detection
● 9911: perform Answering Machine Detection
● 9912: perform Answering Machine Detection and End Of Greeting
detection
● For example, for an INVITE with a Request-URL of
sip:99120113423232323@ <host>
● 9912 -> Turn on Answering Machine Detection and End of Greeting
detection for this call
● 0113423232323 -> Actual number to dial
● 991x prefixes have precedence over static configuration and cpd=on
request parameter
The default is to used tone definitions for Canada, which are also good for the
U.S.A. If calls are to be placed outside of those two countries, you need to set
the country tone definitions to use.
This is done via the netborder.cpa.runtime.model.country property of the
NetBorder Call Analyzer engine. See how to set engine parameters in section
call-analyzer-engine.properties on page 84
You can either copy the pertinent files to their related folders (such as the
\config folder for .properties files, .call-properties and license files), provided
you have made no other significant changes, or you can use the original
configuration as a reference point.
Recording media
The NetBorder Call Analyzer allows you to record media automatically. You
can do so by enabling the:
● CPA embedded recorder: Allows you to record media until call progress
analysis is complete.
1. Using the text editor of your choice, open the file call-analyzer-
engine.properties file located at:
● [NETBORDER_INSTALLDIR]\config\ call-analyzer-engine.properties
where [NETBORDER_INSTALLDIR] is the root folder of the
installation (for example, C:\Program Files\Sangoma NetBorder
Platform 2.0\config\ call-analyzer-engine.properties ).
For more information on this file, see Appendix B .
1. Search for the following text string:
● netborder.cpa.runtime.recordAudio
1. To enable the netborder.cpa.runtime.recordAudio parameter, change the
value of the parameter to “true”. For example:
● netborder.cpa.runtime.recordAudio=true
1. Save your changes and close the file.
2. Restart the NetBorder Call Analyzer service.
Setting up logging
The NetBorder Call Analyzer includes a powerful logging framework to enable
you to control the logging of events.
Logging configuration is set in the following two main logging configuration files:
● [NETBORDER_INSTALLDIR]\config\call-analyzer-logging.properties (for
the Sangoma NetBorder Call Analyzer service)
● [NETBORDER_INSTALLDIR]\config\call-analyzer-engine-
logging.properties (for the Sangoma NetBorder Engine for Call Analyzer
service)
where [NETBORDER_INSTALLDIR] is the root folder of the installation.
Separate files allow you to maintain two custom logger configurations, one
for the Call Analyzer and one for the Engine for Call Analyzer service.
N
OTE: Detailed information on logging and particularly logging
configuration is contained in Appendix C. Turn to this appendix to
familiarize yourself with logging levels, the logging subsystem, and
configuration.
3. In the right pane, click the “Source” event header to view events in
ascending (alphabetical) order.
4. Search through the list for information and/or any errors resulting from a
“Sangoma NetBorder” service.
# Call Logging
log4cplus.appender.CALL_LOG_APPENDER=log4cplus::NullAppender
log4cplus.appender.CALL_LOG_APPENDER.Directory=logs/call-logs
log4cplus.appender.CALL_LOG_APPENDER.ImmediateFlush=true
log4cplus.appender.CALL_LOG_APPENDER.layout=log4cplus::Pattern
Layout
log4cplus.appender.CALL_LOG_APPENDER.layout.ConversionPattern=%D{%Y-%m-
%d %H:%M:%S:%%q} [%t] %p - %c : %m%n
# Set to true if you want a directory structure with
# year/month/day/hour for your call logs
netborder.infra.CallLogger.dateTimeDirectory=true
# Overload ROOT with new logger hierarchy severity
log4cplus.logger.netborder.sip.message=INFO
log4cplus.logger.netborder.ace=WARN
In this example, to view SIP message events at the “INFO” level, you would look
for log files in subdirectories organized by date and time in the following parent
directory:
● C:\Program Files\Sangoma NetBorder Platform 2.0\logs\call-logs\
By default Engine For Call Analyzer events of level “INFO” are saved to the
[NETBORDER_INSTALLDIR]\logs\call-analyzer-engine.out log file, as specified
in the call-analyzer-engine-logging.properties file. Similarly, for the Call
Analyzer, logging information of level “INFO” is saved to the
[NETBORDER_INSTALLDIR]\logs\call-analyzer-service.out log file, as per the
call-analyzer-logging.properties file.
However, logs can be redirected to any file you wish, simply by modifying the
formatting handle, also called an “appender”, which holds the information on
where to redirect the logging output (for example, Windows Event Viewer,
console, file, syslog), as well as the type and format of logging information to
output. For more information, see Appendix C and specifically Step 1: Set the
logging level and appender on page 95.
Follow the steps of the following procedure whenever you need to enable (or
disable) a logging parameter in one of the .properties files (altering the
appropriate parameter as required).
This procedure describes how to enable the netborder.cpa logger in the sip-
hub.properties file and change its logging severity level from “TRACE” to
“INFO”.
1. With the text editor of your choice, open each of the following
configuration files:
● [NETBORDER_INSTALLDIR]\config\ call-analyzer-logging.properties
(for the Sangoma NetBorder Call Analyzer service)
● [NETBORDER_INSTALLDIR]\config\ call-analyzer-engine-
logging.properties (for the Sangoma NetBorder Engine For Call
Analyzer service)
● [PARAXIP_INSTALLDIR]\config\media_server_uas.properties (for the
Paraxip NetBorder Media Server service)
where [NETBORDER_INSTALLDIR] is the root folder of the installation
(for example, C:\Program Files\Sangoma NetBorder Platform
2.0\config\ call-analyzer-logging.properties ) .
1. Search for the text string “log4cplus.rootLogger” to locate the root
logger:
● log4cplus.rootLogger=WARN, NTEVENTLOG, DEBUG_APPENDER,
CALL_LOG_APPENDER
1. Comment out the “, CALL_LOG_APPENDER” value by placing the character
“#” directly in front of it, on a new line, as follows:
● log4cplus.rootLogger=WARN, NTEVENTLOG, DEBUG_APPENDER
#, CALL_LOG_APPENDER
1. Make this change to each of the .properties files.
2. Save your changes and close the files.
3. Restart the NetBorder Call Analyzer service.
Chapter 6: Troubleshooting
List of errors messages and associated actions to remedy to the
problem:
Call Analyzer Cannot parse NCA result = %s High Internal error, contact Sangoma Support
NetBorder Error in Python script: %s High Correct Python code following reported error details
Correct Python code for specified class following
NetBorder Error instantiating Python class High
reported error details
Exception while configuring
NetBorder High Correct parameters following reported exception text
Resiprocate:
Failed to configure the logger Correct logger-related parameters in /config/
Infrastructure High
from the Global Configuration [service].properties
Infrastructure Host has 2 IP addresses. High Set the netborder.net.primaryIPAddress parameter
Host has more than one IP
Infrastructure High Set the netborder.net.primaryIPAddress parameter
address
Call Analyzer No valid NCA result in = %s High Internal error, contact Sangoma Support
Check SIP messaging to see why the Callee User agent
Call Analyzer doReInvite on callee failed High
refused the re-INVITE once connected
failed to create call logging
Infrastructure High Check permissions for path provided to store call logs
output directory
Failed to load config files to Make sure configuration file provided by error message
Infrastructure High
initialize exists and can be opened
Appendix A: Glossary
This appendix contains a list of terms, abbreviations and acronyms used in
this guide. Definitions of key terms have been provided, many of which have
been taken directly from the SIP standard (RFC 3261).
A
ACD Automatic Call Distribution/Distributor. ACD efficiently routes
incoming calls to multiple answering stations. ACDs also enable call
centers to track usage patterns as well as traffic and agent
performance.
B
B2BUA Back-to-Back User Agent. A B2BUA acts as third-party call controller
and can establish calls between two user agents, as well as modify and
terminate existing calls. SIP calls via a B2BUA result in the creation
of two distinct dialogs, which allow it to modify one session without
affecting the other session. A B2BUA is a user agent ( UA ) that acts
as a user agent server ( UAS ) to the Caller , and as a user agent
client ( UAC ) to the Callee .
D
Dialer A dialer, also referred to as a Predictive Dialer, is a computerized
system that automatically dials batches of telephone numbers; for
instance, for connection to agents assigned to sales or other
campaigns.
Dialog A dialog is a peer-to-peer SIP relationship between two UAs that
persists for some time. A dialog is established by SIP messages, such
as a 2xx response to an INVITE request. Call leg is another term for
a dialog.
E
Early media Early media is the ability of two user agents to communicate before a
SIP call is actually established. Specifically, it permits the delivery of
a media stream prior to call answer or session establishment.
H
Header A header is a component of a SIP message that conveys
information about the message. It is structured as a sequence of header
fields.
L
LAN Local Area Network. A LAN is a computer network covering a small
geographic area, such as a home, office, or group of buildings.
M
MAC address Media Access Control address of a computer networking device.
Message Data sent between SIP elements as part of the protocol.
SIP messages are either requests or responses.
Method The method is the primary function that a request is meant to invoke on
a server. The method is carried in the request message itself. Example
methods are INVITE, REFER and BYE.
ms Millisecond. A millisecond (ms) is one thousandth of a second.
O
OAM Operations, Administration, and Maintenance. OAM is a general term
used to describe the processes, activities, tools, standards, etc. involved
with operating, administering, and maintaining any system.
OS Operating System. The software that manages the hardware and
software of a computer.
Outbound proxy A proxy that receives outbound requests from a client, even though it
may not be the server resolved by the Request-URI. Typically, a UA is
manually configured with an outbound proxy.
P
PBX Private Branch eXchange. A PBX is a telephone exchange that serves a
particular business or office, as opposed to one that a common carrier
or telephone company operates for many businesses or for the general
public.
Ping Ping is the primary TCP/IP command used to troubleshoot
connectivity, reachability, and name resolution.
Predictive dialer See Dialer .
R
Redirect server A redirect server is a UAS that generates 300-class SIP Responses to
requests it receives, directing the UAC to contact an alternate set of
URIs.
Registrar server A registrar is a UAS that accepts SIP REGISTER requests and updates
the information from the request message into a location database.
Relay server Relay servers facilitate communication by acting as proxies for
navigating firewalls, providing alternative communications paths for
clients operating over gateways, and fanning out data transmissions.
Request A SIP message sent from a client to a server, for the purpose of
invoking a particular operation.
Request-Line The Request-Line is the start-line of a SIP request. If CPA has been
enabled using the NetBorder Call Analyzer, by default the Request-
Line will contain the string “cpd=on”.
Response A SIP message sent from a server to a client, for indicating the
status of a request sent from the client to the server.
RFC Request for Comments associated with an active IETF Working Group.
RTCP RTP Control Protocol. RTCP permits monitoring of the data delivery of
RTP, including quality of service.
RTP Real-time Transport Protocol. RTP transports real-time data such as
audio or video packets to the endpoints that are involved in a session.
RFC 3550 defines RTP.
S
SBC See Session Controller .
SDP Session Description Protocol. SDP is used in a SIP message body to
describe the parameters of the multimedia session. RFC 2327 defines
SDP.
Server A server is a network element that receives requests in order to
service them and sends back responses to those requests. Examples of
servers are proxies, user agent servers, redirect servers, and registrars.
T
TCP Transmission Control Protocol. TCP is intended for use as a highly
reliable host-to-host protocol between hosts in packet-switched
computer communication networks, and especially in interconnected
systems of such networks.
TDM Time Division Multiplexing. TDM is a method of sending multiple
digital signals along a single telecommunications transmission path.
U
UA User Agent. A UA is a logical function in the SIP network that initiates
or responds to SIP transactions. A UA can act as either the client or the
server in a SIP transaction.
UAC User Agent Client or Caller . A UAC is a logical function that initiates
SIP requests and accepts SIP responses.
UAS User Agent Server or Callee . A UAS is a logical function that accepts
SIP requests and sends back SIP responses.
UDP User Datagram Protocol. Using UDP, programs on networked
computers can send short messages sometimes known as datagrams
(using Datagram Sockets) to one another. UDP is also referred to as the
Universal Datagram Protocol.
URI Uniform Resource Identifier. A URI is a compact string of characters
used to identify or name a resource.
V
VAD Voice Activity Detection. VAD is the process of separating
conversational speech and silence. In VoIP, VAD can disable the
silence packets and use the silent period to transmit some traffic other
than voice.
VoIP Voice over IP. VoIP is the routing of voice conversations over the
Internet or through any IP-based network.
W
WAN Wide Area Network. A network that uses routers and public
communications links. The largest and most well-known example of a
WAN is the Internet.
X
XML eXtensible Markup Language. The Extensible Markup Language is a
general-purpose markup language classified as an extensible language
because it allows its users to define their own elements or tags. Its
primary purpose is to facilitate the sharing of structured data across
different information systems.
Appendix B: Configuration
parameters
This appendix contains a comprehensive list of parameters, with a brief
description, for the following configuration files:
● call-analyzer-service.properties on page 82
● call-analyzer-engine.properties on page 84
● call-properties files on page 86
call-analyzer-service.properties
The call-analyzer-service.properties file is a simple text file that you can edit
using any standard text editor.
N OTE: Lines starting with the character ‘#’ are comments ignored by
the software.
call-analyzer-engine.properties
The following table lists the configuration parameters contained in the call-
analyzer-engine.propertiesfile, located at:
● [NETBORDER_INSTALLDIR]\config\call-analyzer-engine.properties
where [NETBORDER_INSTALLDIR] is the root folder of the installation
(for example, C:\Program Files\Sangoma NetBorder Platform
2.0\config\call-analyzer-engine.properties).
The call-analyzer-engine.properties file is a simple text file that you can edit
using any standard text editor. Note that many of the parameters in this file
are the same as those contained in the config\call-analyzer-
service.properties file. For more information on these parameters, see the
Table entitled Configuration Parameters: call-analyzer-service .properties in
the preceding section.
N OTE: Lines starting with the character ‘#’ are comments ignored by
the software.
call-properties files
This section describes the configuration parameters contained in the call-
properties files, located at:
● [NETBORDER_INSTALLDIR]\config\
where [NETBORDER_INSTALLDIR] is the root folder of the installation
(for example, C:\Program Files\Sangoma NetBorder Platform
2.0\config\CallAnalyzerAsOutboundProxy.call-properties) .
The .call- properties file are a simple text file that you can edit using any
standard text editor.
N
OTE: Lines starting with the character ‘#’ are comments ignored
by the software. Paragraphs or blocks of text are commented out by
means of triple quotes; that is, the text to be ignored is surrounded
by three sets of quotations marks (""").
Timeout Sequence
This diagram illustrates which timeout applies during which part of the call.
Note that in this sequence no timeout is triggered. The horizontal lines
represent a timeout that is 'ticking'.
Logging levels
There are six logging levels, as follows:
● FATAL: Logs very severe error events that may lead the application to
abort.
● ERROR: Logs only error conditions. The ERROR level provides the
smallest amount of logging information.
● WARN: Logs information when an operation completes successfully but
there are issues with the operation.
● INFO: Logs information about workflow. It generally explains how an
operation occurs.
● DEBUG: Logs all of the details related to a specific operation. This is the
highest level of logging.
● TRACE: Logs designated finer-grained informational events than DEBUG.
C
AUTION: The performance of the system is significantly degraded
when the log level is set to TRACE. DEBUG and TRACE should only be
used by Technical support when troubleshooting a specific issue.
Logger hierarchy
The logger adheres to a hierarchical structure starting with a “Root” logger.
Components that are direct “children” of a logger above them in the
hierarchy inherit all of the properties of the parent. The value inherited by a
child from the parent can by overridden by modifying the specific property of
the child. A change at one level will impact all of the component’s
descendants.
The figure below illustrates a subset of the NetBorder Call Analyzer‘s logging
hierarchy. Those components that are used solely for troubleshooting purposes
by Sangoma Support have not been included (for example, infrastructure
components and utilities).
In the example provided, the root logging level is set to INFO, and the appender
(formatting handle) is NTEVENTLOG. The appender is configured to redirect the
output to the Windows Event Viewer using NTEventLogAppender and a
RollingFileAppender.
Logging Appenders
Appender Description
log4cplus::NTEventLog Output redirected to the Windows Event Viewer.
Appender
log4cplus::ConsoleAppender Output redirected to stdout (standard output).
log4cplus::RollingFileAppender Output redirected to a rolling file (rolling executed based
on the log file size). If this type of appender is chosen,
then the following properties can be configured:
log4cplus.appender.<MY_HANDLE>.File=<filename>.log
log4cplus.appender.<MY_HANDLE>.MaxFileSize=50MB
log4cplus.appender.<MY_HANDLE>.MaxBackupIndex=20
log4cplus.appender.<MY_HANDLE>.ImmediateFlush=true
Log4cplus::DailyRollingFile Output redirected to a scheduled rolling file (rolling
Appender executed based on a schedule – hourly, daily, etc.). There
is no restriction on disk space for this appender, so
use with care. If this type of appender is chosen, then
the following properties can be configured:
log4cplus.appender.<MY_HANDLE>.File=<filename>.log
log4cplus.appender.<MY_HANDLE>.Schedule=HOURLY
The Schedule property can take one of the following
values: MONTHLY, WEEKLY, DAILY, TWICE_DAILY, HOURLY,
MINUTELY.
log4cplus::FileAppender Output redirected to a file (file is overridden each time the
service starts). If this type of appender is chosen, then
the following properties can be configured:
log4cplus.appender.<MY_HANDLE>.File=<filename>.log
log4cplus.appender.<MY_HANDLE>.MaxFileSize=50MB
log4cplus.appender.<MY_HANDLE>.ImmediateFlush=true
log4cplus.appender.NTEVENTLOG.layout=log4cplus::PatternLayout
# Output 'Log Level' - 'Logger name' : Message
log4cplus.appender.NTEVENTLOG.layout.ConversionPattern=%p - %c : %m%n
In the example above, “%p” indicates the logging level or priority (such as
“INFO”), “%c” indicates the source of the event (such as a configuration
parameter), followed by the log message itself, and finally a new line.
The following table lists the special conversion characters available for use
within layout pattern strings. Note that each conversion qualifier starts with a
percent sign (%).
# Call Logging
log4cplus.appender.CALL_LOG_APPENDER=log4cplus::NullAppender
log4cplus.appender.CALL_LOG_APPENDER.Directory=C:\Program Files\Sangoma
NetBorder Platform 2.0\logs\call-logs
log4cplus.appender.CALL_LOG_APPENDER.ImmediateFlush=true
log4cplus.appender.CALL_LOG_APPENDER.layout=log4cplus::PatternLayout
log4cplus.appender.CALL_LOG_APPENDER.layout.ConversionPattern=%D{%Y-%m-
%d %H:%M:%S:%%q} [%t] %p - %c : %m%n
# Set to true if you want a directory structure with
# year/month/day/hour for your call logs
netborder.infra.CallLogger.dateTimeDirectory=true
Syslog integration
Logging to syslog involves adding the REMOTE_SYSLOG_APPENDER to the
root logger and enabling network logging in syslogd.
log4cplus.rootLogger=WARN, REMOTE_SYSLOG_APPENDER
log4cplus.appender.REMOTE_SYSLOG_APPENDER=
netborder::RemoteSyslogAppender
log4cplus.appender.REMOTE_SYSLOG_APPENDER.layout=
log4cplus::PatternLayout
log4cplus.appender.REMOTE_SYSLOG_APPENDER.layout.ConversionPattern=
%D{%H:%M:%S:%%q} [%t] %p - %c : %m%n
log4cplus.appender.REMOTE_SYSLOG_APPENDER.Hostname=hostname
log4cplus.appender.REMOTE_SYSLOG_APPENDER.Port=514
log4cplus.appender.REMOTE_SYSLOG_APPENDER.Facility=8
The last two settings are optional and have default values of 514 and 8,
respectively: 514 is the default syslog Port, and the Facility property represents
the source of the message (8 stands for LOG_USER or random user-level
messages).
The following table contains the most frequent SIP response codes you will
encounter while using the NetBorder Call Analyzer.
Modified versions of the first SDP are labelled SDP2, SDP3, and so on.
This second example depicts a sample call flow in which call progress analysis
has not been enabled, and the first INVITE contains an SDP body.
v=0
o=Username 1190134451 1190750689 IN IP4 192.168.11.156
s=Kapanga [1190134451]
c=IN IP4 192.168.11.156
t=0 0
m=audio 5562 RTP/AVP 8 0 101
a=rtpmap:8 pcma/8000
a=sendrecv
a=silenceSupp:off - - -
a=rtcp:5563
a=maxptime:20
a=ptime:20
a=rtpmap:0 pcmu/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15,36
v=0
o=- 1190750690 1190750690 IN IP4 192.168.11.156
s=Paraxip Media Session
c=IN IP4 192.168.11.156
t=0 0
m=audio 9000 RTP/AVP 0 8
a=recvonly
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
>>> 180 Ringing received from callee (with SDP, then in early media mode)
v=0
o=Paraxip-Tech 1190750737 1190750737 IN IP4 192.168.11.103
s=SIP Call
c=IN IP4 192.168.11.103
t=0 0
m=audio 49152 RTP/AVP 0
a=rtpmap:0 pcmu/8000
a=ptime:20
a=sendonly
SIP/2.0 200 Ok
Via: SIP/2.0/UDP 192.168.11.156:5062;branch=z9hG4bK-d87543-170fcc611560b358-1---
d87543-;rport=5062
Contact: sip:[email protected]:5061;transport=udp
To: <sip:[email protected]:5061>;tag=ds-6784-8b3c33d9
v=0
o=Paraxip-Tech 1190750737 1190750738 IN IP4 192.168.11.103
s=SIP Call
c=IN IP4 192.168.11.103
t=0 0
m=audio 49152 RTP/AVP 0
a=rtpmap:0 pcmu/8000
a=ptime:20
a=sendonly
v=0
SIP/2.0 200 Ok
Via: SIP/2.0/UDP 192.168.11.156:5062;branch=z9hG4bK-d87543-6964a8270b272a38-1---
d87543-;rport=5062
Contact: sip:[email protected]:5061;transport=udp
To: <sip:[email protected]:5061>;tag=ds-6784-8b3c33d9
From: "Paraxip NetBorder"<sip:[email protected]:5062>;tag=ee58eb5f
Call-ID: MzBhM2M2MmQ1NzVkZTFkZDhjY2FjYWNiNTQ4ZTJkMDE.
CSeq: 2 INVITE
Content-Type: application/sdp
Content-Length: 236
v=0
o=Paraxip-Tech 1190750737 1190750739 IN IP4 192.168.11.103
s=SIP Call
c=IN IP4 192.168.11.103
t=0 0
m=audio 49152 RTP/AVP 0 101
a=rtpmap:0 pcmu/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
Contact: <sip:[email protected]:5062>
To: <sip:[email protected]:5061>;tag=ds-6784-8b3c33d9
From: "Paraxip NetBorder"<sip:[email protected]:5062>;tag=ee58eb5f
Call-ID: MzBhM2M2MmQ1NzVkZTFkZDhjY2FjYWNiNTQ4ZTJkMDE.
CSeq: 2 ACK
Content-Length: 0
<<< 200 OK sent to the caller (answer the call) with the callee SDP
SIP/2.0 200 OK
Via: SIP/2.0/UDP
192.168.11.156:5060;branch=z9hG4bK233E73631D7A9A90B05D8C5A02983766;rport=5060
Contact: "Paraxip NetBorder"<sip:[email protected]:5062>
To: <sip:[email protected]:5061>;tag=0f7fe217
From: "Your Long
Name"<sip:Username@defaultproxy:5060>;tag=660A72622E4A7F9B9A839A2B8B9381FD
Call-ID: [email protected]:5062
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, INFO
Content-Type: application/sdp
Content-Length: 236
CPD-Result: Voice
v=0
o=Paraxip-Tech 1190750737 1190750739 IN IP4 192.168.11.103
s=SIP Call
c=IN IP4 192.168.11.103
t=0 0
m=audio 49152 RTP/AVP 0 101
a=fmtp:101 0-16
a=ptime:20
a=rtpmap:0 pcmu/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
CSeq: 1 ACK
User-Agent: Kapanga Softphone Desktop 1.00/2163e+1161886252_001372BDBCE2
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.11.103:5061;branch=z9hG4bKb40d23cb-6ba2-11dc-a6a1-9f96e950026a
Contact: <sip:[email protected]:5062>
To: "Paraxip NetBorder"<sip:[email protected]:5062>;tag=ee58eb5f
From: <sip:[email protected]:5061>;tag=ds-6784-8b3c33d9
Call-ID: MzBhM2M2MmQ1NzVkZTFkZDhjY2FjYWNiNTQ4ZTJkMDE.
CSeq: 2 BYE
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 127.0.0.1:5062;branch=z9hG4bK-d87543-9457d20c5602cd16-1---
d87543-;received=192.168.11.156
Contact: <sip:[email protected]:5060;transport=udp>