Skip to main content

Uniphore Help Center Portal

Configuration

This topic contains detailed configuration guidelines to enable call recording for Avaya Aura.

Note

Only configuration settings relevant to this Avaya Aura integration are listed here. For all other settings, leave these set to their default values.

Step

Reference

Description

1

Configure the Integration Adapter

Configure the Integration Adapter on the Collector (IntegrationAdapter.ini and Identity.ini).

2

Configure the RTP Collector

Configure the RTP Collector (RAM) on the Collector (RAM.ini and RTPCollector.ini).

3

Configure the Avaya Active CTI Server

Configure the Avaya Active CTI Server on the Collector (CTIServer_AvayaActive.config).

4

Configure the Avaya SMS CTI Server

Configure the Avaya SMS CTI Server on the Collector (CTIServer_AvayaSMS.config), optional.

Also see:

Configure the Integration Adapter

The Integration Adapter configuration is specified in IntegrationAdapter.ini and Identity.ini. These files are automatically generated with default values when the Collector is started for the first time.

IntegrationAdapter.ini
Example
[General]
DownstreamAPIVersion=0
RecordByDefault=1

[JetStream]
ServerURL=nats://u-capture.example.com:4222

[VoiceActivityDetection]
WindowSizeMS=10
UseShortTermEnergy=1
MinEnergy=0.000060
UseZeroCrossingRate=0
MinZeroCrossingRate=0.000001
MaxZeroCrossingRate=0.187400
UseActivityTriggering=0
MinActivityMS=20
ActivityEndHangTimeMS=5000

[Licence]
RecordPoolChannels=1000
PP0=4BFDSLVELC382EE4

[INSTALLED PPS]
# Library path of all installed PPs [PP0-PPn]
PP0=/usr/lib/libPP_Matcher.so

[Phones]
SegLengthSecs=9999999
Settings

Only configuration settings relevant to this Avaya Aura integration are listed here. For all other settings, leave these set to their default values.

Note

2024.2 introduced the support of NATS JetStream, therefore the NATS Streaming settings (STAN and STANChannels) have been depreciated. Uniphore recommends using the new JetStream settings; however the depreciated NATS Streaming settings are still available. For the depreciated STAN settings and an example of those settings in context, see Depreciated NATS Settings.

[General]

[General]DownstreamAPIVersion

Controls the format of messages sent downstream to consuming applications, either:

  • Set to 0 (default) to use the original message format of metadata for metadata, and media.<call_id> for media.

  • Set to 1 to use the format call.metadata.tenant.<tenant_id>.call.<call_id> for metadata and call.media.tenant.<tenant_id>.call.<call_id> for media.

[General]RecordByDefault

Set to 1 to enable or 0 to disable recording by default, for newly discovered devices. If not specified, the default value is 1 (enabled).

[JetStream]

[JetStream]ServerURL

The URL of the NATS server. In the most simple of cases, this will be the NATS server used by the Audio Connector.

[JetStream]Username

If the NATS server is configured for user based authentication, specify the username here. If not specified, no value is used.

[JetStream]Password

If the NATS server is configured for user based authentication, specify the password here. If a password is used, the NATS server should also be configured to use TLS to prevent the password from being sent over the network in the clear. If not specified, no value is used.

[JetStream]Token

If the NATS server is configured for token based authentication, specify the token here. If a token is used, the NATS server should also be configured to use TLS to prevent the token from being sent over the network in the clear. If not specified, no value is used.

[JetStream]TrustedCACertificatesFileName

If the NATS server is configured to use TLS, specify the trusted CA certificate chain here. This will be the CA certificate chain that was used to sign the server certificate. If not specified, no value is used.

[JetStream]ClientCertificateChainFilename

If the NATS server is configured to use TLS with mutual-authentication, specify the client certificate chain here. This will be the client certificate plus the CA certificate chain used to sign the client certificate. If not specified, no value is used.

[JetStream]ClientCertificateKeyFilename

If the NATS server is configured to use TLS with mutual-authentication, specify the client private key here. If not specified, no value is used.

[JetStream]SkipServerVerification

If the NATS server is configured to use TLS, disables verification of the server certificate. Not recommended. If not specified, the default value is 0.

[VoiceActivityDetection]

This section of the ini file is used to define the VAD settings. If the default configuration values don’t work for the customer, it’s recommended that you disable VAD, then record and export some example calls to WAV. These files can then be passed through a test tool that will allow the trial of different configuration values to ensure the correct parts of the call are identified as voice. The best fit configuration can then be applied to the Collector. Please contact the Uniphore Development Support Team for details.

Note

To disable Voice Activity Detection, simply disable the use of both Short-Term Energy and Zero Crossing Rate.

[VoiceActivityDetection]WindowSizeMS

The size of the window, in milliseconds, on which to perform VAD. The default is 10 milliseconds – we don’t recommend any other value at present.

[VoiceActivityDetection]UseShortTermEnergy

