简介
本文档介绍当客户端发起聊天会话时,企业聊天和电子邮件(ECE)如何识别座席可用性状态。
先决条件
要求
Cisco 建议您了解以下主题:
- 企业聊天和邮件
- Web浏览器开发人员工具
- Unified Intelligent Contact Management Enterprise
使用的组件
本文档中的信息基于软件版本ECE 11.6。
本文档中的信息是从特定实验环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。
功能概述
为了使Cisco Unified Intelligent Contact Management Enterprise(ICM)管理座席活动并正确路由任务,ICM必须监控登录ICM的所有座席。应用实例(如ECE)通过扩展的ICM CTI/ARM(座席报告和管理)界面报告座席活动和座席状态。
ARM服务基于当前CTI服务器功能构建,允许客户端应用监控应用代理和任务活动。ARM接口允许客户端应用程序监控与应用程序关联的指定组代理(工作站模式)或所有代理(网桥模式)。
图中显示了ARM接口的更多详细信息。 应用程序实例使用ARM界面管理一个或多个代理程序(将其登录或注销介质等)上的代理,并报告其任务活动(开始任务、结束任务等)。
代理登录流
从CTI服务器端确定代理可用性。当座席登录到座席控制台时,ECE侦听程序进程将请求发送到CTI服务器。该请求表示座席已登录并标记为可用。
以下是ECE应用发送到CTI服务器的指示:
每当代理登录时,侦听程序都会发送MEDIA_LOGIN_REQ。MEDIA_LOGIN_REQ将指定的代理记录到媒体路由域(MRD)中(将代理记录到为该MRD和代理配置的所有技能中)。 当代理将自己标记为可用时,侦听程序会再发送两个请求,这些请求表示代理是可路由的或不可路由的,以及就绪或未就绪,并提供客户端定义的代理信息。CTI客户端必须在“打开请求”消息中为相关MRD外围设备对指定应用路径,否则登录被拒绝。要成功登录,还必须将座席配置为至少属于一个属于指定MRD的技能组(SG)。
该图显示登录请求的消息流图:
具有INFO跟踪级别的侦听程序日志:
2019-07-20 18:27:31.749 GMT+0000 <@> INFO <@> [14285:listener-event-pool-priority-arm-request-executor::-0] <@> ProcessId:4584
<@> PID:1 <@> UID:1005 <@> HttpSessionId:IrltMMd3T0prrkbhAwK8wkL5 <@> com.ipcc.listener.arm.ARMLogger <@>
<@> Sending MEDIA_LOGIN_REQ -> 0 0 0 27 0 0 0 -105 0 2 8 1 0 0 19 -120 0 0 19 -87 0 0 0 0 0 0 0 1 107 5 49 48 48 53 0 <@>
2019-07-20 18:27:32.037 GMT+0000 <@> INFO <@> [71:Thread-9] <@> ProcessId:4584 <@> PID:1 <@> UID:12 <@> HttpSessionId:
<@> com.ipcc.listener.arm.ARMLogger <@> <@> Received MEDIA_LOGIN_RESP -> 0 0 0 8 0 0 0 -104 0 2 8 1 0 0 0 0 <@>
具有默认跟踪级别的CTIsvr日志:
20:27:32:466 cg1A-ctisvr Trace: ProcessMediaLoginReq - sessionID 4
20:27:32:466 cg1A-ctisvr Trace: SendARMMsg -- InvokeID = 591309094, MRDID = 5000, ICMAgentID = 5033, AgentMode = 0
IsAvailable = 0, MaxTaskLimit = 1, AgentInfo = 1005, ApplicationPathID = 5001, PeripheralID = 0, AgentID =
20:27:32:607 cg1A-ctisvr Trace: ProcessARMMediaLoginRespMsg -- InvokeID = 591309094, Status = 0, AgentSkillTargetID = 5033
状态0表示未从CTI服务器端发生错误。
代理可用性流
如果座席与聊天SG关联,并且此SG与聊天入口点中的ECE队列关联,当座席标记自己可用时,您确实会看到2个请求,即MAKE_AGENT_ROUTABLE_IND和MAKE_AGENT_READY_IND。
使代理可路由指示告知ICM指定的代理已设置为指定MRD的可路由模式。
注意:在等待Make Agent Not Routable响应并取消挂起的Make Agent Not Routable请求时,可以发送Make Agent Routable Indication消息。
一旦侦听程序从应用服务器接收到“使代理就绪指示”请求,侦听程序将请求转发到CTI服务器,此时该代理被视为可用于ECE。在这种情况下,如果同时启动聊天,则系统允许启动并创建该聊天的聊天活动。
如果启用了INFO跟踪,监听程序日志将显示这些请求:
2019-08-19 13:34:09.773 GMT+0000 <@> INFO <@> [8938:listener-event-pool-priority-arm-request-executor::-441] <@> ProcessId:5436 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.ipcc.listener.AgentAvailabilityStatusHandler <@> <@> AgentAvailabilityStatusHandler:agentIsAvailable() MAKE_AGENT_ROUTABLE_IND to ARM armLoginDataArraySize= ARMAgentData ==================================================================
2019-08-19 13:34:09.773 GMT+0000 <@> INFO <@> [8938:listener-event-pool-priority-arm-request-executor::-441] <@> ProcessId:5436 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.ipcc.listener.arm.ARMLogger <@> <@> Sending MAKE_AGENT_ROUTABLE_IND -> 0 0 0 16 0 0 0 -102 0 1 57 43 0 0 19 -120 0 0 25 20 0 0 0 2 <@>
2019-08-19 13:34:09.774 GMT+0000 <@> INFO <@> [8938:listener-event-pool-priority-arm-request-executor::-441] <@> ProcessId:5436 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.ipcc.listener.arm.ARMLogger <@> <@> Sending MAKE_AGENT_READY_IND -> 0 0 0 14 0 0 0 -99 0 1 57 44 0 0 19 -120 0 0 25 20 0 1 <@>
2019-08-19 13:34:09.774 GMT+0000 <@> INFO <@> [8938:listener-event-pool-priority-arm-request-executor::-441] <@> ProcessId:5436 <@> PID:1 <@> UID:12 <@> HttpSessionId: <@> com.ipcc.listener.AgentAvailabilityStatusHandler <@> <@> PRINT_STATE after sending MAKE_AGENT_READY_IND to ARM:
CTI服务器和OPC的输出处理日志:
### CTI Server
15:34:09:841 cg1A-ctisvr Trace: ProcessMakeAgentRoutableInd - sessionID 6
15:34:09:841 cg1A-ctisvr Trace: SendARMMsg -- InvokeID = 80171, MRDID = 5000, ICMAgentID = 6420, MaxTasks = 2, SessionID = 6
15:34:09:841 cg1A-ctisvr Trace: ProcessMakeAgentReadyInd - sessionID 6
15:34:09:841 cg1A-ctisvr Trace: SendARMMsg -- InvokeID = 80172, MRDID = 5000, ICMAgentID = 6420, MakeRoutable = 1, SessionID = 6
### OPC
15:34:09:841 PG1A-opc Trace: MakeAgentRoutableInd - InvokeID = 80171, MRDID = 5000, ICMAgentID = 6420, MaxTasks = 2, SessionID = 6
15:34:09:841 PG1A-opc Trace: MakeAgentReadyInd - InvokeID = 80172, MRDID = 5000, ICMAgentID = 6420, MakeRoutable = 1, SessionID = 6
因此,OPC进程从AS_NOT_READY状态删除代理,并进入AS_NOT_ACTIVE状态。NewState=AS_NOT_ACTIVE实际上是聊天/电子邮件的就绪状态。
15:34:09:841 PG1A-opc Trace: SetAgentState: ASTID=6420 Periph#=15003 MRDomainID=5000 SGSTID=6928 SG#=70518(0x11376) OldState=AS_NOT_READY NewState=AS_NOT_ACTIVE Duration=0 CurLine=-1 ReasonCode=0 AgentObj=0x44535b8
此时,从路由器角度看,代理是可路由的,可用。检查此情况的最佳方法是使用rttest实用程序:
rttest: agent_status /agent 6420
### 6520 is ICMAgtID
Agent CUCM.Agent_test (6420, periph# 15003)
domain: Cisco_Voice (1), state = [nr-0:1,R], 411 secs
CL nr TEST_SG (6274, periph# 70520)
L nr CUCM_PIM1.Cisco_Voice.defa.88025 (5000, periph# 31858)
domain: ECE_Chat (5000), state = [na-0:2,RA], 383 secs
CL na TEST_Chat (6928, periph# 70518)
L na CUCM.ECE_Chat.default.11006 (6909, periph# 54839)
na — 非活动
0:2 - AciteTasks:ConcurentTaskLimit
RA - R可路由(如果已设置),表示路由器认为代理可用于此域中的新工作
警告:在ICM 11.5、11.6和12.0中,您可以按缺陷CSCvq11852聊天和电子邮件未分配给座席,即使座席可用。在此类情况下,您确实会在rttest输出[na-0:2,RD]中看到,其中D表示域不可用(如应用路径报告)。
除此之外,您还可以从OPCtest和Agent PG进程监控实用程序检查代理状态。
示例:
opctest /cust <inst> /node PG1A
opctest: dump_agent 5000 15003
C:\icm\pcc12\ra\logfiles>procmon <inst> PG1A pim1
11:38:40 Trace: EMT Creating Mutex Global\IMTConnect_DisconnectLock
>>>>dagent 15003
其中5000是创建代理的外围设备ID,15003是代理外围设备编号。
聊天入口点中的可用性要求
在聊天初始化中,您的客户可以看到消息“感谢您的询问”。我们的服务时间是太平洋标准时间上午9点到下午5点,周一到周五。” 即使座席处于“就绪”状态进行聊天,也会显示此类消息。为了确定代理可用性,当客户端运行入口点URL时,系统会发送API调用。API请求通过ECE Web服务器到ECE应用服务器。此可用性由在应用服务器上创建的会话确定。
在ECE 11.6中,可用性要求查看MRD可用性,如果MRD中有任何可用的座席,则聊天功能可用。这里的问题是,如果您在聊天MRD中有2个SG,则如果其中一个SG中有可用的座席,则您的MRD将变为活动状态并提供聊天。此问题在ECE 12.0及更高版本中已解决。增强功能是在配置中使用SG完成的。在这种情况下,系统还会计算为特定MRD可用的座席的技能组。
API请求:
http://<ECE_WEB_Server_IP>/system/egain/chat/entrypoint/initialize/1001
其中1001是入口点ID。
API响应:
{"checkEligibility":{"responseType":0},"maskingPatterns":{"maskingPattern":[]},"isVideoChatLicensed":false,"isVideoChatEnabled":false,"videoChatMaxEscalation":5,"isDirectAudioChatEnabled":true,"isChatAttachmentEnabled":false,"maxChatAttachmentSize":3,"isBlackListType":false,"isOffRecordEnabled":false,"htmlTagMatcherRegEx":"((?:[\\r\\n|\\n]*(?:<[^>]*>)*[\\r\\n|\\n]*)*)","htmlTagMatcherIncr":1,"isOneTagOff":true}
系统定义代理可用的方式有两个选项。座席可用于聊天,或者存在允许执行此操作的队列深度。队列深度配置允许在所有座席都忙时可以排队的客户数。
在API响应中,请注意checkEligibility:responseType值。它表示当时的座席可用性。
- 如果它为0,则表示座席可以进行聊天,或者队列深度未达。
- 如果是1,则表示没有可用的座席。
- 2表示已达到最大队列深度。
注意:此处没有选项可查看特定时间有多少个座席可用。
如果代理可用,则Web浏览器将接收其他.js文件。因此,客户端确实会看到初始页面,其中包含入口点的登录名称和主题参数。
日志收集
API响应可从客户端(从Web浏览器网络跟踪)或从ECE应用服务器提供,调试或跟踪级别不建议长期保留,因为使用了高IO。