Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Visão geral funcional

Fluxo de logon do agente

Fluxo de disponibilidade do agente

Disponibilidade necessária no ponto de entrada do bate-papo

Coleta de logs

Introduction

Este documento descreve como o Enterprise Chat e o Email(ECE) identificam o status de disponibilidade do agente quando os clientes iniciam sessões de bate-papo.

Prerequisites

Requirements

A Cisco recomenda que você tenha conhecimento destes tópicos:

- Enterprise Chat and Email

- Ferramentas para desenvolvedores de navegadores da Web

- Unified Intelligent Contact Management Enterprise

Componentes Utilizados

As informações neste documento são baseadas na versão de software ECE 11.6.

As informações neste documento foram criadas a partir dos dispositivos em um ambiente de laboratório específico. All of the devices used in this document started with a cleared (default) configuration.

Visão geral funcional

Para que o Cisco Unified Intelligent Contact Management Enterprise(ICM) gerencie as atividades do agente e roteie corretamente as tarefas, o ICM deve monitorar todos os agentes conectados ao ICM. As instâncias do aplicativo, como o ECE, relatam as atividades do agente e o status do agente por meio da interface CTI/ARM (Relatório e Gerenciamento do Agente) estendida do ICM.

O serviço ARM baseia-se na funcionalidade atual do servidor CTI e permite que um aplicativo cliente monitore agentes de aplicativos e atividades de tarefas. A Interface ARM permite que um aplicativo cliente monitore um conjunto especificado de agentes (modo de estação de trabalho) ou todos os agentes (modo bridge) associados a um aplicativo.

A imagem mostra mais detalhes das interfaces ARM.  Uma instância de aplicativo usa a interface ARM para gerenciar agentes em um ou mais PGs do agente (conectá-los e sair da mídia, etc.) e para gerar relatórios sobre suas atividades de tarefa (Iniciar Tarefa, Terminar Tarefa, etc.).

Fluxo de logon do agente

A disponibilidade do agente é identificada do lado do servidor CTI. Quando um agente faz logon no console do agente, o processo de Escuta ECE envia a solicitação ao Servidor CTI. A solicitação indica que o agente está conectado e se marcou como disponível.

Estes são os indicadores que são enviados pelo aplicativo ECE ao servidor CTI:

Sempre que um agente estiver conectado, um ouvinte enviará um MEDIA_LOGIN_REQ. O MEDIA_LOGIN_REQ registra o agente especificado em um Domínio de Rota de Mídia (MRD) (registra o agente em todas as habilidades configuradas para esse MRD e agente). Quando um agente se marca como disponível, o ouvinte envia mais duas solicitações que indicam que o agente é ROTEÁVEL ou NÃO ROTEÁVEL e PRONTO ou NÃO PRONTO e fornece informações de agente definidas pelo cliente. O cliente CTI deve ter especificado o caminho do aplicativo para o par de periféricos MRD relacionados na mensagem de solicitação aberta ou o login é rejeitado. Para que o logon seja bem-sucedido, o agente também deve ser configurado para pertencer a pelo menos um Grupo de Habilidades (SG) pertencente ao MRD indicado.

A imagem mostra o diagrama de fluxo de mensagens para solicitação de login:

Log do ouvinte com nível de rastreamento 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   <@>

Log CTIsvr com o nível de rastreamento padrão:

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

Status 0 significa que nenhum erro ocorreu do lado do servidor CTI.

Fluxo de disponibilidade do agente

Se o agente estiver associado ao bate-papo SG e esse SG estiver associado à fila ECE no ponto de Entrada de Bate-papo, quando o agente se marcar disponível, você verá 2 solicitações, MAKE_AGENT_ROUTABLE_IND e MAKE_AGENT_READY_IND.

Fazer com que a indicação roteável do agente diga ao ICM que o agente especificado foi definido para um modo ROUTABLE para o MRD especificado.

Note: A mensagem Make Agent Routable Indication (Fazer indicação de roteamento do agente) pode ser enviada enquanto espera por uma resposta Make Agent Not Routable e cancela a solicitação Make Agent Not Routable pendente.

