Quando você integra o Webex Contact Center ao console ServiceNow CRM, é possível iniciar Webex Contact Center Desktop dentro do ServiceNow.
Antes de se integrar Webex Contact Center ao console ServiceNow CRM, certifique-se de ter o seguinte:
-
Acesso à Webex Contact Center.
-
Acesso do administrador ao Hub de controle no https://admin.webex.com e no Webex Portal de Gerenciamento da Central de Contatos. As URLs do Portal de Gerenciamento são específicas à sua região.
-
América do Norte: https://portal.wxcc-us1.cisco.com
-
Reino Unido: https://portal.wxcc-eu1.cisco.com
-
-
Um agente com acesso à Área de trabalho. A URL da Área de trabalho é específica à sua região.
-
América do Norte: https://desktop.wxcc-us1.cisco.com
-
Reino Unido: https://desktop.wxcc-eu1.cisco.com
-
-
O acesso do agente ao seguinte domínio adicionado na Lista de permitidos de diretivas de segurança de conteúdo:
-
*.service-now.com
Para obter mais informações sobre como definir a lista de permitidos, consulte as Configurações de segurança do Webex Contact Center.
-
-
Uma conta do portal de desenvolvedor ServiceNow. Para criar uma conta, vá para o portal de desenvolvedor ServiceNow em https://developer.servicenow.com/dev.do e clique em Conectar-se e Iniciar Construção.
-
Acesse os seguintes arquivos em https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
ServiceNow Update Set (XML)
-
Layout do ServiceNow Contact Center Desktop (JSON)
-
Siga um dos dois métodos a seguir: Para casos de desenvolvedor, recomendamos seguir as etapas sob o guia de instância do desenvolvedor. Se você tiver uma instância licenciada por uma empresa, siga as diretrizes para instâncias licenciadas da empresa. Não recomendamos misturar o aplicativo licenciado pela empresa com instâncias de caixa de areia de desenvolvedor. |
As seções a seguir descrevem as etapas para instalar o conector ServiceNow para instâncias do desenvolvedor.
1 |
Inicie uma sessão na sua conta do portal de desenvolvedor ServiceNow e abra o console de administração. |
2 |
Na área Minha instância do menu Conta , clique em Iniciar construção. |
3 |
No caso do seu desenvolvedor, no campo Filtrar navegador no canto superior esquerdo da janela, vá para Plugins. |
4 |
Procure o plug-in Openframe que possui o título Openframe. Pode ser necessário percorrer a lista. |
5 |
Clique em Instalar para instalar o plug-in Openframe. |
6 |
Na caixa de diálogo Ativar plug-in, clique em Ativar. |
7 |
Quando a ativação do plug-in estiver concluída, clique em Fechar > Recarregar formulário na caixa de diálogo Ativação do plug-in . |
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 assegure-se de que o plug-in OpenFrame apareça na lista Configurações de estrutura aberta. |
1 |
Faça o download do arquivo XML conjunto de atualizações do sistema mais recente disponívelnol. 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 ServiceNow, no campo Navegador de filtro , na parte superior esquerda da janela, navegue até . |
3 |
Clique em Importar conjunto de atualização de XML link. |
4 |
Clique em Escolher arquivo, selecione o Conjunto de atualizações do sistema XML arquivo e clique em Carregar. O conjunto de atualização aparece na lista Conjuntos de atualização recuperados e está no estado Carregado .
|
5 |
Na lista Conjuntos de atualização recuperados, clique no Nome do arquivo do conjunto de atualizações (link) para abrir o Conjunto de atualizações. |
6 |
No canto superior direito da janela, clique em Visualizar atualização definido para verificar o conjunto de atualizações dos problemas. |
7 |
Clique em Fechar , na caixa de diálogo Atualizar visualização do conjunto, depois que a visualização for concluída. |
8 |
Clique em Confirmar conjunto de atualização. |
9 |
Clique em Fechar , na caixa de diálogo Atualizar conjunto de confirmação, depois que a realização do Conjunto de Atualizações for concluída. |
1 |
No campo Filtro do navegador no canto superior esquerdo da janela, digite sys_properties.list e pressione Enter. |
2 |
Na página Propriedades do sistema, classifique as propriedades pela data atualizada. Verifique se você pode ver as seguintes propriedades Webex da Central de contatos: |
3 |
Clique em agentdesktop_url para abrir a página agentdesktop_url de propriedade do sistema. |
4 |
No campo Valor , digite a URL para o Webex Contact Center Desktop 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 Atividade, edite as propriedades da webexccitytable conforme necessário. Na página Propriedades do sistema, clique em Webexccitytable. Altere o campo Valor conforme necessário. |
7 |
(Opcional) Adicione grupos de usuários das seguintes maneiras:
|
1 |
No campo Navegador de filtro , navegue até . |
2 |
Clique em Novo. |
3 |
Digite as seguintes propriedades para o URL:
|
4 |
À direita do campo URL , clique no botão Bloquear e adicione |
5 |
(Opcional) Selecione o Usuário/Grupos de Agentes para atribuir a configuração. |
6 |
Clique em Enviar. A URL é exibida como um link. |
7 |
Antes de tentar usar o telefone OpenFrame, assegure-se de fazer o upload do arquivo JSON de Layout de Área de Trabalho personalizado ServiceNow no Webex Contact Center Management Portal. Para obter mais informações, consulte Configurar o ServiceNow Desktop Layout na Webex Contact Center. |
1 |
Faça o download do layout de Desktop para ServiceNow de https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Atualize as propriedades no arquivo Layout de área de trabalho, se necessário. |
3 |
Vá para o Webex Portal de Gerenciamento de Central de Contatos. |
4 |
Na barra de navegação do Portal de Gerenciamento, escolha Desktop. |
5 |
Clique em Novo Layout e insira os detalhes do layout da área de trabalho. |
6 |
Carregue o arquivo JSON de layout de área de trabalho ServiceNow. |
7 |
Clique em Salvar para salvar a configuração. Agora é possível iniciar o Webex Contact Center Desktop no console ServiceNow. |
8 |
No campo Navegador de filtro , navegue até Agent . Clique no ícone do telefone inferior esquerdo. |
As seções a seguir descrevem as etapas para instalar o conector ServiceNow para instâncias empresariais licenciadas.
1 |
Inicie uma sessão na sua conta do portal de desenvolvedor ServiceNow e abra o console de administração. |
2 |
Na área Minha instância do menu Conta , clique em Iniciar construção. |
3 |
No caso do seu desenvolvedor, no campo Filtrar navegador no canto superior esquerdo da janela, vá para Plugins. |
4 |
Procure o plug-in Openframe que possui o título Openframe. Pode ser necessário percorrer a lista. |
5 |
Clique em Instalar para instalar o plug-in Openframe. |
6 |
Na caixa de diálogo Ativar plug-in, clique em Ativar. |
7 |
Quando a ativação do plug-in estiver concluída, clique em Fechar > Recarregar formulário na caixa de diálogo Ativação do plug-in . |
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 assegure-se de que o plug-in OpenFrame apareça na lista Configurações de estrutura aberta. |
Instâncias que tenham licenças corporativas podem instalar o aplicativo Webex Contact Center diretamente na ServiceNow Store.
Faça o download e instale o pacote Webex Contact Center na loja ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
No campo Filtrar navegador no canto superior esquerdo da janela, digite sys_properties.list. |
2 |
Na página Propriedades do sistema, classifique as propriedades pela data atualizada. Verifique se você pode ver as seguintes propriedades Webex da Central de contatos: |
3 |
Clique em agentdesktop_url para abrir a página agentdesktop_url de propriedade do sistema. |
4 |
No campo Valor , digite a URL para o Webex Contact Center Desktop 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 atividade, edite as propriedades x_caci_webexcc.webexccitytable conforme necessário.
|
7 |
(Opcional) Adicione grupos de usuários das seguintes maneiras:
|
1 |
No campo Navegador de filtro , navegue até . |
2 |
Clique em Novo. |
3 |
Digite as seguintes propriedades para o URL:
|
4 |
À direita do campo URL , clique no botão Bloquear e adicione |
5 |
(Opcional) Selecione o Usuário/Grupos de Agentes para atribuir a configuração. |
6 |
Clique em Enviar. A URL é exibida como um link. |
7 |
No campo Navegador de filtro , navegue até Agent . Clique no ícone do telefone inferior esquerdo. |
8 |
(Opcional) Na lista Grupo de usuários, mova os grupos de usuários que podem acessar o Webex Contact Center Desktop de Disponível para Selecionado. |
9 |
Antes de tentar usar o telefone OpenFrame, assegure-se de fazer o upload do arquivo JSON de Layout de Área de Trabalho personalizado ServiceNow no Webex Contact Center Management Portal. Para obter mais informações, consulte Configurar o ServiceNow Desktop Layout na Webex Contact Center. |
1 |
Faça o download do layout de Desktop para ServiceNow de https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Atualize as propriedades no arquivo Layout de área de trabalho, se necessário. |
3 |
Vá para o Webex Portal de Gerenciamento de Central de Contatos. |
4 |
Na barra de navegação do Portal de Gerenciamento, escolha Desktop. |
5 |
Clique em Novo Layout e insira os detalhes do layout da área de trabalho. |
6 |
Carregue o arquivo JSON de layout de área de trabalho ServiceNow. |
7 |
Clique em Salvar para salvar a configuração. Agora é possível iniciar o Webex Contact Center Desktop no console ServiceNow. |
8 |
No campo Navegador de filtro , navegue até Agent . Clique no ícone do telefone inferior esquerdo. |
1 |
No campo Filtrar navegador , navegue até Incidentes > Abrir Incidente. |
2 |
Clique com o botão direito do mouse no campo de chamador e clique em Configurar Dicionário. |
3 |
Adicionar Atributos Separados Agora você pode começar a usar o Webex Contact Center Desktop no console ServiceNow. |
4 |
No campo Navegador de filtro , navegue até . Clique no ícone do telefone inferior esquerdo. |
Antes de efetuar chamadas efetuadas, assegure-se de fazer o seguinte:
-
Crie o ponto de entrada de saída e configure uma estratégia de ponto de entrada de saída.
-
Ative a ANI de saída para o Perfil do agente.
-
Defina o ANI de saída para um mapeamento de Ponto de discagem número-entrada.
Para obter mais informações, consulte o capítulo Provisionamento do Cisco Webex Contact Center Guia de instalação e administração.
No campo Navegador de filtro , navegue até Agent .
Clique no ícone do telefone inferior esquerdo.
Para obter informações sobre como usar a Área de trabalho, consulte o guia do usuário Cisco Webex Contact Center Agent Desktop.
Particionamento de armazenamento de terceiros
Um possível problema com a recente atualização do Google Chrome e Edge 116 ou superior pode interromper sua experiência de conexão com conectores CRM na Webex Contact Center. Este problema afeta a entrada do Desktop no console ServiceNow CRM.
Para resolver esse problema no navegador Google Chrome:
-
Abra o navegador Google Chrome e digite chrome://flags/#third-party-storage-partitioning na barra de endereços.
-
Desabilite o sinalizador de particionamento de armazenamento experimental de terceiros.
-
Feche e reinicie o Chrome.
-
Inicie novamente a sessão na Área de trabalho dentro do console ServiceNow CRM.
Para resolver esse problema no navegador Edge:
-
Abra o navegador e digite edge://flags/#third-party-storage-partitioning na barra de endereços.
-
Desabilite o sinalizador de particionamento de armazenamento experimental de terceiros.
-
Salve as alterações e reinicie o navegador.
-
Inicie novamente a sessão na Área de trabalho dentro do console ServiceNow CRM.
Visão geral
Este artigo aborda várias maneiras de personalizar as regras de negócios para o conector ServiceNow CRM. Ele detalha como você pode personalizar os casos de uso com base em regras comerciais que são específicas ao ServiceNow.
O cliente deve auto-gerenciar esses casos de uso no ServiceNow. A configuração é específica do ServiceNow e não Webex software ou expertise da Central de contato.
Esta é uma documentação de referência para ajudar na modificação das regras comerciais. Os desenvolvedores do ServiceNow criarão e gerenciarão as regras comerciais e fornecerão suporte. A Cisco fornece apenas a documentação de exemplo. |
Alteração de código no ServiceNow
-
Vá até o navegador de filtro e procure "script inclui".
Selecione o script Inclui em IU do sistema.
-
Filtre o Nome e procure "propUtils" .
-
Altere o método "UserGetSysId" no Script.
Curent:
UserGetSysId: função () { var opened_for; usuário var = 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; //Incident related changes var sysidlist = {}; usuário var = novo GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;/return user.sys_id; var inc = new 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.initialize(); inc.caller_id=opened_for; inc.contact_type='phone'; inc.short_description='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } } var grInt = novo GlideRecordSecure('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; retornar JSON.stringify(sysidlist); },
-
Vá para filtrar o navegador e procure a página de IU.
Selecione páginas de UI em IU do sistema.
-
Filtre o Nome e procure "agentdesktop" .
-
Altere a função "screenpop" no script Cliente.
Função atual:
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({ entidade: 'interaction', consulta: 'sys_id='+sysid });
Código de exemplo para o incidente:
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({ entidade: 'incidente', consulta: 'sys_ id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entidade: 'incidente', consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); }
Se a informação do chamador existir no CRM, e já houver um novo incidente aberto com esse contato, o aplicativo abre o incidente
Se as informações do chamador não existirem no CRM, o aplicativo abrirá um novo incidente
Se a informação do chamador existir no CRM, o aplicativo abrirá um novo incidente com detalhes pré-preenchidos
Visão geral
Esse caso de uso detalha o processo para adicionar uma coluna extra à tabela ServiceNow - webexcc_imp_activity e criar sn_openframe_phone_log na instalação do Webex CC do Conector ServiceNow CRM.
Por padrão, a tabela contém determinados campos e valores de sistema fora da caixa.
Você pode criar mais variáveis específicas ao negócio (Variáveis CAD) dentro do Designer de Fluxos WebexCC e adicionar as variáveis CAD dentro do log de atividades pós-chamada ServiceNow, bem como manter isso nos dados da tabela de atividades pós-chamada.
Essa é uma documentação de referência apenas - e mostra como fazer isso para uma variável CAD de exemplo chamada Nome do cliente que armazena o nome do cliente no IVR e publica isso no ServiceNow. Espera-se que os desenvolvedores parceiro+cliente ServiceNow configurem e gerenciem essa configuração, uma vez que é uma personalização para o conector existente. A Cisco fornece 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 à Tabela de Log de Atividades e Atividades usando a técnica descrita a seguir: |
Adicionar coluna à atividade IMP do WebexCC
-
Edite a tabela na versão do desenvolvedor do ServiceNow.
-
Vá até o navegador de filtros e procure 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 das Atividades do WebexCC
Adicione uma nova coluna, por exemplo, "Mapeamento de campo "CustomerName" .
Personalizar colunas da lista
Como o Serviço Agora recomenda, altere a ação Escolha de criar para ignorar.
Configurar lista de registros do telefone
Ir para Script Incluir
Adicione apenas uma linha "webexcc.u_customername=actInfo.CustomerName" para propUtils. |
Consulte a linha: webexcc.u_customername=actInfo.CustomerName; com um comentário de suporte.
var propUtils = Class.create(); propUtils.prototype = Object.extendsObject(global. AbstractAjax Encapsulaor,{ 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;//user.sys_id de retorno; else // retornar nulo; var grInt = novo GlideRecord('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysid retorno; }, setWebexcctable: function () { 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.ani; webexcc.dnis =actInfo.dnis; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; Webexcc.ringingtime =actInfo.ringingtime; webexcc.activitydate =actInfo.ActivityDate; Webexcc.callobject =actInfo.CallObject; Webexcc.calltype =actInfo.CallType; Webexcc.calldisposition=actInfo.CallDisposition; Esta linha é adicionada - para capturá-la no Log de atividades webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); Atividades no registro de incidente; var actInfoString =this.getParameter('actInfo'); var suser = novo GlideRecordSecure("sys_user"); suser.addQuery("telefone", isto.getParameter('ani')); suser.consulta(); 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; }, tipo: 'propUtils' });
Criar uma variável CAD no Designer de Fluxos
Adicione a variável CAD ao Layout da Área de Trabalho
Exemplo
"CadName1:SnowField1,CadName2:SnowField2" CadName1 é CustomerName SnowField1 também é usado como CustomerName, que é parte de exemplo de showen de ficção científica acima de "actInfo.CustomerName".
Demonstração de que a demo se torna uma demo,
Visualize a variável CAD recém-adicionada na tabela de Atividades WebexCC.
Criar variável CAD para Designer de Fluxos
Atualização do script Service Now
-
O navegador de filtros e a procura do script incluem:
Selecione a opção Script Inclui em Interface de Usuário do Sistema.
-
Filtre o nome com propUtils.
-
Altere o método "UserGetSysId" no campo Script .
Script atual:
UserGetSysId: função () { var opened_for; usuário var = 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 = {}; usuário var = novo GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;/return user.sys_id; var inc = new 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.initialize(); inc.caller_id=opened_for; inc.contact_type='phone'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } var grInt = novo GlideRecordSecure('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; retornar JSON.stringify(sysidlist);/sysid; },
-
Vá até o navegador de filtros e procure páginas deinterface de usuário.
Selecione a opção Páginas de UI em Interface de Usuário do sistema.
-
Filtre as páginas de interface de usuário com nome e procure agentdesktop.
-
Altere a função "screenpop" no campo script.
Função atual:
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({ entidade: 'interaction', consulta: 'sys_id='+sysid }); }
Código de exemplo para o incidente:
screenpop da função pop da tela(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callAssociatedData.Impact != null &> callSessionInfo.callAssociatedData.Impact != undefined) { Impact=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){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'telefone'); gaout.addParam('value', callerani); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('Impact', Impact); gaout.getXMLWait(); var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer(); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entidade: 'incident', consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); } else{ openFrameAPI.openServiceNowForm({ entidade: '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 incidentes novos ou reais, o aplicativo abrirá um novo incidente
Alterar o código no ServiceNow
Adicionar novas colunas à tabela "Atividade IMP do WebexCC" .
Clique em Atualizar.
Adicionar novas colunas à tabela "Registro do telefone"
Mapa de Transformação das Atividades do WebexCC
Clique em Update (Atualizar).
Alterações no script incluem
-
Vá até o navegador de filtro e procure por "script inclu".
Selecione o script Inclui em IU do sistema.
-
Filtre o nome com "propUtils".
-
Altere o método "setWebexcctable".
Novo código de exemplo para Incidente:
setWebexcctable: function () { 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="; exclua actInfo['interaction_sys_id']; excluir actInfo['incident_sys_id']; if( interactionsysid!= null &&sysysid != indefinido){ var inte = new 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.consulta(); 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 UI
-
Vá para filtrar o navegador e procure por "páginas de interface de usuário"
Selecione a opção Páginas de UI em Interface de Usuário do sistema.
-
Filtre as páginas de interface de usuário com nome e procure agentdesktop .
-
Altere a função "nowActivities and screenpop" no script.
Função atual:
função nowActivities(actInfo, ani) { var gaout = novo 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=sysObjson.sysid; actInfo.incident_sys_id=sysObjson.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); } função screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = novo 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({ entidade: 'incidente', consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entidade: 'incidente', consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction", JSON.stringify(sysObj)); }
Resultados após a atualização
As personalizações a seguir se aplicam às versões 1.0.5 e abaixo. Para as personalizações para as versões mais recentes 1.0.7 e superiores, siga as etapas acima. |
Personalização n.º 1 - Adicionar regras comerciais personalizadas para ocorrências de uso de fluxo de chamada
Para cada nova chamada no conector WebexCC CRM no ServiceNow, crie um Novo Registro de Incidente.
-
Pesquisar regras de negócios no navegador do filtro
-
Clique em Novo.
Código de exemplo para referência:
função customcti() { url var = null; nome do var = sysparm_caller_name; eid = sysparm_caller_id; telefone var = sysparm_caller_phone; var taskID = sysparm_task_id; var fQuery = sysparm_query; if (fQuery == null) fQuery = ''; var view = sysparm_view; if (view == null || view == '') view = "itil"; var userID = null; if (eid != null &ll&eid != '') { userID = UserGetSysId("employee_number",eid); } if (userID == null &ll &name != null &> name != '') { userID = UserGetSysId("name", nome); } if (userID == null &&phone != null && phone != '') { userID = UserGetSysId("phone", phone); } if (userID != null) { if (fQuery.length > 0) fQuery += "ˆ"; fQuery += "caller_id=" + userID; } if (url == null) { url = "incident.do?sys_id=-1"; if (fQuery != null) url += "&sysparm_query=" + fQuery; } answer = url; url de retorno; } função UserGetSysId(campo, valor) { usuário var = novo GlideRecord("sys_user"); user.addQuery(campo, valor); user.query(); if (user.next()) return user.sys_id; else return null; }
Exemplo de configuração da regra comercial
-
Ativar cliente para chamada
O processamento de Integração entre computação e telefonia (CTI) para Incidente é marcado como Verdadeiro.
-
Atualize a url do screenpop com a Regra de CTI personalizada"cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
O sysparm_cti_rule=nome em que 'nome' é o nome de uma função a ser invocada CTI Processamento , em vez de usar o script padrão.
Defina a função em uma entrada sys_script marcada para o cliente como callable.
Se precisar inserir, atualizar ou excluir quaisquer GlideRecords na função, chame uma função nãocliente à parte para efetuar as atualizações.
Para tornar um cliente de script callable, você deve marcar a caixa de seleção cliente-callable no formulário exibido quando o sys_script entrada é exibido. A caixa de seleção cliente-callable 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 recipiente de slush. |
Personalização nº 2 - Adicionar variável CAD na tabela de atividades Webex Central de contatos
Este artigo detalha o processo para adicionar uma coluna adicional à tabela ServiceNow - webexcc_activity criada após a instalação do Webex CC para o ServiceNow CRM Connector.
Por padrão, a tabela contém campos e valores de sistema fora de caixa.
Você pode criar mais variáveis específicas de negócios (Variáveis CAD) dentro do Designer de Fluxos WebexCC e adicionar essas variáveis CAD no log de atividades pós-chamada ServiceNowe manter isso nos dados da tabela de atividades pós-chamada.
|
-
Edite a tabela na versão do desenvolvedor do ServiceNow.
-
Vá para o
. -
Selecione a tabela de Atividades do WebexCC.
-
Por exemplo, CustomerName.
-
Selecione Layout de lista para atividades WebexCC.
Esta etapa não será necessária se você estiver usando a XML Do conjunto de atualizações - somente uma linha será necessária para ser adicionada "webexcc.u_customername=actInfo.CustomerName" ao propUtils. |



Consulte a linha com:webexcc.u_customername=actInfo.CustomerName; com um comentário de suporte.
var propUtils2 = Class.create(); propUtils2.prototype = Object.extendsObject(global. AbstractAjax Encapsulaor,{ 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: function () { 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.ani; webexcc.dnis =actInfo.dnis; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; Webexcc.ringingtime =actInfo.ringingtime; webexcc.activitydate =actInfo.ActivityDate; webexcc.callobject =actInfo.CallObject; webexcc.calltype =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; // Esta linha é adicionada - para capturá-la no Webexcc de atividade. u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); Atividades no registro de incidente; var actInfoString =this.getParameter('actInfo'); var suser = novo GlideRecordSecure("sys_user"); suser.addQuery("telefone", isto.getParameter('ani')); suser.consulta(); 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; }, tipo: 'propUtils2' });



Visualize a variável CAD recém-adicionada na tabela de Atividades WebexCC.

