Pré-requisitos

Atualmente, esse recurso é aplicável apenas a agentes.

Antes de integrar o Centro de contatos Webex com o console ServiceNow CRM, certifique-se de que você tenha o seguinte:

Siga um dos dois métodos abaixo:

Para instâncias de desenvolvedor, recomendamos seguir as etapas no guia de instância de desenvolvedor.

Se você possui uma instância licenciada por empresas, siga as diretrizes para ocorrências licenciadas por empresas.

Não recomendamos misturar o aplicativo licenciado pela empresa com instâncias de sandbox do desenvolvedor.

As seções a seguir descrevem as etapas para instalar o conector do ServiceNow para instâncias de desenvolvedor.

1

Inicie sessão na conta do portal do desenvolvedor do ServiceNow e abra o console Administration .

2

Na área Minha instância do menu Conta , clique em Iniciar edifício.

3

Em sua instância de desenvolvedor, no campo Filter navigator no canto superior esquerdo da janela, navegue até Plugins .

4

Procure o plug-in Openframe que tem o título Openframe. Talvez seja necessário rolar pela lista.

5

Clique em Instalar para instalar o plug-in Openframe.

6

Na opção Ativar plugin caixa de diálogo, clique em Ativar.

7

Quando a ativação do plug-in for concluída, clique em Fechar & Recarregar formulário na Ativação do plug-in caixa de diálogo.

8

Para verificar a ativação do plug-in, no campo Filtro do navegador no canto superior esquerdo da janela, navegue até OpenFrame.

9

Clique em Configurações e certifique-se de que o plug-in OpenFrame seja exibido na lista Configurações do OpenFrame.

1

Baixe o arquivo XML mais recente do conjunto de atualizações do sistema disponível no repositório github neste local : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

Nome do arquivo : webexcc-servicenow-update-setV(X).xml

2

Em sua instância do ServiceNow, no campo Filter navigator no canto superior esquerdo da janela, navegue até System Update Sets > Update Sets to Commit .

3

Clique no link Importar conjunto de atualização do XML .

4

Clique em Escolher arquivo , selecione o arquivo XML de configuração de atualização do sistema e clique em Carregar .

O conjunto de atualizações é exibido na lista Conjuntos de atualizações recuperados e está no estado carregado.
5

Na lista Conjuntos de atualizações recuperadas , clique no botão Atualizar nome do arquivo definido (link) para abrir o Conjunto de atualizações.

6

No canto superior direito da janela, clique em Pré-visualizar conjunto de atualizações para verificar a configuração de atualização para problemas.

7

Clique em Fechar na caixa de diálogo Atualizar configuração de pré-visualização depois que a pré-visualização for concluída.

8

Clique em Comprometer configuração de atualização.

9

Clique em Fechar na caixa de diálogo Atualizar Configurar depois que a confirmação do Conjunto de atualizações for concluída.

1

No campo Filter navigator no canto superior esquerdo da janela, digite sys_properties.list e pressione Enter.

2

Na página Propriedades do Sistema, classificar as propriedades por data atualizada. Certifique-se de que você possa ver as seguintes propriedades do Centro de contatos Webex:

3

Clique agentdesktop_url para abrir a página Propriedade do agentdesktop_url Sistema.

4

No campo Value , insira a URL do desktop do Webex Contact Center de acordo com a região de operação.

5

Clique em Atualizar para salvar as alterações.

6

(Opcional) Para alterar o nome da tabela de atividades, edite as propriedades webexccactivitytable , conforme necessário.

Na página Propriedades do Sistema , clique em webexccactivitytable .

Altere o campo Value conforme necessário.

7

(Opcional) Adicione grupos de usuários das seguintes maneiras:

  1. No campo Navigator de filtro no canto superior esquerdo da janela, navegue até Groups sob Segurança do sistema .

  2. Crie um novo grupo de usuários ou use um existente.

  3. Clique em Editar.

  4. Procure sn_openframe_user under Collection e mova-o para o seu grupo de usuários.

  5. Clique em Salvar.

  6. Adicione o usuário como membro de um grupo.

