FAQ: Avaya Interaction Center Client SDK

Last Release: 7.3.10 (Aug 2021)

Frequently Asked Questions

This document contains the Frequently Asked Questions on Avaya Interaction Center Client SDKs.

Configuration

There are two settings that determine the log level for the Client SDK server: the log level in the log4j configuration file on the Client SDK Server (tomcat) machine and the value of the Avaya IC property Agent/Desktop/WebClient/LogLevelServer on the IC core.

The log4j configuration file on the Client SDK server is IC_INSTALL_DIR\IC71\sdk\server\icsdk\WEB-INF\classes\log4j.xml.

If the log level of Agent/Desktop/WebClient/LogLevelServer is lower than the value in the log4j.xml file, then the LogLevelServer setting takes precedence. In other words, the setting in the log4j.xml file can never make the logging more verbose than the IC property setting. It can, however, make the logging less verbose.

Perform the following steps to check and set the value of the Avaya IC property Agent/Desktop/WebClient/LogLevelServer on the IC core.

  • In IC Manager click on the Agent tab and navigate the left tree until the agent is displayed in the main window section. Right click the agent line and choose Edit.
  • On the resulting pop-up window, scroll down the Sections list on the left and select "Agent/Desktop/WebClient". Then click on the "Properties" tab.
  • If the property LogLevelServer is not already listed, then click the "Create New Setting" icon and proceed to step 4, otherwise if the LogLevelServer property is already there, to change the log level, click the "Edit Selected Property" icon and proceed to step 5.
  • On the resulting pop-up window, select LogLevelServer from the Property pull down selection list.
  • On the resulting pop-up window, select the desired log level from the Property Value pull down selection list.
  • Click Ok on both the Properties window and on the Edit agent window.
  • In order for changes to take effect, restart the tomcat server.

To set the log level in the log4j configuration file there are two choices for how to proceed. Avaya provides several pre-configured log4j.xml files with the IC 7.1 installation. These files are named with the log level they are configured for, e.g., debug.log4j.xml has settings for the debug log level. These file are located in the IC_INSTALL_DIR\IC71\sdk\server\icsdk\WEB-INF\classes directory.

Simply copy one of these files to log4j.xml.

Alternately, open the log4j.xml file and modify log levels manually. A sample excerpt from the log4j.xml file is given below. Modify "level value =" settings as desired. For more information about log4j and its configuration see http://logging.apache.org/log4j/docs.

<!-- These are the possible log levels - debug | info | warn | error | fatal -->

<!-- SDK SERVER -->
<logger name="com.avaya.ic.sdk" additivity="false">
<level value ="info"/>
<appender-ref ref="DebugAppender"/>
<appender-ref ref="ErrorAppender"/>
</logger>
<!-- UOM -->
<logger name="com.avaya.ic.uom" additivity="false">
<level value ="info"/>
<appender-ref ref="DebugAppender"/>
<appender-ref ref="ErrorAppender"/>
</logger>
<logger name="com.avaya.ic.uom.channel" additivity="false">
<level value ="warn"/>
<appender-ref ref="DebugAppender"/>
<appender-ref ref="ErrorAppender"/>
</logger>

In order to be able to transfer a work item to another agent using that agent's login ID, make sure that the agent is set to be "addressable" in IC Manager. If you do not do this, the transfer will not succeed.

So, if it is possible to transfer a voice call using the extension number, but cannot transfer chat, email, and voice by agent login ID, check that the agent is addressable.

Perform the following steps:

  • Select the Agent tab in IC Manager
  • Right-click on the agent's row and select "edit"
  • From the "General" tab, look for the "System Information" panel in the bottom left. Click on the ellipsis button to the right of "Options"
  • This should bring up a window titled Agent System Options. Select the checkbox next to "User Addressable"
  • Press "OK" and then press "OK" on the agent edit window
  • The tomcat service hosting the SDK application must be restarted for this change to take affect.

Once this is done, it should be possible to transfer a chat, email, or voice work item by entering the agent's login ID.

Java Development

Because the Java Client SDK client code uses the log4j logging mechanism all aspects of logging can be controlled thru the log4j.xml configuration file. This file should be placed in the directory from which the client program is launched. A sample of the log4j.xml file that is used by the Avaya sample client can be found in IC_INSTALL_DIR\IC71\sdk\design\java\sample\config. Copy this file to the custom client's directory. For more information on the log4j logging mechanism see http://logging.apache.org/log4j/docs. What follows is a short discussion along with examples for manipulating the most common elements of logging: setting the log level, creating application specific loggers and causing the logs to go to a file.

