Jump to: navigation, search

Expert Contact

The expert contact service is the IExpertService interface defined in thecom.genesyslab.ail.ws.expert namespace. It covers the management of expert contact features.


The Expert Contact service supports features for an application that lets expert users, who are not part of an enterprise’s Contact Center, provide their expertise to Contact Center agents or customers.
This section defines what an expert, an expert contact application, and the expert service are.

What is an Expert?

Contact Center agents, in the course of responding to customers, sometimes need information beyond their training and benefit from contacting with people with special expertise.
But typically, such experts are not part of the Contact Center CTI infrastructure: their telephones connect to a switch that does not have a T-Server and Framework support. In such cases, experts’ interactions with Contact Center agents (or their customers) are not tracked, and neither the agents nor the experts can benefit from information the Genesys Solutions can provide.

What is an Expert Contact Application?

In a site without a CTI link, the expert receives phone calls directly from a public network without involvement of any Genesys platform components. Therefore such calls are not automatically monitored or controlled. For example, there is no way to detect the state of the expert's telephone (Ready, OnCall, and so on).
The purpose of an Expert Contact application is to provide a means for an expert to reflect call state and perhaps to present information from the Genesys Framework components to the expert. But there is no T-Server for the switch for the expert’s telephone.
A Genesys CTI-Less T-Server works without monitoring a switch yet provides a connection to the expert’s desktop application and to a T-Server in the Contact Center. A CTI-Less T-Server provides a virtual CTI environment to track the expert’s telephone states, send messages to other Genesys server components, handle data for current interactions, and coordinate voice and data delivery to the expert’s desktop application.
In the case that an expert receives a call transferred from a Genesys supported contact center, the Genesys platform components communicate with the CTI-Less T-Server, which signals the expert’s desktop application of an incoming phone call. The application presents an indication to the expert, who may choose to accept or reject the phone call.
If the expert accepts the phone call, the desktop application can present available information, including contact history if there is a connection to a Genesys Contact Server.
As the phone call progresses, the expert must use the application to reflect progress. The application passes the expert's activity to the CTI-Less T-Server, which in turn passes the data to the Contact Center Framework components.
The application must be able to process events from the CTI-Less T-Server.

What Is the Expert Contact Service?

The expert contact service interfaces with expert contexts (or expert contact data). Expert contexts are associated with voice interactions and pass expert activities on these interactions.


Your application can use the expert contact service to:

  • Access the expert context associated with a call—that is, a voice interaction.
  • Pass expert activity:
    • Specify whether the expert is on call.
    • Update the expert status on a call.
    • Manage preview requests for outbound campaigns.
  • Re-route calls.
Required Services

Your application cannot use the expert contact service independently from the following services:

  • The agent service:
    • Before dialing calls, your application first must use the agent service to log in an agent on a CTI-Less DN. See also The Agent Service.
  • The voice interaction service:
    • While the agent is logged on a CTI-Less DN, your application can use the IInteractionVoiceService interface to pass the expert's activity. See also Voice Interactions.
  • The interaction service:
    • To access the attributes of your voice interactions, your application uses the IInteractionService DTO methods.
    • All the voice interaction attributes are published in events of type InteractionEvent. This type is described in the IInteractionService interface.
    • For further information, see the Interaction Service.
  • The event service—This service is required to receive agent, voice, and expert events.
    See also the Event Service.

An Expert Contact desktop application built on the Web Services must connect via the GIS to the CTI-Less T-Server and also a Configuration Layer that has information about the CTI-Less T-Server, person information for the expert, and so on.

See the Genesys Expert Contact Solution 7.6 Deployment Guide for instructions on how to configure an Genesys Expert Contact application in Configuration Layer.

Expert Contact Essentials

Your agent application uses the expert contact service to manage expert contact information as an expert context attached to a voice interaction.
When an expert contact application creates or gets a voice interaction, it uses the expert contact service to get the associated expert context and manage particular expert actions. The voice interaction management does not differ from the management described in Voice Interactions. The particularity is that actions on voice interactions are passing expert agent actions to the CTI-Less T-Server.
The expert context of a voice interaction includes the expert context status and possible expert actions. Your expert application concurrently uses the voice interaction service and the expert contact service to pass his or her activity.
The following example shows how to integrate the expert contact service to handle expert contexts.

Expert Contact Service Integration Example
  1. Subscribing to TopicsEvent for integrated services, including the expert and interaction services.
  2. Requesting an agent login with the agent service login action.
  3. Creating a voice interaction to pass a new dialed call.
  4. Receiving an expert event for a new expert context, and an interaction event for the created interaction.
  5. Managing both the expert context and the voice interaction.
  6. Receiving expert and interaction events due to 5.

