簡介
本文描述企業版聊天與電子郵件(ECE)如何在客戶端發起聊天會話時識別代理可用性狀態。
必要條件
需求
思科建議您瞭解以下主題:
- 企業版聊天與電子郵件
- Web瀏覽器開發工具
- 整合智慧客服管理企業版
採用元件
本檔案中的資訊是根據軟體版本ECE 11.6。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。
功能概述
為了使Cisco Unified Intelligent Contact Management Enterprise(ICM)能夠管理座席活動和正確路由任務,ICM必須監控登入到ICM的所有座席。應用程式例項(如ECE)通過擴展的ICM CTI/ARM(代理報告和管理)介面報告代理活動和代理狀態。
ARM服務構建在當前CTI伺服器功能之上,並允許客戶端應用程式監控應用程式代理和任務活動。ARM介面允許客戶端應用程式監控與應用程式關聯的一組指定代理(工作站模式)或所有代理(網橋模式)。
該圖顯示了ARM介面的更多詳細資訊。 應用程式例項使用ARM介面管理一個或多個代理PG上的代理(將它們登入和退出介質等),並報告其任務活動(啟動任務、結束任務等)。
代理登入流
代理可用性是從CTI伺服器端確定的。當代理登入到代理控制檯時,ECE偵聽器進程將請求傳送到CTI伺服器。請求表明座席已登入並標籤為可用。
以下是ECE應用程式傳送到CTI伺服器的指示符:
每當代理登入時,監聽程式都會傳送MEDIA_LOGIN_REQ。MEDIA_LOGIN_REQ將指定的代理記錄到媒體路由域(MRD)中(將代理記錄到為該MRD和代理配置的所有技能中)。 當代理將自己標籤為可用時,監聽程式確實會再傳送兩個請求,指示代理為ROUTABLE或NOT ROUTABLE和READY或NOT READY ,並提供客戶端定義的代理資訊。CTI客戶端必須在Open Request消息中指定相關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。
Make Agent Routable Indication向ICM告知指定的代理已設定為指定MRD的可路由模式。
附註:在等待Make Agent Not Routable響應並取消待定的Make Agent Not Routable請求時,可以傳送Make Agent Routable指示消息。
一旦監聽程式從應用伺服器收到Make Agent Ready 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:ConcurrentTaskLimit
RA - R可路由(如果已設定),A表示路由器認為該代理可用於此域中的新工作
注意:在ICM 11.5、11.6和12.0中,您可以觸及CSCvq11852 Chat缺陷,即使座席可以使用電子郵件,也不會將電子郵件分配給座席。在這種情況下,您確實會在rttest輸出[na-0:2,RD]中看到,其中D表示域不可用(如應用路徑所報告)。
除此之外,還可以通過OPCtest和Agent PG procmon實用程式檢查代理狀態。
示例:
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是座席PeripheralNumber。
聊天入口點中的可用性要求
在聊天初始化中,您的客戶可以看到消息「感謝您的查詢。我們的服務時間是太平洋標準時間週一至週五上午9點至下午5點。」 即使座席處於聊天的「就緒」狀態,也會出現此類消息。為了確定代理可用性,當客戶端運行入口點URL時,系統傳送API呼叫。API請求通過ECE Web伺服器到ECE應用伺服器。可用性取決於在應用程式伺服器上建立的會話。
在ECE 11.6中,「可用性要求」將檢視MRD可用性,如果MRD中有任何可用座席,則聊天功能可用。此處的問題是,如果您的CHAT MRD中有2個SG,那麼如果其中一個SG中有一個可用座席,您的MRD將變為活動狀態,並且會提供CHAT。此問題在ECE 12.0及更新版本中已解決。通過在配置中使用SG執行增強。在這種情況下,系統還會計算標籤為可用於特定MRD的座席的技能組。
API請求:
http://<ECE_WEB_Server_IP>/system/egin/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高,建議不要長時間保留該級別。