Enables/disables use of the Short-Term Energy algorithm. By default, this is enabled (1).

[VoiceActivityDetection]MinEnergy

The minimum energy required for the window to be considered as voice activity. Expressed as a decimal value between zero and one. Zero being absolute silence and one being maximum loudness. The default is 0.000060. This may seem like a low value, but generally background noise will be lower than this.

[VoiceActivityDetection]UseZeroCrossingRate

Enables/disables use of the Zero Crossing Rate (ZCR) algorithm. Use of ZCR is only recommended if it’s required that tones on the channel do not trigger voice recording. If this is the case, ZCR should be used in conjunction with STE. By default, ZCR is disabled (0).

[VoiceActivityDetection]MinZeroCrossingRate

The minimum Zero Crossing Rate for the window to be considered as voice activity. The default is 0.000001. Human speech has a low ZCR, increasing this value may prevent voice from being detected. A lower limit is required because a ZCR of zero indicates that the sine wave is not crossing zero i.e. the waveform is flatline (silence).

[VoiceActivityDetection]MaxZeroCrossingRate

The maximum Zero Crossing Rate for the window to be considered as voice activity. The default is 0.187400.

[VoiceActivityDetection]UseActivityTriggering

Enables/disables use of activity triggering. By default this is disabled (0). If enabled (1), a voice recording will not be created until voice activity is detected on the channel. Likewise, the voice recording will be ended on cessation of voice activity on the channel. If disabled (0), voice recordings will be created and ended based on signaling as normal.

[VoiceActivityDetection]MinActivityMS

The minimum duration of voice activity, in milliseconds, that is required to invoke voice recording. The default is 20 milliseconds. This value must be a multiple of the window size and must be between 10 and 300 milliseconds.

[VoiceActivityDetection]ActivityEndHangTimeMS

The duration, in milliseconds, to continue the voice recording after voice activity has ceased. The default is 5000 milliseconds (5 seconds). This value must be a multiple of the window size. This prevents pauses in speech from causing excessive stopping and restarting of recording.

[Licence]

[Licence]RecordPoolChannels

Defines how many concurrent channels can be captured by the Collector. Calls over this value will be discarded. If not specified, the default value is 1000.

[Licence]PP<0…N>

One or more PP license codes that tell the Integration Adapter which PP(s) to load and what mode they should operate in. This will have been provided as part of the customer’s deployment information from Uniphore.

[Installed PPS]

[Installed PPS]PP<0…N>

The absolute path to one or more PP libraries. The order which PP libraries appear in this list affects the priority order when packets to be processed are passed to the PPs. This will have been provided as part of the customer’s deployment information from Uniphore.

[Phones]

DefaultRecordOnDemandState

Set to Recorded.

[Phones]SegLengthSecs

The maximum recording segment length in seconds. After this duration, recordings will be split. If not specified, the default value is 3600 (1 hour).

Note

For call segmentation to work in Communication Recording Agent, SegLengthSecs should be set to an extremely high value (e.g. 9999999). This will prevent call segmentation from being carried out by the Collector.

[Phones]DetectNewItems

Enable (1) or disable (0) the automatic detection (discovery) of new devices. The default is enabled (1). In general, leave this set to 1 (enabled) for initial system setup and device discovery – if the customer then wants to “lock down” their recordable devices, this can be changed to 0 (disabled).

[Capture]

[Capture]VLANTaggedTraffic

Enables (1) or disables (0) capture of VLAN tagged packets. If not specified, the default is 1 (enabled).

[Recording]

DelayRecordingStartUntilMediaIsReceived

Set to 1 to only delay the start of CTI calls until media is recieved.

[Recording]MaxPacketsInQueue

The maximum number of packets to queue for processing before discarding packets. If not specified, the default value is 65536.

[Recording]MaxPacketLength

The maximum packet length to process in bytes. If not specified, the default value is 9018 (18 bytes for the Ethernet header and FCS, plus a 9000 byte MTU).

[Recording]MediaFlushTimeoutMS

The maximum interval (in milliseconds) to flush media data to NATS Streaming. If not specified, the default value is 10000 (10 seconds). Realtime streaming solutions should set the value to 100.

[Recording]Triggers

Set the comma separated list for the priority of recording triggers, valid options are CTI, Activity, and Signalling.

Under normal operation, the first trigger listed is used – if the source of that trigger fails then the next working trigger source in the list is used to determine when to trigger recording.

[Recording]DelayedCallEndTimeoutMS

Determine how long (in milliseconds) to continue capturing each call after the call end signal has been received, this is to allow any remaining audio to be captured. If not specified, the default value is 1000 (1 second)

[Recording]Policy

Determine which calls should be recorded, either internal extension to extension calls (Internal), external calls (External), or both internal and external calls (All). If not specified, the default value is to record just external calls (External).

Note

This setting replaces the now depreciated [Licence]RecordInternalCalls setting.

