目錄

簡介

必要條件

需求

採用元件

功能概述

代理登入流

代理可用性流

聊天入口點中的可用性要求

日誌收集

簡介

本文描述企業版聊天與電子郵件(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高，建議不要長時間保留該級別。