1

No campo Filtro de navegador , navegue até AbrirÁu e > configurações.

2

Clique em Novo.

3

Insira as seguintes propriedades para a URL:

  • Nome : Área de trabalho do centro de contatos Webex

  • Título : Webex Contact Center

  • Largura : 550 (Recomendado)

  • Altura : 600 (Recomendado)

4

À direita do campo URL , clique no botão Bloquear e adicione agentdesktop.do como URL. (Faça esta etapa para direcionar a configuração para a página da IU)

5

(Opcional) Selecione o(s) Grupo(s) de usuário/agente para atribuir a configuração.

6

Clique em Enviar. O URL aparece como um link.

7

Antes de tentar usar o telefone OpenFrame, certifique-se de carregar o arquivo JSON de layout de área de trabalho personalizado do ServiceNow para o Portal de gerenciamento do Webex Contact Center. Para obter mais informações, consulte Configurar o layout do desktop do ServiceNow no Webex Contact Center .

1

Baixe o layout da área de trabalho para o ServiceNow https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

2

Atualize as propriedades no arquivo de layout da área de trabalho, se necessário.

3

Vá para o Portal de gerenciamento do centro de contatos Webex.

4

Na barra de navegação do Portal de gerenciamento, escolha Provisioning > Layout de desktop.

5

Clique em Novo Layout e insira os detalhes do layout do desktop.

6

Carregue o arquivo JSON do layout do desktop do ServiceNow.

7

Clique em Salvar para salvar a configuração.

Agora você pode iniciar o Desktop do Centro de contatos Webex dentro do console ServiceNow.

8

No campo Navigator de filtro , navegue até Service Operations Workspace .

Página inicial do ServiceNow com o Webex Contact Center Agent Desktop integrado ao ServiceNow.

As seções a seguir descrevem as etapas para instalar o conector do ServiceNow para instâncias empresariais licenciadas.

1

Inicie sessão na conta do portal do desenvolvedor do ServiceNow e abra o console Administration .

2

Na área Minha instância do menu Conta , clique em Iniciar edifício.

3

Em sua instância de desenvolvedor, no campo Filter navigator no canto superior esquerdo da janela, navegue até Plugins .

4

Procure o plug-in Openframe que tem o título Openframe. Talvez seja necessário rolar pela lista.

5

Clique em Instalar para instalar o plug-in Openframe.

6

Na opção Ativar plugin caixa de diálogo, clique em Ativar.

7

Quando a ativação do plug-in for concluída, clique em Fechar & Recarregar formulário na Ativação do plug-in caixa de diálogo.

8

Para verificar a ativação do plug-in, no campo Filtro do navegador no canto superior esquerdo da janela, navegue até OpenFrame.

9

Clique em Configurações e certifique-se de que o plug-in OpenFrame seja exibido na lista Configurações do OpenFrame.

1

No campo Filtro de navegador no canto superior esquerdo da janela, insira sys_properties.list.

2

Na página Propriedades do Sistema, classificar as propriedades por data atualizada. Certifique-se de que você possa ver as seguintes propriedades do Centro de contatos Webex:

3

Clique agentdesktop_url para abrir a página Propriedade do agentdesktop_url Sistema.

4

No campo Value , insira a URL do desktop do Webex Contact Center de acordo com a região de operação.

5

Clique em Atualizar para salvar as alterações.

6

(Opcional) Para alterar o nome da tabela de atividades, edite as propriedades x_caci_webexcc.webexccactivitytable conforme necessário.

  1. Na página Propriedades do Sistema , clique em x_caci_webexcc.webexccactivitytable .

  2. Altere o campo Value conforme necessário.

7