[CallSuppression]

[CallSuppression]MaxSuppressCount

The maximum number of times a given recording can be suppressed. If not specified, the default is 3 times (3).

[CallSuppression]MaxSuppressTime

The maximum length of time a given period of suppression will last. If not specified, the default is 15 seconds (15).

[CallSuppression]StopCapture

When call capture is suppressed, send (true) or do not send (false) a request that the audio feed from the 3rd party system be stopped. If not specified, the default is to send the request (true).

[CallSuppression]StopOnCallEnd

Determine if the suppression for a device is ended when the suppressed call on that device ends. If not specified, the default is false.

[CTIServer]

[CTIServer]MaxConnections

The maximum number of concurrent CTI Server connections to accept. If not specified, the default value is 20.

Depreciated NATS Settings

[STAN]ServerURL

Set to the URL of the NATS Streaming Server associated with this Collector.

[STAN]ClusterID

Defines the NATS Streaming cluster ID – must be set to stan-cluster.

[STAN]ClientID

A string that identifies this NATS Streaming client. The Collector ID is appended to this to ensure it is unique. If not specified, the default value is RedBox-IntegrationAdapter.

[STAN]ConnectionTimeoutMS

The duration in milliseconds to wait for a connection attempt to the NATS Streaming server to succeed before considering it as timed-out. If not specified, the default value is 15000 (15 seconds).

[STAN]RetryWaitMS

The duration in milliseconds to wait between attempts to connect to the NATS Streaming server. If not specified, the default value is 15000 (15 seconds).

[STAN]Username

If the NATS Streaming Server is configured for user based authentication, specify the username here. If not specified, no value is used.

[STAN]Password

If the NATS Streaming Server is configured for user based authentication, specify the password here. If a password is used, the NATS Streaming Server should also be configured to use TLS to prevent the password from being sent over the network in the clear. If not specified, no value is used.

[STAN]SkipServerVerification

If the NATS Streaming server is configured to use TLS, disables verification of the server certificate. Not recommended. If not specified, the default value is 0.

[STAN]CertificateChainFilename

If the NATS Streaming Server is configured to use TLS, specify the trusted CA certificate chain here. This will be the CA certificate chain that was used to sign the server certificate. If not specified, no value is used.

[STAN]ClientCertificateChainFilename

If the NATS Streaming Server is configured to use TLS, specify the client certificate chain here. This will be the client certificate plus the CA certificate chain used to sign the client certificate. If not specified, no value is used.

[STAN]ClientCertificateKeyFilename

If the NATS Streaming Server is configured to use TLS, specify the client private key here. If not specified, no value is used.

[STAN]Ciphers

If the NATS Streaming Server is configured to use TLS, this value can be used to restrict the allowed ciphers. If not specified, no value is used.

Depreciated NATS Streaming settings example:

[STAN]
ServerURL=nats://abcd.dev.mycompany.com:4222
ClusterID=stan-cluster
ClientID=RedBox-IntegrationAdapter-1
ConnectionTimeoutMS=15000
RetryWaitMS=15000
Username=
Password=
SkipServerVerification=0
CertificateChainFilename=
ClientCertificateChainFilename=
ClientCertificateKeyFilename=
Ciphers=

[STANChannels]
Alerts=RedBox.Collector.Alert
EventLogs=RedBox.Collector.EventLogs
ConfigRequests=RedBox.Collector.ConfigRequests
ConfigEvents=RedBox.Collector.ConfigEvents
Media=media
Metadata=metadata
Identity.ini
Example
TenantID=dcedc429-11a9-4408-84a7-c781363c62e1
TenantName=test
CollectorID=0f89817f-e324-48ca-bcb6-3d61f292755b
CollectorName=collector1
Settings

TenantId

Set to the unique identifier of the tenant associated with this Collector. If no tenants are defined, the default test tenant will be used dcedc429-11a9-4408-84a7-c781363c62e1

TenantName

The name of the tenant to which the Collector belongs (optional).

CollectorId

The unique identifier for this Collector. A UUID will be automatically generated and written to Identity.ini on first start.

CollectorName

The name of the Collector (optional).

Configure the RTP Collector

The RTP Collector is used to capture call audio and configuration is specified in two configuration files, RAM.ini and RTPCollector.ini – these files are automatically generated with default values on first start. Examples are shown below:

RAM.ini
[RTPCollectorSettings]
RecorderHost=localhost

[RTPCollectorSettings]RecorderHost

The hostname or IP address of the Integration Adapter. If not specified, defaults to localhost.

RTPCollector.ini
[MediaPorts]
Min=25000
Max=65535

[Suppression]
StartSequence=*123
StopSequence=#123

[SRTCP]
UseSRTCPWhenSRTP=1

[docker0]
Use=0
IPv4Address=10.0.2.15

[eth0]
Use=1
IPv4Address=10.0.2.42
IPv6Address=2001:db8::1234:5678
Settings

