Chat Routing Basics
From DocWiki
Contents |
Entry Point Creation
- Entry Points are configured from the Administration Console > Departments > Service > Chat > Entry Points.
- Each Entry Point is associated with a Queue and Routing Type
The javascript for this Entry Point can be found by clicking the "Show HTML" button.
A very basic way of running this javascript is to create a .html file with the below contents. This will display the Entry Point screen seen by customers.
<html>
<head>
<title> Chat Entry Point </title>
</head>
<body bgcolor="white" text="blue">
*********************************************
** INSERT JAVASCRIPT FROM "SHOW HTML" HERE **
*********************************************
</body>
</html>
Chat Entry
Customers initiate chats through a Chat Entry Point that an administrator makes available on the company website.
The WIM Application Server then inserts the activity into the eGActiveDB through a JMS Session Pool worker connection.
Standalone Routing Engine
The Agent Assignment Service handles all standalone chat routing. These are the primary logs to look at when tracing chats.
When a chat is initiated, AAS finds the longest available agent:
2011-06-01 16:10:07.097 GMT-0400 <@> INFO <@> [47:1] <@> ProcessId:3380 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.egain.live.framework.aas.processor.QueueProcessor <@> run() <@> Got the next Available Agent from Queue 1000 and Agent is Agent(1000[1(4)])(1306958989832)(1)[1000]#{21=21, 1000=1000}#[1000, 21] Agent Home is 43app) <@>
Pushes the chat to and notifies the agent:
2011-06-01 16:10:07.160 GMT-0400 <@> INFO <@> [47:1] <@> ProcessId:3380 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.egain.live.framework.aas.processor.QueueProcessor <@> publishMessage() <@> Publishing Message For Agent Agent(1000[1(4)])(1306959007144)(1)[1000]#{21=21, 1000=1000}#[1000, 21] Agent Home is 43app) <@>
And completes the assignment:
2011-06-01 16:10:07.160 GMT-0400 <@> INFO <@> [47:1] <@> ProcessId:3380 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.egain.live.framework.aas.processor.QueueProcessor <@> run() <@> AAS Assigned the Activity = Activity(1255) agent[1000] queue=1000 to agent = Agent(1000[1(4)])(1306959007144)(1)[1000]#{21=21, 1000=1000}#[1000, 21] Agent Home is 43app). Activity Created at 1306959006993. Time taken = 167 <@>
Integrated Routing Engine
Integrated Chat routing is more complicated than Standalone, but uses the same EAAS-MR PIM and CTI Server-Listener connections that are used with Email.
- The NEW_TASK is sent from EAAS to MR PIM. The activity is now queued to UCCE, waiting for the routing script to determine an available agent.
15:40:10:341 pg2A-pim2 Trace: [ 7392]Application->PG:
Message = NEW_TASK; Length = 71 bytes
DialogueID = (24) Hex 00000018
SendSeqNo = (1) Hex 00000001
MRDomainID = (5002) Hex 0000138a
PreviousTask = -1:-1:-1
PreferredAgent = Undefined
Service = (0) Hex 00000000
CiscoReserved = (0) Hex 00000000
ScriptSelector: 8100
ECC Variable Name: user.cim.activity.id
Value: 1254
- A pre-call notification is sent to CTI server signifying that an agent belonging to this Agent PG has been picked for assignment.
15:40:10:356 cg1A-ctisvr Trace: DEVICE_TARGET_PRE_CALL_IND - Instrument= RouterCallKey=149900 5005201 NetworkTargetID=0
15:40:10:356 cg1A-ctisvr Trace: SvSkTargID=-1(-1) SkGroupSkTarID=5039(541)
15:40:10:356 cg1A-ctisvr Trace: AgSkTargID=5005 ANI= CED=
15:40:10:356 cg1A-ctisvr Trace: Var1= Var2= Var3= Var4= Var5=
15:40:10:356 cg1A-ctisvr Trace: Var6= Var7= Var8= Var9= Var10=
15:40:10:356 cg1A-ctisvr SESSION 1: MsgType:AGENT_PRE_CALL_EVENT (MonitorID:0 NumNamedVariables:1 NumNamedArrays:0 ServiceNumber:N/A
15:40:10:356 cg1A-ctisvr SESSION 1: ServiceID:N/A SkillGroupNumber:541 SkillGroupID:5039 SkillGroupPriority:0 MRDID:5002
15:40:10:356 cg1A-ctisvr SESSION 1: AgentInstrument:"" RouterCallKeyDay:149900 RouterCallKeyCallID:5005201
15:40:10:356 cg1A-ctisvr SESSION 1: RouterCallKeySequenceNum:1 DialedNumber:"8100" )
- MR PIM sends the DO_THIS_WITH_TASK back to EAAS with routing instructions.
15:40:10:356 pg2A-pim2 Trace: [ 5192]PG->Application:
Message = DO_THIS_WITH_TASK; Length = 90 bytes
DialogueID = (24) Hex 00000018
SendSeqNo = (1) Hex 00000001
IcmTaskID = 149900:5005201: 1
SkillGroup = (5039) Hex 000013af
Service = Undefined
Agent = (5005) Hex 0000138d
AgentInfo: 1002
Label:
ApplicationString2:
Call Variable 1:
Call Variable 2:
Call Variable 3:
Call Variable 4:
Call Variable 5:
Call Variable 6:
Call Variable 7:
Call Variable 8:
Call Variable 9:
Call Variable 10:
ECC Variable Name: user.cim.activity.id
Value: 1254
- EAAS alerts the Listener
2011-06-01 15:40:10.464 GMT-0400 <@> INFO <@> [228539:RMI TCP Connection(11883)-10.77.30.32] <@> ProcessId:5916 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.cisco.ipcc.listener.service.ListenerInstance <@> <@> DoThisWithTask message processing in progress.isMessageForListener=trueentry_point_id = 1002 : Type = java.lang.Long
instance_id = 2000 : Type = java.lang.Long
customer_home = 43app : Type = java.lang.String
activity_sub_type = 2001 : Type = java.lang.Integer
true = true : Type = java.lang.String
do_this_with_task_type = 0 : Type = java.lang.Integer
mrd_id = 5002 : Type = java.lang.Long
cim_user_id = 1002 : Type = java.lang.Long
do_this_with_task = com.cisco.ipcc.mr.message.DoThisWithTaskMsg@138a184 : Type = com.cisco.ipcc.mr.message.DoThisWithTaskMsg
activity_id = 1254 : Type = java.lang.Long
expired_status = false : Type = java.lang.Boolean
listenerInstanceId= 2000 <@>
- The Listener offers the task to the Agent, who starts the activity shortly thereafter.
2011-06-01 15:40:10.511 GMT-0400 <@> INFO <@> [4621:pool-3-thread-2] <@> ProcessId:5916 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.cisco.ipcc.listener.OfferTaskIndHandler <@> sendOfferTaskInd <@> OFFER_TASK_IND message Bytes written to Output stream for ActivityId=1254 InstanceID=2000 <@>
2011-06-01 15:40:11.886 GMT-0400 <@> INFO <@> [228523:RMI TCP Connection(11881)-10.77.30.31] <@> ProcessId:5916 <@> PID:1 <@> UID:1002 <@> HttpSessionId: <@> com.cisco.ipcc.listener.ListenerMessageHandler <@> handleStartTaskInd <@> StartTaskIndCmd queued for processing activityId=1254 listenerInstanceId=2000 <@>
Watchdog Timer
In an integrated environment, chats cannot stay queued forever. If the chat does not get past step #1 and waits in queue for a configurable duration, the WIM Watchdog Timer will be triggered, ending the chat session immediately. The customer must start a new session and wait in queue again.
By default, the Watchdog Timer is set to 70 seconds. This can be modified by changing a properties file on the File Server.
- File Name: C:\CIM\eService\config\ipcc\egicm_configuration.properties
- Config Option: CHAT_WATCHDOG_INSEC = 70
Note that in 4.3(1), these chats were treated as "Serviced" by the System User. A patch was delivered to treat these as "Abandoned" chats.
IPTA and nIPTA for Chats
Like email, Chat also follows the same logic of IPTA and nIPTA for activity routing. In most cases, however, customers will not use nIPTA chat queues.
With email, nIPTA queues can be checked periodically, just like the Exception queue, and do not have to consistently have agents logged in and actively handling activities. But chat is a real-time activity, which means customers would need to always have a group of separate nIPTA agents available for handling nIPTA chats that have failed IPTA routing. This is not efficient.