(Opcional) Adicione grupos de usuários das seguintes maneiras:

  1. No campo Navigator de filtro no canto superior esquerdo da janela, navegue até Groups sob Segurança do sistema .

  2. Clique em Editar e adicione as seguintes funções:

    • sn_openframe_user

    • x_caci_webexcc.agente

    • agent_workspace_user

    • x_caci_webexcc.webexcc_imp_activity_user

    • x_caci_webexcc.webex_contact_center

1

No campo Filtro de navegador , navegue até AbrirÁu e > configurações.

2

Clique em Novo.

3

Insira as seguintes propriedades para a URL:

  • Nome : Área de trabalho do centro de contatos Webex

  • Título : Webex Contact Center

  • Largura : 550 (Recomendado)

  • Altura : 600 (Recomendado)

4

À direita do campo URL , clique no botão Bloquear e adicione x_caci_webexcc_agentdesktop.do como URL. (Faça esta etapa para direcionar a configuração para a página da IU)

5

(Opcional) Selecione o(s) Grupo(s) de usuário/agente para atribuir a configuração.

6

Clique em Enviar. O URL aparece como um link.

7

No campo Navigator de filtro , navegue até Service Operations Workspace .

Página inicial do ServiceNow com o Webex Contact Center Agent Desktop integrado ao ServiceNow.

8

(Opcional) Na lista Grupo de usuários , mova os grupos de usuários que podem acessar o desktop do Webex Contact Center de Disponível para Selecionado .

9

Antes de tentar usar o telefone OpenFrame, certifique-se de carregar o arquivo JSON de layout de área de trabalho personalizado do ServiceNow para o Portal de gerenciamento do Webex Contact Center. Para obter mais informações, consulte Configurar o layout do desktop do ServiceNow no Webex Contact Center .

1

Baixe o layout da área de trabalho para o ServiceNow https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

2

Atualize as propriedades no arquivo de layout da área de trabalho, se necessário.

3

Vá para o Portal de gerenciamento do centro de contatos Webex.

4

Na barra de navegação do Portal de gerenciamento, escolha Provisioning > Layout de desktop.

5

Clique em Novo Layout e insira os detalhes do layout do desktop.

6

Carregue o arquivo JSON do layout do desktop do ServiceNow.

7

Clique em Salvar para salvar a configuração.

Agora você pode iniciar o Desktop do Centro de contatos Webex dentro do console ServiceNow.

8

No campo Navigator de filtro , navegue até Service Operations Workspace .

Página inicial do ServiceNow com o Webex Contact Center Agent Desktop integrado ao ServiceNow.

1

No campo Navigator Filter, navegue até Incidents > Abrir incidente.

2

Clique com o botão direito do mouse no campo do chamador e clique em Configurar dicionário .

3

Adicione atributos separados por vírgula "ref_contributions=show_phone,.

Agora você pode começar a usar o desktop do Webex Contact Center no console do ServiceNow.

4

No campo Navigator de filtro , navegue até Service Operations Workspace .

Página inicial do ServiceNow com o Webex Contact Center Agent Desktop integrado ao ServiceNow.

Atualmente, não oferecemos suporte para iniciar sessão no Agent Desktop usando a opção de Desktop (WebRTC).

Desktop do agente no console do ServiceNow

Antes de fazer chamadas telefônicas, certifique-se de fazer o seguinte:

  • Crie o ponto de entrada outdial e crie uma estratégia de ponto de entrada de saída.

  • Habilita a ANI indial para o Perfil do agente.

  • De definida a ANI inicial para um mapeamento de Número de discagem para entrada.

Para obter mais informações, consulte o capítulo Provisioning da Configuração do Cisco Webex Contact Center e o Guia de administração .

No campo Navigator de filtro , navegue até Service Operations Workspace .

Página inicial do ServiceNow com o Webex Contact Center Agent Desktop integrado ao ServiceNow.

Para obter informações sobre como usar o Desktop, consulte a guia Agent na ajuda do Webex Contact Center.

Visão geral