Note

Only configuration settings relevant to this Avaya Aura integration are listed here. For all other settings, leave these set to their default values.

[MediaPorts]Min

The beginning of the media port range. Default is 25000.

[MediaPorts]Max

The end of the media port range. Default is 65535.

[Suppression]StartSequence

The sequence of DTMF digits required to start audio suppression on the current call. Default is empty (disables the feature).

[Suppression]StopSequence

The sequence of DTMF digits required to stop audio suppression on the current call. Default is empty (disables the feature). Should not be the same as the start sequence for obvious reasons.

[SRTCP]UseSRTCPWhenSRTP

Enables/disables the expectation that RTCP will also be encrypted when SRTP is being used for a given session. If not specified, defaults to 1 (enabled).

[<adapter-name>]

The RTP Collector discovers all available network adapters on start-up – they’re listed by their device name. The adapter’s IPv4 address is displayed for ease of identification. By default, all adapters are enabled for media traffic. Enable (Use=1, default) or disable (Use=0) adapters as needed.

It’s important that only adapters reachable by the telephony system are used. Adapters are load balanced, so sessions will be evenly distributed across all enabled adapters.

[<adapter name>]IPv4Address

Automatically populated with the IPv4 address of the given network adapter. Aids adapter identification. The RTP Collector does not read this value.

[<adapter name>]AdvertisedIPv4Address

Overrides the IPv4 address advertised for the given network adapter. This is useful when you need an ingress address that is not an address belonging to the RTP Collector itself. If not specified, then defaults to the adapter’s IPv4 address.

Configure the Avaya Active CTI Server

The Avaya Active CTI Server is used to capture call metadata and configuration is specified in the CTIServer_AvayaActive.config file. A sample file is provided in SampleConfigFiles, and examples are provided in this topic (also, see Complete Sample Configuration).

[recorder]

Use this section to set up the CTI connection between the Collector and the Avaya Active CTI Server.

The Avaya Active CTI server is designed to only establish a CTI link with one Collector and will mostly run on the same server as the Collector. If the Collector is located on a different server than CTI server, update the recorderIPAddress to specify the location of the Collector.

<recorder>
    <recorders>
        <add logicalRecorderId="1">
            <add recorderIpAddress="127.0.0.1" />
        </add>
    </recorders>
</recorder>

 

[Avaya]

This section contains the following subsections:

Subsection

Reference

Description

dmcc

See "[dmcc] Subsection" below.

Define the TCP/IP connection with the DMCC interface on the AES

device

See "[device] subsection" below.

Define the parameters used by the CTI Server when establishing device monitors and device registrations.

switches

See "[switches] Subsection" below.

Define a list AES Switch connections to use.

Note

  • The AES protocol version is now automatically negotiated between the Avaya Active CTI Server and the AES. Previously for encrypted calls and secure connections, a protocolVersion attribute needed to be added to the CTIServer_AvayaActive.config file. For deployments which used to manually specify the AES protocol version, it is necessary to delete the protocolVersion XML attribute from the configuration file before the CTI Server will start.

  • In the device subsection, the controllableByOtherSessions and instance configuration options have been removed. For deployments where these were specified, it is necessary to remove them from CTIServer_AvayaActive.config before the CTI Server will start.

[dmcc] Subsection

The dmcc subsection defines the connection between the CTI Server and DMCC service. Settings are defined below, depending on your connection type.

  • DMCC – Standard Connection—for recording standard audio and a standard DMCC connection:

    <avaya>
    ...
        <dmcc
            aesAddress="170.10.2.10"
            useSsl="false"
            username="ctiuser"
            password="CTIUser1234"
            dmccPort="4721 "
            sessionDuration="180"
            sessionCleanupDelay="60"
            />
    
    </avaya>
  • DMCC – Secure Connection—for recording encrypted audio and a secure DMCC connection:

    <avaya>
    ...
        <dmcc
            aesAddress="170.10.2.10"
            useSsl="true"
            username="ctiuser"
            password="CTIUser1234"
            dmccPort="4722"
            serverName="servername"
            sessionDuration="180"
            sessionCleanupDelay="60"
            clientCertificateFile="..\Container\config\redboxrecorder.p12"
            clientCertificatePassword=""
            />
    ...
    </avaya>

Note

To use a secure CTI Server connection, you also need valid security certificates installed on the Collector, CTI server, and AES/DMCC server.

[dmcc]aesAddress

The IP address of the Avaya AES.

[dmcc]useSsl

Declares the use of SSL. If not specified, defaults to false.

[dmcc]username

The username of the CTI user configured on the AES. Note that for Multiple Registration recording, systems with multiple Collectors must use a separate CTI user for each Collector.

[dmcc]password

The password of the CTI user configured on the AES.

[dmcc]dmccPort

The TCP port of the DMCC interface on the AES. For a standard connection use 4721 or 4722 for a secure connection. If not specified defaults to 4721.