This diagram shows the general expert contact service handling in an application that lets an expert pass the creation of a new call. The IExpertService interface exposes methods and pertinent attributes that your application uses to manage the expert context of voice interactions, such as re-routing a call or updating the expert context status.
The IInteractionVoiceService interface passes the expert actions restricted to voice interaction management, such as for example, answering a call, releasing a call, and marking a call as done.
For any particular state of an expert context, the expert contact service permits the use of only a small subset of its possible actions (available to your application as method calls).
Actions of the voice interaction and expert contact services may modify these states. The event service receives both InteractionEvent and ExpertEvent events that carry identifiers, along with a variety of attributes reflecting new state and other data. To receive those events, your application must subscribe to them.
For each ExpertEvent event, as well as for InteractionEvent events, your application should test various attributes of the IExpertService interface.
The following sections present the details behind the above general description of the expert contact service. For voice management, see Voice Interactions.

Expert Context Attributes

The expert domain defines the expert context of a voice interaction. The following list is representative (but not exhaustive):

  • interactionId—The voice interaction associated with this expert context.
  • customerNumber—The customer number.
  • status—The status of this expert context.
  • reason—The reason for the status of this expert context.

An expert context does not exist independently from a voice interaction. Therefore, your application requires an interaction ID to access context attribute values.
Your application can read the attributes of this domain with the IExpertService.getExpertContextDTO() method. This method retrieves an ExpertContextDTO object that contains the context associated with a voice interaction.

If no expert context exists for a voice interaction ID, your application gets a error.expert.ExpertContextNotFound exception. Your application can use it to determine whether it handles a voice interaction for an expert or not.

The ExpertContextDTO class associates an interaction ID with a key-value list of expert attributes. For further information, see DTOs Handling.

Expert Context Actions

The ExpertContextAction enumeration defines expert actions on voice interactions and expert contexts. Constants each correspond to one IExpertService method. For example, the REJECT constant corresponds to the IExpertService.reject() method.
When using these actions, your application can modify the expert context and data of a voice interaction (depending on the action). For further details, Using Expert Contact Features.
To determine which expert actions are possible at a certain point in time, read the expert:actionsPossible attribute of the IExpertService interface.
When changes occur on possible actions, this attribute can be published in an ExpertEvent event, depending on your subscription to the event service. See Expert Events below.

Expert Context Status

The ExpertContextStatus enumeration lists the possible statuses for an expert context. Since the expert phone is CTI-Less, the purpose of this status is to identify and tracks the expert context progress. For example, when the expert context status is ExpertContextStatus.PREVIEW, the expert previews the call; when the status is ExpertContextStatus.IN_PROGRESS, the expert processes the call; and so on.
The ExpertContextStatus.STATUS_REQUEST value corresponds to the status request feature. This status indicates that the expert must update his or her status at the CTI-Less T-Server’s request. See section Managing Status Request for further details.
To determine what the expert contact status is at a certain point in time, read the expert:status attribute of the IExpertService interface. When changes occur on the expert context status, this attribute can be published in an ExpertEvent event, depending on your subscription to the event service. See Expert Events below.

Expert Events

When changes occur on an expert context, the event service of your expert application can receive ExpertEvent events. This occurs, for instance, when possible actions or expert context status change. Use expert events to update your expert application.
ExpertEvent events can propagate any published attribute, that is, attributes of the expert domain that have the event property. To properly take into account expert events, the published expert:eventReason attribute value indicates the reason for an event. The ExpertContextReason enumeration lists the possible reasons for an occurring ExpertEvent event. Refer to the Agent Interaction SDK 7.6 Services API Reference for further details.
The following code snippet subscribes to both ExpertEvent and InteractionEvent.

/// Defining two TopicsService
TopicsService[] myTopicsServices = new TopicsService[2] ;
/// Defining a Topic Service for the callback service
myTopicsServices[0] = new TopicsService() ;
myTopicsServices[0].serviceName = "ExpertService" ;
/// Defining a topic event
myTopicsServices[0].topicsEvents = new TopicsEvent[1] ;
myTopicsServices[0].topicsEvents[0] = new TopicsEvent() ;
/// The targeted events are ExpertEvent
myTopicsServices[0].topicsEvents[0].eventName = "ExpertEvent" ;
/// All the event attributes values are propagated in Event objects
myTopicsServices[0].topicsEvents[0].attributes = new String[]{"expert:*"};
/// Triggering ExpertEvent for agent0
myTopicsServices[0].topicsEvents[0].triggers = new Topic[1];
myTopicsServices[0].topicsEvents[0].triggers[0] = new Topic();
myTopicsServices[0].topicsEvents[0].triggers[0].key = "AGENT";
myTopicsServices[0].topicsEvents[0].triggers[0].value = "agent0";
/// Defining a Topic Service for the interaction service
myTopicsServices[1] = new TopicsService() ;
myTopicsServices[1].serviceName = "InteractionService" ;
myTopicsServices[1].topicsEvents = new TopicsEvent[1] ;
myTopicsServices[1].topicsEvents[0] = new TopicsEvent() ;
/// The targeted events are InteractionEvent
myTopicsServices[1].topicsEvents[0].eventName = "InteractionEvent" ;
/// In case of a voice interaction, the interaction, and /// voice interaction attributes values are propagated in the
/// Event object
myTopicsServices[1].topicsEvents[0].attributes = new String[]{ "interaction:*", "interaction.voice:*"};
/// Triggering CallbackRecordEvent for agent0
myTopicsServices[1].topicsEvents[0].triggers = new Topic[1];
myTopicsServices[1].topicsEvents[0].triggers[0] = new Topic();
myTopicsServices[1].topicsEvents[0].triggers[0].key = "AGENT";
myTopicsServices[1].topicsEvents[0].triggers[0].value = "agent0";