Este artigo aborda várias maneiras de personalizar suas regras de negócios para o conector do ServiceNow CRM. Ele detalha como você pode personalizar os casos de uso com base em regras de negócios que são específicas ao ServiceNow.

O cliente deve autogerenciar esses casos de uso no ServiceNow. A configuração é específica para o ServiceNow e não para o software ou a experiência do Webex Contact Center.

Esta é uma documentação de referência para ajudar na modificação de regras de negócios. Os desenvolvedores do ServiceNow criarão e gerenciarão as regras de negócios e fornecerão suporte.

A Cisco fornece apenas documentação de amostra.

As seções a seguir fornecem detalhes sobre como configurar, habilitar e gerenciar o widget de ações para instâncias de desenvolvedores e empresas.

Confirmar o widget Atualizar definido para ações

Para as instâncias empresariais licenciadas, instale o aplicativo Webex Contact Center mais recente da ServiceNow store .

Para configurar o widget de Ações para as instâncias do desenvolvedor, baixe o arquivo XML mais recente do conjunto de atualização do sistema disponível no repositório github neste local: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. O nome do arquivo é webexcc-servicenow-update-setv7-1-ActionsWidget.xml. Para confirmar o conjunto de atualizações do widget de Ações, consulte as etapas 2 a 9 em Confirmar o conjunto de atualizações .

Ativar widget de ações

Use a propriedade isWidgetDisplayEnabled para ativar o widget de Ações. Você não deve modificar o valor desta propriedade na seção sem cabeça do layout de área de trabalho personalizado. A propriedade é sempre definida como falsa na seção sem cabeça do layout de desktop personalizado. Você deve atualizar o valor da propriedade apenas na seção do painel do layout de área de trabalho personalizado.

Depois de ativar o widget Ações no layout de área de trabalho personalizada, você pode executar as seguintes ações:

  • Gerenciar registros de atividades—Clique em Visualizar/editar registro de atividades para exibir a lista de registros de atividades associados ao chamador.
  • Associar objetos de CRM — Clique em Associar a registros de atividades para adicionar objetos de CRM, como tipo de chamada (de entrada ou de saída), objeto de chamada, notas de chamada e assim por diante ao registro de atividades.
  • Gerenciar incidentes—Clique em Criar incidente . Um novo incidente é criado com os detalhes do autor da chamada pré-preenchidos. Você pode fazer as atualizações necessárias para o incidente. Você pode optar por modificar o tipo de registro de incidente para caso, módulo de RH, e assim por diante com base em suas necessidades. Para alterar o tipo de registro, modifique o valor da propriedade typeOfRecord na configuração do widget de ações. Por exemplo:
    { "comp": "md-tab-panel", "attributes": { "slot": "panel", "class": "widget-pane" }, "children": [ { "comp": "agentx-custom-desktop", "script": "https://cx-crmconnector.ciscoccservice.com/servicenow/v5/dist/index.js", "properties": { "isWidgetDisplayEnabled": true, "typeOfRecord" : "Create Incident" }, "wrapper": { "title": "SNOW Actions !", "maximizeAreaName": "app-maximize-area" } } ] }
  • Adicionar notas de chamada ao vivo — você pode capturar informações adicionais sobre a chamada na área de texto e finalizar a chamada. Você pode ver essas notas adicionadas como notas de chamada no registro de atividades.

Alteração de código no ServiceNow