[dmcc]sessionDuration

The length of time (in seconds) that the connection to the AES will be maintained. If not specified defaults to 180.

[dmcc]sessionCleanupDelay

The length of time (in seconds) before the AES will clean up a disconnected session. If not specified defaults to 60.

[dmcc]serverName

The name of the AES/DMCC server.

[dmcc]clientCertificateFile

The full path to the certificate file. Note that this is required for secure connection.

[dmcc]clientCertificatePassword

The password for the supplied certificate. Note that this is required for secure connection.

[device] Subsection

This subsection defines the parameters used by the CTI Server when establishing device monitors and device registrations.

Note

The controllableByOtherSessions and instance configuration options have been removed. For deployments where these were specified, it is necessary to remove them from CTIServer_AvayaActive.config before the CTI Server will start.

<avaya>
...
    <device
      multiRegistrationModeIndependent="true"
      startRecordingOnDeliveredEvent="false"
      startRecordingOnDeliveredEventTimeout="60">
        <codecs>
            <add id="g711A"/>
            <add id="g711U"/>
            <add id="g729"/>
        </codecs>
        <encryptionSuites>
            <add id="none"/>
        </encryptionSuites>
    </device>
...
</avaya>

[device]multiRegistrationModeIndependent

Defines the registration mode for Multiple Registration recording – true (Independent), false (Dependent).

Uniphore recommends this is always set to true (Independent) which allows the Collector to register the additional instance of the physical device being recorded, without the need for that device to be registered (logged on) with the CM.

[device]startRecordingOnDeliveredEventTimeout

Only applies if startRecordingOnDeliveredEvent is enabled. If a call is automatically forwarded to an un-recorded device, the Collector stops recording the call once the timeout is met. If not specified defaults to 60 seconds.

[device]startRecordingOnDeliveredEvent

If true, the recordings start as soon as the destination phone rings. If false, they start when the call is answered. If not specified defaults to false.

[device]codecs

Determines which codecs should be requested for recording. There is no limit, but all values specified must be valid. The configured list is taken as the order of preference from top most preferred to bottom least preferred. Supported codec values are: g711A, g711U, g722, g723, g729, g729A.

[device]EncryptionSuites

For recording encrypted calls, declare the encryption suite. Valid encryption suites are:

  • srtp-aescm128-hmac80

  • srtp-aescm128-hmac32

  • srtp-aescm128-hmac80-unauth

  • srtp-aescm128-hmac32-unauth

  • srtp-aescm128-hmac80-unenc

  • srtp-aescm128-hmac32-unenc

  • srtp-aescm128-hmac80-unenc-unauth

  • srtp-aescm128-hmac32-unenc-unauth

  • aes

  • none

[switches] Subsection

This subsection defines the configuration for each Switch Connection used by the CTI Server. Each Switch Connection is identified by its name and has its own configuration for agent groups, Multiple Registration target devices, and Single Step Conferencing recording devices. See “switches/add”, “switches/add/mr”, and “switches/add/ssc”.

<switches>
    <add switchName="CM">
        <agentGroups>
            <add extension="2020"/>
        </agentGroups>
        <mr>
            <targetDevices stationPassword="1234" mediaMode="Separated"/>
        </mr>
        <ssc>
            <recordingDevices stationPassword="1234">
            <add extension="70000"/>
            <add first="70001" last="70005"/>
            </recordingDevices>
        </ssc>
    </add>
</switches>

Option

Description

switches/add

Add a Switch Connection. Communication Recording Agent supports multiple switch connections, use multiple add sections to connect to multiple switches.

switches/add/@switchName

Specify the name of the Switch Connection.

switches/add/agentGroups

Specify the list of Call Center Elite groups to monitor for agent information.

switches/add/agentGroups/add

Add an agent group.

switches/add/agentGroups/add/@extension

Specify a singular group extension to add to the list, for example:

<add extension="2020"/>

switches/add/agentGroups/add/@first

and

switches/add/agentGroups/add/@last

Specify a range of group extensions to add to the list, for example:

<add first="2030" last="2050"/>

switches/add/mr

The following settings define the configuration for Multiple Registration recording and are therefore only required if using Multiple Registration recording.

Option

Description

switches/add/mr/targetDevices

Specify the target device configuration for Multiple Registration recording.

switches/add/mr/targetDevices/@stationPassword

The station password configured for all target devices configured on the CM.

Note

The station password is not required if all of the following Avaya config conditions are met:

  • The DeviceID contains the administered switch name associated with a valid switch connection to the CM and the switch connection to the CM is active and talking.

  • The SDB on the AE Services server is enabled.

  • The CTI user has “Unrestricted Access” in the SDB.

  • The extension’s class of restriction (COR) on the CM has:

    “Can Be Service Observed” set to “y”.

    “Can Be a Service Observer” set to “y”.

switches/add/mr/targetDevices/@mediaMode