Depois que a solicitação Make Agent Ready Indication é recebida pelo ouvinte do servidor de aplicativos, o ouvinte encaminha a solicitação ao servidor CTI e, nesse momento, o agente considerou-a disponível para ECE. Nesse caso, se o bate-papo for iniciado ao mesmo tempo, o sistema permitirá iniciar e criará a atividade de bate-papo para esse bate-papo.

O log do ouvinte mostra essas solicitações se o rastreamento INFO estiver ativado:

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:

A saída dos registros de processos do servidor CTI e 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

Como resultado, o processo OPC remove o agente do estado AS_NOT_READY e coloca no estado AS_NOT_ATIVE. NewState=AS_NOT_ATIVE é, na verdade, o estado Pronto para Bate-papo/E-mail.

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

Neste momento, o agente está Roteável e Disponível da perspectiva do Roteador. A melhor maneira de verificar isso é usar o utilitário 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 - Inativo

0:2 - TarefasAtivas:LimiteTarefaSimultâneo

RA - R é roteável (se definido), A indica que o roteador considera o agente disponível para novos trabalhos neste domínio

Caution: No ICM 11.5, 11.6 e 12.0 você pode pressionar o defeito CSCvq11852 Chat e os emails não são atribuídos aos agentes, mesmo que estejam disponíveis. Nesses cenários, você vê na saída rttest [na-0:2,RD], onde D significa domínio indisponível (conforme relatado pelo caminho do aplicativo).

Além disso, você pode verificar o estado do agente em OPCtest e nos utilitários de procmon PG do agente.

Examples:

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

Onde 5000 é a ID do Periférico onde o agente é criado e 15003 é o PeripheralNumber do agente.

Disponibilidade necessária no ponto de entrada do bate-papo

Em inicializações de bate-papo, seus clientes podem ver a mensagem "Obrigado por sua pergunta. Nosso horário de atendimento é de 9h às 17h (horário do Pacífico), de segunda a sexta." Essa mensagem pode ser exibida mesmo quando há um agente no estado Pronto para um bate-papo. Para identificar a disponibilidade do agente, o sistema envia a chamada da API quando os clientes executam o URL do ponto de entrada. A solicitação de API passa pelo servidor Web ECE para o servidor de aplicativos ECE. Essa disponibilidade é determinada pelas sessões criadas no servidor de aplicativos.

No ECE 11.6, o requisito de disponibilidade examina a disponibilidade do MRD e, se houver algum agente disponível no MRD, o bate-papo está disponível. O problema aqui é que se você tem 2 SG no CHAT MRD, então se houver um agente disponível em um dos SG, seu MRD se torna ativo e o CHAT é oferecido. Esse problema é resolvido no ECE 12.0 e versões posteriores. A melhoria foi feita pelo uso do SG na configuração. Nesse caso, o sistema também conta os Grupos de Habilidades para agentes que se marcam disponíveis para o MRD específico.

Solicitação de API:

http://<ECE_WEB_Server_IP>/system/egain/chat/entrypoint/initialize/1001

onde 1001 é o ID do ponto de entrada.

Resposta da 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}

Há duas opções de como o sistema define que o agente está disponível. O agente está disponível para um bate-papo ou há uma Profundidade da fila que permite fazer isso. A configuração de profundidade da fila permite o número de clientes que podem ser enfileirados quando todos os agentes estão ocupados.

Na resposta da API, preste atenção na verificaçãoQualificação: valor responseType. Indica a disponibilidade de um agente no momento.

- Se ele vier como 0, significa que há um agente disponível para fazer o bate-papo ou que a profundidade da fila não foi atingida.

- Se for 1, indica que não há agentes disponíveis.

- 2 significa que a profundidade máxima da fila foi atingida.

Note: Não há opções aqui para ver quantos agentes estão disponíveis no momento específico.

Se um agente estiver disponível, os outros arquivos .js serão recebidos pelo navegador da Web. Como resultado, um cliente vê a página inicial com o nome de logon e os parâmetros de assunto do ponto de entrada.

Coleta de logs

As respostas de API estão disponíveis no lado do cliente (no rastreamento de rede do navegador da Web) ou no servidor de aplicativos ECE com nível de depuração ou rastreamento que não é recomendado manter por muito tempo devido ao Alto IO que é consumido.