O Script Inclui alterações
  1. Vá para o navegador de filtros e procure script inclui .

    Selecione o Script Inclui sob UI do sistema .

  2. Filtre o Name e procure propUtils .

  3. Altere o método UserGetSysId no Script .

    Atual:

    UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },

    Novo código de exemplo para o incidente:

    UserGetSysId: função () { var opened_for; //Alterações relacionadas a incidentes var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=usuário.sys_id;//retornar usuário.sys_id; var inc = novo GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.inicialize(); inc.caller_id=opened_for- Inc.contact_type='telefone'; inc.short_description='Chamada recebida de '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); }} var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; retornar JSON.stringify(sysidlist); },

Alteração do método nas páginas de IU
  1. Vá para o navegador de filtros e procure UI page .

    Selecione páginas UI sob UI do sistema .

  2. Filtre o Name e procure agentdesktop .

  3. Altere a função screenpop no Script do cliente .

    Função atual:

    // screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: "interação", consulte: 'sys_id='+sysid});

    Código de exemplo para o incidente:

    // screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // For Incident-related change var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: "incidente", consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: "incidente", consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc — f699b6b8'}); }}

Se as informações do chamador existirem no CRM e já houver um novo incidente aberto com este contato, o aplicativo abrirá o incidente em andamento

Se as informações do autor da chamada não existirem no CRM, o aplicativo abre um novo incidente

Se as informações do autor da chamada existirem no CRM, o aplicativo abre um novo incidente com detalhes pré-preenchidos

Visão geral

Este caso de uso detalha o processo para adicionar uma coluna extra à tabela ServiceNow - webexcc_imp_activity e criar sn_openframe_phone_log após a instalação do Conector de CRM do Webex CC para ServiceNow.

Por padrão, a tabela contém determinados campos e valores fora da caixa do sistema.

Você pode criar mais variáveis específicas do negócio (Variáveis CAD) dentro do designer de fluxo WebexCC e adicionar as variáveis CAD dentro do registro de atividades pós-chamada do ServiceNow, bem como persistir nos dados da tabela de atividades pós-chamada.

Esta é apenas uma documentação de referência - e mostra como fazer isso para uma variável CAD de amostra chamada Nome do cliente que armazena o nome do cliente dentro do IVR e publica isso no ServiceNow.

Espera-se que os desenvolvedores do parceiro + cliente ServiceNow configurem e gerenciem essa configuração, pois ela é uma personalização para o conector existente.

A Cisco fornece apenas as técnicas sobre como personalizar e estender o conector.

A partir deste artigo, a equipe da Cisco validou o suporte para a adição da variável CAD ao Registro de atividades e à Tabela de atividades usando a técnica descrita abaixo:

Adicionar coluna à atividade IMP do WebexCC

  1. Edite a tabela na versão do desenvolvedor do ServiceNow.

  2. Vá até o navegador do filtro e procure o estúdio.

    Selecione Webex Contact Center

    ou

  3. Selecione a tabela Atividade IMP do WebexCC

  4. Adicionar uma nova coluna, por exemplo, CustomerName

Adicionar coluna ao registro do telefone

  1. Edite a tabela de registro do telefone.

  2. Adicione uma nova coluna, por exemplo, CustomerName .

Mapa de transformação de atividades do WebexCC

Adicione uma nova coluna, por exemplo, mapeamento de campo CustomerName .

Personalizar colunas da lista

Como o Service Now recomenda, altere a Ação de escolha de criar para ignorar.

Configurar lista de registros do telefone

Ir para a inclusão de script

Adicione apenas uma linha webexcc.u_customername=actInfo.CustomerName aos propUtils.

Script de amostra

Veja a linha: webexcc.u_customername=actInfo.CustomerName; com um comentário de suporte.

var propUtils = Class.create(); propUtils.prototype = Object.extendsObject(global.Resumo AjaxProcessor,{ getWebexccProp: function () { var webexccprop = {}; webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/'; webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url'); // webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url'); return JSON.stringify(webexccprop); }, UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id;//return user.sys_id; // else // return null; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; }, setWebexcctable: função () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable')); webexcc.addQuery("callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { webexcc.ani = actInfo.dnis = actInfo.dnis; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ActivityDate; webexcc.callobject =actInfo.CallObject;webexcc.calldisposition=actInfo.CallDisposition; // Esta linha é Adicionada - para capturá-la no Registro de atividades webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); //Atividades no registro de incidentes; var actInfoString =this.getParameter('actInfo'); var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id- Suser.sys_id); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(JSON.parse(actInfoString),null,2); inc.comments =jsonPretty; inc.update() } }} retornar sys_id; }, digite: "propUtils" });

Criar uma variável CAD no designer de fluxo

Adicionar a variável CAD ao layout de área de trabalho

Exemplo

"CadName1: SnowField1,CadName2: SnowField2" CadName1 é CustomerName SnowField1 também é usado como CustomerName que faz parte da amostra scirpt showen acima de "actInfo.CustomerName".

Capturas de tela de demonstração

Visualize a variável CAD recém-adicionada na tabela Atividade do WebexCC.

Criar variável CAD para editor de fluxo

Urgência de incidentes

Impacto do incidente

Atualização do script de serviço agora

Atualizações no Script Incluem

  1. Vá para o navegador do filtro e procure script inclui

    Selecione a opção Script Inclui em UI do sistema .

  2. Filtre o Name com propUtils .

  3. Altere o método UserGetSysId no campo Script .

    Script atual:

    UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },

    Novo código de exemplo para o incidente:

    UserGetSysId: função () { var opened_for; var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=usuário.sys_id;//retornar usuário.sys_id; var inc = novo GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.inicialize(); inc.caller_id=opened_for- Inc.contact_type='phone'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Chamada recebida de '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); }} var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },

Uma alteração de método nas páginas de IU
  1. Vá para o navegador do filtro e procure páginas UI .

    Selecione a opção Páginas da IU em IU do sistema .

  2. Filtre as páginas de IU com Name e procure agentdesktop .

  3. Altere a função screenpop no campo de script.

    Função atual:

    // screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: "interação", consulte: 'sys_id='+sysid}); }

    Código de exemplo para o incidente:

    // screen pop function screenpop(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callSessionInact.Impact!= null && callSessionInfo.callAssociatedData.Impact.value; } var IncUrgency=3; if(callSessionInfo.callAssociatedData.Urgency!= null && callSessionInfo.callAssociatedData.Urgency!= undefined) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value; } if(callerani===callSessionInfo.phoneNumber); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('IncUrgency', Impact); gaout.addParam('Impact', Impact); gaout.getXMLWait(); var sys "incidente", consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: "incidente", consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }

Se as informações do chamador existirem no CRM e não houver um incidente novo ou em andamento, o aplicativo abrirá um novo incidente

Altere o código no ServiceNow

Adicionar novas colunas à tabela WebexCC IMP Activity

Abrir a tabela Atividade IMP do WebexCC

Adicionar uma nova coluna - InteracionsNumber

Adicionar uma nova coluna - IncidentNumber

Clique em Atualizar .

Adicionar novas colunas à tabela Registro de telefone

Abrir a tabela Registro de telefone

Adicionar uma nova coluna - InteracionsNumber

Adicionar uma nova coluna - IncidentNumber

Mapa de transformação de atividades do WebexCC

Abrir transformar mapa do navegador do filtro

Clique em WebexCC Activity TransformMap

Adicionar novo - para o mapa do número de interação

Adicionar novo - para o mapa de números de incidentes

Clique em Atualizar.

Alterações no script incluem

  1. Vá para o navegador de filtros e procure por "o script inclui".

    Selecione o Script Inclui sob UI do sistema .

  2. Filtre o Name com propUtils .

  3. Altere o método setWebexcctable .

    Novo código de exemplo para Incidente:

    setWebexcctable: função () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('webexccactivitytable')); webexcc.addQuery("u_callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { //Activities on Incident record; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactionsysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; excluir actInfo['interaction_sys_id']; excluir actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid!= indefinido){ var inte = novo GlideRecordSecure('interaction'); //inte.get('sys_id', interactionsysid); inte.addQuery('sys_id', interactionsysid); inte.query(); if (inte.next()) { intenum=inte.number; // inte.setValue('state','Closed Complete'); inte.work_notes='Update State to closed.'; inte.update(); }} if( incsysid!= null && incsysid!= undefined){ var inci = new GlideRecordSecure('incident'); inci.addQuery('sys_id', incsysid); inci.query(); if (inci.next()) { incnum=inci.number; var jsonPretty = JSON.stringify(actInfo,null,2); //JSON.stringify(JSON.parse(actInfoString),null,2); inci.comments =jsonPretty; inci.update(); } }else{ var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id- Suser.sys_id); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(actInfo,null,2); inc.comments =jsonPretty; inc.update(); } }} webexcc.u_ani = actInfo.ani; webexcc.u_dnis =actInfo.dnis; webexcc.u_queuename =actInfo.queuename; webexcc.u_wrapuptime =actInfo.wrapuptime; webexcc.u_callduration =actInfo.CallDurationInSeconds; webexcc.u_ringingtime =actInfo.ringingtime; webexcc.u_activitydate =actInfo.ActivityDate; webexcc.u_callobject =actInfo.CallObject; webexcc.u_calltype =actInfo.CallType; webexcc.u_calldisposition=actInfo.CallDisposition; webexcc.u_incidentnumber= incnum; webexcc.u_interactionsnumber= intenum; sys_id=webexcc.insert(); } retornar sys_id; },

Alterações de método nas páginas de IU

  1. Vá para o navegador do filtro e procure páginas UI

    Selecione a opção Páginas da IU em IU do sistema .

  2. Filtre as páginas de IU com Name e procure agentdesktop .

  3. Altere a função nowActivities e screenpop no script.

    Função atual:

     function nowActivities(actInfo, ani) { var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId) }

    Código de exemplo para o incidente:

    função nowActivities(actInfo, ani) { var sysObjstr = window.localStorage.getItem("screenpopinteraction"); if(sysObjstr != null && sysObjstr != undefined) { var sysObjjson=JSON.parse(sysObjstr); actInfo.interaction_sys_id=sysObjjson.sysid; actInfo.incident_sys_id=sysObjjson.incsysid; } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId); } function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam(')sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: "incidente", consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: "incidente", consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); } 

Resultados após a atualização

As seguintes personalizações se aplicam às versões 1.0.5 e abaixo. Para as personalizações das versões mais recentes 1.0.7 e acima, siga as etapas acima.

Nº de personalização 1 - Adicionar regras de negócios personalizadas para casos de uso de fluxo de chamadas

Criar um novo registro de incidentes para cada chamada

Para cada nova chamada no conector CRM do WebexCC no ServiceNow, crie um Novo Registro De Incidentes.

  1. Procurar regras de negócios no navegador Filtro

  2. Clique em Novo.

    Código de exemplo para referência:

    function customcti() { var url = nulo; var name = sysparm_caller_name; eid = sysparm_caller_id; var telefone = sysparm_caller_phone; var taskID = sysparm_task_id; var fQuery = sysparm_query; if (fQuery == null) fQuery = ''; var view = sysparm_view; se (exibição == nulo) || view == '') view = "itil"; var userID = nulo; if (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid); } se (userID = null && name != null && name != '') { userID = UserGetSysId("name", name); } se (userID = null && phone != null && phone != '') { userID = UserGetSysId("phone", telefone); } se (userID = null && name!= null) { if (userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += "^"; fQuery += "caller_id=" + userID; } se (url == nulo) { url = "incident.do?sys_id=-1"; se (fQuery != nulo) URL += "&sysparm_query=" + fQuery; } resposta = url; url de retorno; } função UserGetSysId(campo, valor) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query(); if (user.next()) return user.sys_id; caso contrário, volte nulo; }

    Exemplo de configuração da regra de negócios

  3. Habilitar chamada do cliente

    O processamento da integração de telefonia do computador (CTI) para incidente é marcado como True .

  4. Atualize a URL do screenpop com a Regra CTI personalizada " cti.do?sysparm_cti_rule=criateIncident&sysparm_caller_phone="