Specify the mode for the recording media streams. Valid values are:

  • Mixed – a single channel is recorded for each call containing both directions of audio. This consumes a single device ID instance and DMCC licence.

  • Separated – two channels are recorded for each call. One containing the local party audio, the other containing the remote party audio. This consumes two device ID instances and DMCC licenses.

switches/add/ssc

The following settings define the configuration for Single Step Conferencing recording and are therefore only required if using Single Step Conferencing recording.

Option

Desription

switches/add/ssc/recordingDevices

Specify the list of virtual recording devices for Single Step Conferencing recording.

switches/add/ssc/recordingDevices/@stationPassword

The station password configured for all recording devices configured on the CM.

Note

The station password is not required if all of the following Avaya config conditions are met:

  • The DeviceID contains the administered switch name associated with a valid switch connection to the CM and the switch connection to the CM is active and talking.

  • The SDB on the AE Services server is enabled.

  • The CTI user has “Unrestricted Access” in the SDB.

  • The extension’s class of restriction (COR) on the CM has:

    “Can Be Service Observed” set to “y”.

    “Can Be a Service Observer” set to “y”.

switches/add/ssc/recordingDevices/add/@extension

Specify a singular recording device extension to add to the list, for example:

<add extension="70000"/>

switches/add/ssc/recordingDevices/add/@first

and

switches/add/ssc/recordingDevices/add/@last

Specify a range of recording device extensions to add to the list., for example:

<add first="70001" last="70005"/>

Complete Sample Configuration
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="recorder" type="RedBox.Config.RecorderConfig, RecorderShared"/>
    <section name="avaya" type="RedBox.AvayaActive.Config.AvayaActiveConfig, CTIServer_AvayaActive"/>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <section name="rtpCollectors" type="RedBox.RTPCollector.Client.ConfigSection, RedBox.RTPCollector.Client" />
  </configSections>

  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="C:\LTR\Logs\CTIServer_AvayaActive.txt"/>
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="2" />
      <maximumFileSize value="15MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level [%thread] %logger: %message%newline" />
      </layout>
    </appender>

    <appender name="RollingEventAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="C:\LTR\Logs\CTIServer_AvayaActive_XML.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="2" />
      <maximumFileSize value="15MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date: %message%newline" />
      </layout>
    </appender>

    <root>
      <level value="WARN" />
      <!-- Setting this to ALL will increate the logging level to max -->
      <appender-ref ref="RollingFileAppender" />
    </root>

    <!-- Note: to start event logging set the level value to "ALL", to disable event logging set the event value to "OFF"-->
    <logger name="EventLogger" additivity="false">
      <level value="OFF" />
      <appender-ref ref="RollingEventAppender" />
    </logger>
  </log4net>

  <!-- Recorder configuration -->
  <recorder>
    <recorders>
      <add logicalRecorderId="1">
        <add recorderIpAddress="127.0.0.1" />
      </add>
    </recorders>
  </recorder>

  <avaya>
    <dmcc
      aesAddress="172.16.254.6"
      dmccPort="4722"
      username="redbox1"
      password=""
      sessionDuration="180"
      sessionCleanupDelay="60"
      useSsl="true"
      serverName="aes-lab01"
      clientCertificateFile="C:\LTR\Config\redboxrecorder.p12"
      clientCertificatePassword=""
      />

    <device
      multiRegistrationModeIndependent="false"
      startRecordingOnDeliveredEvent="false"
      startRecordingOnDeliveredEventTimeout="60" >
      <codecs>
        <add id="g711A"/>
        <add id="g711U"/>
        <add id="g729"/>
      </codecs>
      <encryptionSuites>
        <add id="none"/>
      </encryptionSuites>
    </device>

    <switches>
      <add switchName="CM">
        <agentGroups>
          <!-- monitor ACD split 2020 -->
          <add extension="2020"/>
        </agentGroups>
        
        <!-- the mr section is only required if Multi-Registration is required -->
        <mr>
          <targetDevices stationPassword="1234"/>
        </mr>
        
        <!-- the ssc section is only required if Single Step Conferencing is required -->
        <ssc>
          <recordingDevices stationPassword="1234">
            <!-- add a single recording device -->
            <add extension="70000"/>
            
            <!-- add a range of recording devices -->
            <add first="70001" last="70005" />
          </recordingDevices>
        </ssc>
        
      </add>
    </switches>

  </avaya>

  <rtpCollectors>
    <add host="localhost" />
  </rtpCollectors>

</configuration>
Configure the Avaya SMS CTI Server

The Avaya SMS CTI Server connects to the System Management Service (SMS) on the Avaya AES for the purpose of detecting recordable devices. The service is also able to validate the configuration of CM stations using Multiple Registration – alerts are raised for devices with incorrect station configuration. Configuring SMS is optional.

Note

For SMS, the connection to the AES uses HTTPS. This means that the root certificate authority/server certificate may need to be configured, see Security.