For further information about events, see The Event Service.

Using Expert Contact Features

The following table presents actions of the expert contact service which provides your application with management of expert features.

Expert Context Actions and Methods


IExpertService Method




Creates an interaction and the associated expert context.



Accept to process a preview call.



Reject a callback record



Confirms the expert context status.



Confirms that the expert is not handling an interaction anymore.



Reroutes an interaction.

The following subsections detail the actions presented above. It also introduces the Easy New Call and Auto Mark Done features that depend on your configuration settings.

Managing On Call

The expert can receive direct calls on his or her CTI-Less phone. The expert has to notify these calls to the CTI-Less T-Server. To notify the call, the expert application calls the IExpertService.onCall() method as shown in the following code snippet:

// Passing the ID of a CTI-Less DN in argument

The onCall() method sends a message to the CTI-less T-Server to send a new interaction to the specified CTI-Less DN. It also creates an expert context for the voice interaction. Your application receives InteractionEvent and ExpertEvent events.
Then, the expert uses the voice interaction to notify his or her actions on the call. For instance, when the expert answers manually the call, he uses your application to perform an ANSWER_CALL action on the voice interaction.
To pass the expert voice-specific activity, see Voice Interactions.

Managing Preview Calls

The CTI-Less T-Server can send a call to the expert. In this case, your application gets a new interaction and a context for the preview call. It receives an InteractionEvent event and an ExpertEvent event. The InteractionEvent event propagates the NEW interaction status and the ExpertEvent event propagates the ExpertStatus.PREVIEW context status. This happens for example when an expert participates in an outbound campaign.
The expert can either accept or reject the call. Use the accept() and reject() method of the IExpertService interface in this purpose.
In the following code snippet, the expert application accepts to process the call.


A call to the accept() method sends the call on the expert phone. Then, the expert uses the voice interaction to notify his or her actions on the call. To pass the expert voice-specific activity, see Voice Interactions.

Managing Status Request

Your application can receive status requests from the CTI-Less T-Server. In this case, your application gets an ExpertEvent event propagating the ExpertStatus.STATUS_REQUEST of the expert context associated with a voice interaction. This periodically happens when the CTI-Less T-Server requests the expert to notify his or her voice interaction’s status.
The expert can choose between the ExpertContextAction.CONFIRM_STATUS or ExpertContextAction.REJECT_STATUS actions.
A call to the IExpertService.confirmStatus() method indicates the expert is still on call. A call to the IExpertService.rejectStatus() method indicates that the expert has terminated the call.
In the following code snippet, the expert application notifies that the expert no longer processes the call.

When the expert makes an ExpertContextAction.REJECT_STATUS action, the voice interaction is automatically released.

Managing Re-Route

Depending on your configuration settings, the expert is able to re-route calls. See the Interaction SDK 7.6 GIS Deployment Guide for further details.
If you properly set kworker routing options, your application can use the IExpertService.reroute() method to notify the CTI-Less T-Server of the voice interaction re-routing.

Easy New Call and Auto Mark Done

When the expert makes a phone call, he or she first creates, then dials a voice interaction on his or her CTI-Less DN using your expert application. Your application processes the voice interaction creation as for a standard one.
Depending on your configuration settings, your application can benefit from the Easy New Call feature. This feature changes the voice interaction status to TALKING at interaction creation on CTI-Less DNs. The interaction creation is less time-consuming for the expert.
To activate the Easy New Call feature, set the easy-newcall option to true. See the Interaction SDK 7.6 GIS Deployment Guide for further details.
When the expert hangs up a call, he or she should release and mark the voice interaction as done. Depending on your configuration settings, your application can benefit from the Auto Mark Done feature. This feature automatically marks as done released interactions for CTI-Less DNs.
To activate the Auto Mark Done feature, set the auto-markdone option to true. See the Interaction SDK 7.6 GIS Deployment Guide for further details.

This page was last edited on October 2, 2019, at 13:09.
blog comments powered by Disqus