Exemplo

O sysparm_cti_rule=nome em que " name " é o nome de uma function deve ser chamado para CTI Processing em vez de usar o script padrão.

Defina a função em uma sys_script entrada marcada cliente callable .

Se você precisar inserir, atualizar ou excluir qualquer GlideRecord(s) na função, ligue para uma função de chamada não-cliente separada para executar as atualizações.

Para fazer um script de cliente-callable, você deve marcar a caixa de seleção cliente-callable no formulário que exibe quando a sys_script entrada é exibida.

A caixa de seleção de chamada do cliente não aparece por padrão. Para visualizar, você deve modificar os campos que aparecem no formulário usando o ícone de engrenagem e o mecanismo de balde slush.

Referências

Nº de personalização 2 - Adicionar variável CAD na tabela de atividades do Webex Contact Center

Visão geral

Este artigo detalha o processo para adicionar uma coluna adicional à tabela ServiceNow - webexcc_activity que é criada após a instalação do Conector CRM Webex CC para ServiceNow.

Por padrão, a tabela contém campos e valores de sistema prontos para uso.

Você pode potencialmente criar mais variáveis específicas do negócio (Variáveis CAD) dentro do designer de fluxo WebexCC e adicionar essas variáveis CAD dentro do registro de atividades do ServiceNow pós-chamada e persistir isso nos dados da tabela de atividades pós-chamada .

  • Isso é apenas documentação de referência - e mostra como fazer isso para uma variável CAD de amostra chamada Nome do cliente que armazena o nome do cliente dentro do IVR e publica isso no ServiceNow.

  • Os desenvolvedores do parceiro + cliente ServiceNow configurarão e gerenciarão essa configuração, pois é uma personalização para o conector existente.

  • A Cisco fornecerá apenas as técnicas de como personalizar e estender o conector.

  • A partir deste artigo, a equipe da Cisco validou o suporte para a adição da variável CAD ao Registro de atividades e à Tabela de atividades usando a técnica descrita abaixo.