Configure the Avaya SMS CTI Server by editing the sms section of CTIServer_AvayaSMS.config file, see Complete Sample Configuration) for a complete example of the file.

Example of the sms section:

<sms pollingInterval="00:10:00" pp="PP_MATCHER">
        <aes>
            <add host="172.16.254.6" certificateValidation="false">
                <cm>
                    <add host="172.16.254.5" username="" password="" switchName="CM" recordMethod="MultiRegistration" enableWarningTones="false">
                      <ignoredStations>
                        <add extension="^700\d{2}$"/>
                      </ignoredStations>
                    </add>
                </cm>
            </add>
        </aes>
    </sms>
Settings

/configuration/sms/@pollingInterval

Optional – The duration to wait between polling SMS for station configuration, in the form HH:mm:ss.fff, and must be between 1 minute and 7 days. Defaults to 00:10:00.000 (10 minutes).

/configuration/sms/@pp

Optional, but must be configured for automatic device discovery to function – The PP to use when setting up automatic device discovery, possible values are:

  • PP_MATCHER – If the recording method is DMCC, SIPREC, or SIP active.

  • PP_SIP_NG – If the recording method is SIP passive.

/configuration/sms/aes

Specify a list of the AES servers to connect to. If none are specified, the Avaya SMS CTI Server will do nothing. Each AES server listed has the options: host, certificateValidation, and cm – see below.

Note

The cm section has it’s own list and configuration settings – see “/configuration/sms/aes/add/cm”.

/configuration/sms/aes/add/@host

Must be specified – The Fully Qualified Domain Name (FQDN), hostname, or IP address of the AES server.

/configuration/sms/aes/add/@certificateValidation

