Integrar o Webex Contact Center com o ServiceNow (Versão 1 — Legado)
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:
-
Acesso ao centro de contatos Webex.
-
Acesso do administrador ao Control Hub em https://admin.webex.com e ao portal de gerenciamento do Webex Contact Center. As URLs do Portal de Gerenciamento são específicas para a sua região.
-
América do Norte: https://portal.wxcc-us1.cisco.com
-
Reino Unido: https://portal.wxcc-eu1.cisco.com
-
Cingapura: https://portal-v2.wxcc-sg1.cisco.com
-
-
Um agente com acesso ao desktop. A URL para o desktop é específica para sua região.
-
América do Norte: https://desktop.wxcc-us1.cisco.com
-
Reino Unido: https://desktop.wxcc-eu1.cisco.com
-
Cingapura: https://desktop.wxcc-sg1.cisco.com
-
-
Acesso do agente ao seguinte domínio que é adicionado na Lista de Permissão de Política de Segurança de Conteúdo:
-
*.service-now.com
Para obter mais informações sobre como definir a lista permitida, consulte o artigo Configurações de segurança do Centro de contatos Webex.
-
-
Uma conta do portal para desenvolvedores do ServiceNow. Para criar uma conta, vá até o portal de desenvolvedores do ServiceNow em https://developer.servicenow.com/dev.do e clique em Inscrever-se e Iniciar criação.
-
Acesso aos seguintes arquivos em https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
ServiceNow Update Set (XML)
-
Layout da área de trabalho do ServiceNow Contact Center (JSON)
-
- As edições do ServiceNow que o Webex Contact Center suporta são Vancouver, Utah, Tokya, Washington e Xanadu. Para obter mais informações, consulte Integração do Webex Contact Center com o ServiceNow .
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é . |
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 |
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 Filtro de navegador , navegue até |
2 |
Clique em Novo. |
3 |
Insira as seguintes propriedades para a URL:
|
4 |
À direita do campo URL , clique no botão Bloquear e adicione |
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 |
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é . |
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. |
As instâncias que possuem licenças corporativas podem instalar o aplicativo do Webex Contact Center diretamente da ServiceNow Store.
Baixe e instale o pacote do Webex Contact Center da loja do ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
No campo Filtro de navegador no canto superior esquerdo da janela, insira |
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.
|
7 |
(Opcional) Adicione grupos de usuários das seguintes maneiras:
|
1 |
No campo Filtro de navegador , navegue até |
2 |
Clique em Novo. |
3 |
Insira as seguintes propriedades para a URL:
|
4 |
À direita do campo URL , clique no botão Bloquear e adicione |
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é . |
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 |
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é . |
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 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é . |
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é .
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-
Vá para o navegador de filtros e procure
script inclui
.Selecione o Script Inclui sob UI do sistema .
-
Filtre o Name e procure
propUtils
. -
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); },
-
Vá para o navegador de filtros e procure
UI page
.Selecione páginas UI sob UI do sistema .
-
Filtre o Name e procure
agentdesktop
. -
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
-
Edite a tabela na versão do desenvolvedor do ServiceNow.
-
Vá até o navegador do filtro e procure o estúdio.
Selecione
Webex Contact Center
ou
-
Selecione a tabela
Atividade IMP do WebexCC
-
Adicionar uma nova coluna, por exemplo,
CustomerName
Adicionar coluna ao registro do telefone
-
Edite a tabela de registro do telefone.
-
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 incidentesImpacto do incidente
Atualização do script de serviço agora
Atualizações no Script Incluem
-
Vá para o navegador do filtro e procure
script inclui
Selecione a opção Script Inclui em UI do sistema .
-
Filtre o Name com
propUtils
. -
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; },
-
Vá para o navegador do filtro e procure
páginas UI
.Selecione a opção Páginas da IU em IU do sistema .
-
Filtre as páginas de IU com Name e procure agentdesktop .
-
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 IMPdo 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
Mapa de transformação de atividades do WebexCC
Abrir transformar mapa
do navegador do filtro
Clique em WebexCC Activity TransformMap
Clique em Atualizar.
Alterações no script incluem
-
Vá para o navegador de filtros e procure por "o script inclui".
Selecione o Script Inclui sob UI do sistema .
-
Filtre o Name com
propUtils
. -
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
-
Vá para o navegador do filtro e procure
páginas UI
Selecione a opção Páginas da IU em IU do sistema .
-
Filtre as páginas de IU com Name e procure
agentdesktop
. -
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 chamadaPara cada nova chamada no conector CRM do WebexCC no ServiceNow, crie um Novo Registro De Incidentes.
Procurar regras de negócios no navegador Filtro
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
Habilitar chamada do cliente
O processamento da integração de telefonia do computador (CTI) para incidente é marcado como True .
Atualize a URL do screenpop com a Regra CTI personalizada " cti.do?sysparm_cti_rule=criateIncident&sysparm_caller_phone="
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.
Nº de personalização 2 - Adicionar variável CAD na tabela de atividades do Webex Contact Center
Visão geralEste 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.
Edite a tabela na versão do desenvolvedor do ServiceNow.
Vá para o
.Selecione Tabela de atividade do WebexCC.
Por exemplo, CustomerName .
Selecione Layout de lista para Atividade WebexCC .
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.