Application specific loggers can be created that control custom code log statements separately from Client SDK client log statements. Simply add an entry similar to the one below to the log4j.xml file.

<!-- custom client code -->

<logger name="myclient" additivity="false">
<level value ="info"/>
<appender-ref ref="DebugAppender"/>
</logger>

Then, in the application code, open this logger like this:

import org.apache.log4j.Logger;

public static void main(String[] args) {
Logger mylogger = Logger.getLogger("myclient");
logger.debug("test log message");
}

This will produce a log message (provided that the log level is set at least to debug level) to the effect of:

2006-06-01 10:19:01,045|DEBUG|myclient|main|test log message

By convention it is common and useful to encode the class name in the log message. This can easily be done with the following technique:

<!-- custom client code -->

<logger name="com.mycompany.crm.client" additivity="false">
<level value ="info"/>
<appender-ref ref="DebugAppender"/>
</logger>

This assumes that the root path to the custom application classes is com.mycompany.crm.client. Then open the logger as follows:

public class myclass {

import org.apache.log4j.Logger;
public static void main(String[] args) {
Logger mylogger = Logger.getLogger(myclass.class.getname());
logger.debug("test log message");
}
}

Because the log4j logger uses a partial match of the logger name when choosing the logger definition, this produces:

2006-06-01 10:19:01,076|INFO |com.mycompany.crm.client.myclass|main||||test log message

The sample log4j.xml file defaults to sending Java log messages to the console. Log messages can be configured to go to a file by modifying the definition of the Appenders. The log4j.xml delivered with the sample client has the definition for writing to a file commented out. So simply comment out the definition for the console and uncomment the definition for using a file as follows:

<!--appender name="DebugAppender" class="org.apache.log4j.ConsoleAppender">

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}|%-5p|%c|%t|%m%n"/>
</layout>
</appender-->
<appender name="DebugAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/AvayaSDKSampleClientDebug.log"/>
<param name="MaxBackupIndex" value="250"/>
<param name="MaxFileSize" value="20MB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}|%-5p|%c|%t|%m%n"/>
</layout>
</appender>

An application specific Appender can be created for handling custom application log statements separately by copying the above Appender definition and changing the Appender "name" attribute and the "File" value. Then reference this Appender in the logger definition.

<appender name="myAppender" class="org.apache.log4j.RollingFileAppender">

<param name="File" value="logs/myClientDebug.log"/>
<param name="MaxBackupIndex" value="250"/>
<param name="MaxFileSize" value="20MB"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601}|%-5p|%c|%t|%m%n"/>
</layout>
</appender>
<!-- custom client code -->
<logger name="com.mycompany.crm.client" additivity="false">
<level value ="info"/>
<appender-ref ref="myAppender"/>
</logger>

To manipulate the log level, change the "value" attribute of the level tag in the logger definition. The possible values are: debug, info, warn, error, fatal.

Avaya Interaction Center SDK supports JRE 1.4.2_08, but JRE 1.5 is not supported.

The WorkItem.Release method can be called on a workItem in the initiating state. That method would put the workItem in Wrapup State. Then, the WorkItem.Complete method can be called on the WorkItem to completely finalize the contact.

Unfortunately, this feature is not supported in the SDK (nor in the thinclient).

Use workitems contactattributes container to get the queue information from the edu. Follow the steps suggested in SDK Programmers guide for configuring workitem contact attributes. Just remember to configure TSQueueStatistics server that monitors the voice queues, in order to get the queue information.

.NET Development

The .NET Client SDK client uses the log4net logger. For a more in depth discussion of log4net see http://logging.apache.org/log4net.

In order to control the custom application's logging, the log4net configuration file must be present in the directory where the .exe resides. Furthermore, the file must be named with the name of the .exe. So, if for example, the .exe is named myClient.exe, the log4net configuration file must be named myClient.exe.log4net. A sample log4net configuration file that can be copied for use can be found in the Avaya C# sample client at IC_INSTALL_DIR\IC71\sdk\design\C#\sample\bin\CSharptester.exe.log4net.

The contents and use of the log4net configuration file are similar to the log4j.xml file. The instructions given in the Java Development section for log4j are applicable for log4net as well.

The WorkItem.Release method can be called on a workItem in the initiating state. That method would put the workItem in Wrapup State. Then, the WorkItem.Complete method can be called on the WorkItem to completely finalize the contact.

Unfortunately, this feature is not supported in the SDK (nor in the thinclient).

Use workitems contactattributes container to get the queue information from the edu. Follow the steps suggested in SDK Programmers guide for configuring workitem contact attributes.

Just remember to configure TSQueueStatistics server that monitors the voice queues, in order to get the queue information.