Adicionar coluna à atividade do WebexCC
  1. Edite a tabela na versão do desenvolvedor do ServiceNow.

  2. Vá para o Studio > Webex Contact Center .

  3. Selecione Tabela de atividade do WebexCC.

  4. Por exemplo, CustomerName .

  5. Selecione Layout de lista para Atividade WebexCC .

Criar um novo Script Inclui

Esta etapa não é necessária se você estiver usando o XML do conjunto de atualização - Apenas uma linha é necessária para ser adicionada " webexcc.u_customername=actInfo.CustomerName " aos propUtils.

Script de amostra

Veja a linha com: webexcc.u_customername=actInfo.CustomerName; com um comentário de suporte.

var propUtils2 = Class.create(); propUtils2.prototype = Object.extendsObject(global.Resumo AjaxProcessor,{ getWebexccProp: function () { var webexccprop = {}; webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/'; webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url'); webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url'); return JSON.stringify(webexccprop); }, setWebexcctable: função () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable')); webexcc.addQuery("callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { webexcc.ani = actInfo.dnis = actInfo.dnis; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ActivityDate; webexcc.callobject =actInfo.CallObject;webexcc.calldisposition=actInfo.CallDisposition; // Esta linha é Adicionada - para capturá-la no Registro de atividades webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); // Atividades no registro de incidentes; var actInfoString =this.getParameter('actInfo'); var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id- Suser.sys_id); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(JSON.parse(acting string),null,2); inc.comments =jsonPretty; inc.update() } }} retornar sys_id; }, digite: "propUtils2" });
Edite a página da IU com um novo nome de script

Criar uma variável CAD no designer de fluxo

Adicionar a variável CAD ao layout de área de trabalho

Capturas de tela de demonstração

Visualize a variável CAD recém-adicionada na tabela Atividade do WebexCC.