Set to true to indicate that the AES web server certificate should be validated, set to false to indicate that the AES web server certificate should not be validated (for production environments Uniphore recommends setting this to true. Defaults to true.

/configuration/sms/aes/add/cm

Specify a list of the CM servers to poll via this AES. If none are specified, the CTI Server will do nothing. Each CM server listed has the options: host, username, password, switchName, recordMethod, enableWarningTones, and ignoredStations – see below.

Note

The ignoredStations section has it’s own list – see “/configuration/sms/aes/add/cm/add/ignoredStations”.

/configuration/sms/aes/add/cm/add/@host

Must be specified – The FQDN, hostname, or IP address of the CM server.

/configuration/sms/aes/add/cm/add/@username

Must be specified – The user to login to the CM as, this user must have permission to execute the list station and display station commands, this is not an AES CTI user.

/configuration/sms/aes/add/cm/add/@password

Must be specified – The password for the CM user.

/configuration/sms/aes/add/cm/add/@switchName

Only required if configuring automatic device discovery for DMCC recording – The name of the Switch Connection configured in the AES for this CM.

/configuration/sms/aes/add/cm/add/@recordMethod

Only required if configuring automatic device discovery for DMCC recording – The recording method to use for devices discovered on this CM, possible values are:

  • MultiRegistration

  • SingleStepConferencing

/configuration/sms/aes/add/cm/add/@enableWarningTones

Only required if configuring automatic device discovery for DMCC recording – Set to true to indicate that devices discovered on this CM should use recording warning tones, set to false to indicate that devices discovered on this CM should not use recording warning tones.

/configuration/sms/aes/add/cm/add/ignoredStations

Specify a list of stations to be ignored when automatically discovering devices. This is useful where the customer may have a set of stations they do not wish to detect as recordable devices, or if there are virtual stations for SSC recording with DMCC.

/configuration/sms/aes/add/cm/add/ignoredStations/add/@extension

The extension of the station to ignore, either a literal extension or a regular expression.

Note

Regular expressions matching multiple stations will cause all matching stations to be ignored.

Complete Sample Configuration
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
        <section name="sms" type="RedBox.Avaya.SMS.Config.SMSConfig, CTIServer_AvayaSMS"/>
        <section name="recorder" type="RedBox.Config.RecorderConfig, RecorderShared"/>
    </configSections>
    <log4net>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%utcdateZ %-5level [%thread] %logger: %message%newline"/>
            </layout>
        </appender>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            <file type="log4net.Util.PatternString" value="/var/redbox/logs/CTIServer_AvayaSMS.txt"/>
            <appendToFile value="true"/>
            <rollingStyle value="Size"/>
            <maxSizeRollBackups value="2"/>
            <maximumFileSize value="15MB"/>
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%utcdateZ %-5level [%thread] %logger: %message%newline"/>
            </layout>
        </appender>
        <root>
            <level value="INFO"/>
            <appender-ref ref="ConsoleAppender"/>
            <appender-ref ref="RollingFileAppender"/>
        </root>
    </log4net>
    <sms pollingInterval="00:10:00" pp="PP_MATCHER">
        <aes>
            <add host="172.16.254.6" certificateValidation="false">
                <cm>
                    <add host="172.16.254.5" username="" password="" switchName="CM" recordMethod="MultiRegistration" enableWarningTones="false">
                      <ignoredStations>
                        <add extension="^700\d{2}$"/>
                      </ignoredStations>
                    </add>
                </cm>
            </add>
        </aes>
    </sms>
    <recorder>
        <recorders>
            <add logicalRecorderId="1">
                <add recorderIpAddress="localhost"/>
            </add>
        </recorders>
    </recorder>
</configuration>
Security

For SMS, the connection to the AES uses HTTPS. This means that the root certificate authority/server certificate may need to be configured.

If the AES web server uses a publicly signed certificate, then no further configuration is required as the Avaya SMS CTI Server container image comes with public trusted root certificate authorities already installed. If the AES web server does not use a publicly signed certificate, then the container image must be extended to install either the root certificate authority responsible for signing the server certificate, or the server certificate itself.

  1. Inside the deployment directory, create a build directory alongside config and logs.

    For example: /opt/redbox/build/avaya-sms-cti-server/

  2. Within the build directory, place your certificate files and create an empty Dockerfile.

    The deployment directory should now look like this:

    /opt/redbox/
         build/avaya-sms-cti-server/
            Dockerfile
            my-certificate.cer
         config/
         logs/
         docker-compose.yaml
  3. Open your new Dockerfile in a text editor.

  4. Edit the Dockerfile to match the example below, this will be used to create a new image from collector.azurecr.io/avaya-sms-cti-server, copy the certificate files into /usr/local/share/ca-certificates/, and install them.

    Note

    To avoid the final image running with root privileges, the USER is switched to root to install the certificates and then back to redbox.

    FROM collector.azurecr.io/avaya-sms-cti-server
    USER root
    COPY --chown=root:root [ "*.cer", "/usr/local/share/ca-certificates/" ]
    RUN update-ca-certificates
    USER redbox
  5. Modify the docker-compose.yaml to build the new image by removing the image specification and replacing it with a build context, for example:

    version: "2.4"
    services:
      avaya-sms-cti-server:
        build:
          context: ./build/avaya-sms-cti-server
        depends_on:
          - integration-adapter
        network_mode: "host"
        restart: unless-stopped
        volumes:
          - ./config:/etc/redbox/config
          - ./logs:/var/redbox/logs
  6. On the Collector, run the following commands to acquire (pull) the latest version of the collector.azurecr.io/avaya-sms-cti-server image, build the image, create the container, and then run the container.

    docker-compose build --pull
    
    docker-compose up -d
Avaya Aura Recording Control
  • The SMS CTI server is configured (If SMS is not configured, devices will need to be added manually).

Log Files

The following log files are provided on the Collector:

  • Integration Adapter – IntegrationAdapter.00.txt

  • RTP Collector – RTPCollector.txt and RTPCollector.Stats.txt

  • Avaya Active CTI Server – CTIServer_AvayaActive.txt

Avaya CTI Server Log Config

The associated log configuration is performed within the associated CTI server config files:

  • Avaya Active CTI Server – CTIServer_AvayaActive.config

To configure the main logging level and to enable/disable event logs, set the following in the appropriate config file.

<log4net>

<root>

<level value="WARN" />

<appender-ref ref="RollingFileAppender" />

</root>

<logger name="EventLogger" additivity="false">

<level value="OFF" />

<appender-ref ref="RollingEventAppender" />

</logger>

</log4net>

level value

For the main logging level for the event logs, set the level value to “WARN” (warnings only) or “ALL” (warnings and errors). Up to three log files (15MB each) are used on a round-robin basis. To create full event logs (stored separately), change the following level value from “OFF” to “ALL”.

Integration Adapter & RTP Collector Log Configuration

The associated log configuration files are:

  • Integration Adapter – IntegrationAdapter.Logging.ini

  • RTP Collector – RTPCollector.Logging.ini

To configure the logs, set the following in the ini files(s).

Note

This only lists the applicable configuration – all other settings can be left with their default values.

[RBRLogging]
LogLevel=Info

[FileAppender]
Enabled=1
MaxFileCount=10
MaxFileSizeMB=15

[RBRLogging]LogLevel

Sets the log level for this logging zone. If not specified, defaults to Warning. If an invalid value is specified, the default is used. Valid values are:

  • Error

  • Print

  • Warning/Warn

  • Message/Msg

  • Info

  • Trace/All

[FileAppender]Compress

Enables/disables log file compression for this logging zone. If not specified, defaults to 0. If enabled, the most recent log file will be compressed on rotation. If enabled on an established system, any pre-existing non-compressed log files will still be rotated but will not be compressed.

[FileAppender]Enabled

Enables/disables logging to file for this logging zone. If not specified, defaults to 1.

[FileAppender]MaxFileCount

The maximum number of log files to retain. If not specified, defaults to 6.

[FileAppender]MaxFileSizeMB

The maximum log file size (in MB) before the file is rotated. If not specified, defaults to 15.