Ingrato Webex Contact Center com ServiceNow (Versão 1 — Legado)
Pré-requisitos
Atualmente, esse recurso se aplica apenas a agentes.
Antes de integrar o Webex Contact Center ao console ServiceNow CRM, assegure-se de ter os seguintes itens:
-
Acesso ao Webex Contact Center.
-
O acesso do administrador ao Hub de controle no https://admin.webex.com e no Webex Contact Center Management Portal. As URLs do Portal de Gerenciamento são específicas à sua região.
-
Um agente com acesso à Área de trabalho. A URL da Área de trabalho é específica à sua região.
-
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 artigo 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 Sign up and Start Building.
-
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)
-
- As edições do ServiceNow que Webex Contact Center suportam são Vancouver, Utah, Tokya, Washington e Xanadu. Para obter mais informações, consulte Webex Contact Center Integração com o ServiceNow.
Siga um dos dois métodos abaixo:
Para casos de desenvolvedor, recomendamos seguir as etapas sob o guia de instância do desenvolvedor.
Se você possuir uma instância licenciada por empresa, siga as diretrizes para instâncias licenciadas por 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 mais recente do Conjunto de Atualizações do Sistema 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 no link Importar atualização do conjunto de XML . |
4 |
Clique em Escolher arquivo, selecione o conjunto de atualização 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 |
2 |
Na página Propriedades do sistema, classifique as propriedades pela data atualizada. Verifique se você pode ver as seguintes propriedades do Webex Contact Center: |
3 |
Clique em agentdesktop_url para abrir a página agentdesktop_url de propriedade do sistema. |
4 |
No campo Valor , insira a URL da área de trabalho Webex Contact Center de acordo com a região da 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 em 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 |
Acesse o Webex Contact Center Management Portal. |
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 você pode iniciar o Webex Contact Center Desktop no console ServiceNow. |
8 |
No campo Navegador de filtro , navegue até a . |
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 têm 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 |
2 |
Na página Propriedades do sistema, classifique as propriedades pela data atualizada. Verifique se você pode ver as seguintes propriedades do Webex Contact Center: |
3 |
Clique em agentdesktop_url para abrir a página agentdesktop_url de propriedade do sistema. |
4 |
No campo Valor , insira a URL da área de trabalho Webex Contact Center de acordo com a região da 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é a . |
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 em 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 |
Acesse o Webex Contact Center Management Portal. |
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 você pode iniciar o Webex Contact Center Desktop no console ServiceNow. |
8 |
No campo Navegador de filtro , navegue até a . |
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é a . |
Suportamos iniciar a sessão em Agent Desktop usando o WebRTC for Salesforce (SFDC) e Microsoft Dynamics (MS Dynamics) Connectors apenas.
Agent Desktop no console ServiceNow
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 Configuração e Administração.
No campo Navegador de filtro , navegue até a .
Para obter informações sobre como usar a Área de trabalho, consulte o Tab Agente na ajuda Webex Contact Center.
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 do software Webex Contact Center ou da experiência.
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.
Cisco fornece apenas a documentação de exemplo.
As seções a seguir fornecem detalhes sobre como configurar, habilitar e gerenciar ações do widget para instâncias do desenvolvedor e da empresa.
Confirmar o conjunto de atualização para ações do Widget
Para instâncias empresariais licenciadas, instale o aplicativo Webex Contact Center mais recente da loja ServiceNow.
Para configurar o widget Ações para as instâncias do desenvolvedor, faça o download do arquivo XML mais recente Configuração do Sistema disponível no novo 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ção para o widget Ações, consulte as etapas 2 a 9 em Confirmar o Conjunto de Atualizações.
Habilitar widget Ações
Use a propriedade isWidgetDisplayEnabled para habilitar o widget Ações. Você não deve modificar o valor dessa propriedade na seção sem cabeça do layout de desktop 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 habilitar o widget Ações no layout personalizado da área de trabalho, você pode executar as seguintes ações:
- Gerenciar registros de atividades—Clique em Exibir/Editar Registro de Atividade para exibir a lista de registros de atividades associados ao chamador.
- Associar objetos CRM—Clique em Associar aos registros de atividades para adicionar objetos CRM, como tipo de chamada (entrada ou saída), objeto de chamada, notas de chamada e assim por diante no registro de atividade.
- Gerenciar incidentes—Clique em Criar incidente. Um novo incidente é criado com os detalhes do chamador preenchidos automaticamente. 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 seus requisitos. Para alterar o tipo de registro, modifique o valor da propriedade typeOfRecord na configuração do widget 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 finalização da chamada. É possível ver essas notas adicionadas como notas de chamada no registro de atividade.
Alteração de código no ServiceNow
O Script inclui alterações-
Vá para o navegador de filtros e pesquise por
O script inclui
.Selecione Script Includes em Interface do usuário do sistema.
-
Filtre o Nome e pesquise por
propUtils
. -
Alterar o método
UserGetSysId
no Script.Atual:
UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('campo'),this.getParameter('valor')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); return sysid; },
Novo código de exemplo para o incidente:
UserGetSysId: function () { var opened_for; //Alterações relacionadas ao incidente var sysidlist = {}; var user = new 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=aberto_para; inc.contact_type='telefone'; inc.short_description='Chamada recebida de' + this.getParameter('valor'); sysidlist.incsysid=inc.Insert(); } } var grInt = new GlideRecordSecure('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.opened_for= aberto_para; var sysid=grInt.Insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },
-
Acesse o navegador de filtros e pesquise por
página da interface do usuário
.Selecione Páginas da interface do usuário em Interface do usuário do sistema.
-
Filtre o Nome e pesquise por
Agente de desktop
. -
Mudar o
Tela pop
Função no script do cliente .Função atual:
// função de tela pop screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('campo', 'telefone'); gaout.addParam('valor', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid });
Código de exemplo para o incidente:
// função de tela pop 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(); // Para alterações relacionadas a incidentes var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: '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 as informações do chamador existirem no CRM e já houver um novo incidente aberto com esse contato, o aplicativo abrirá o incidente em andamento
Se as informações do chamador não existirem no CRM, o aplicativo abre um novo incidente
Se as informações do chamador existirem no CRM, o aplicativo abrirá 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 CC Webex para o ServiceNow CRM Connector.
Por padrão, a tabela contém determinados campos e valores do sistema prontos para uso.
Você pode criar mais variáveis específicas de negócios (Variáveis CAD) dentro do designer de fluxo do WebexCC e adicionar as variáveis CAD dentro do log de atividades de chamadas POST do ServiceNow, bem como persistir isso nos dados da tabela de atividades de chamadas POST.
Esta é apenas uma documentação de referência e mostra como fazer isso para uma variável CAD de exemplo chamada Nome do Cliente, que armazena o nome do cliente dentro de IVR e o publica no ServiceNow.
Espera-se que os desenvolvedores do ServiceNow parceiro+cliente configurem e gerenciem essa configuração, pois é uma personalização do conector existente.
Cisco fornece apenas técnicas sobre como personalizar e estender o conector.
A partir deste artigo, a equipe Cisco validou o suporte para a adição da variável CAD ao Log 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 de filtros e procure por estúdio.
Selecionar
Webex Contact Center
ou
-
Selecione o
Atividade IMP do WebexCC
mesa -
Adicione uma nova coluna, por exemplo,
Nome do Cliente
Adicionar coluna ao registro do telefone
-
Edite a tabela de registro do telefone.
-
Adicione uma nova coluna, por exemplo,
Nome do Cliente
.
Mapa de transformação de atividades do WebexCC
Adicione uma nova coluna, por exemplo, Nome do Cliente
Mapeamento de campo.
Personalizar colunas da lista
Conforme recomendado pelo Service Now, altere a ação Choice de criar para ignorar.
Configurar lista de registros telefônicos
Vá para Script Incluir
Adicione apenas uma linha webexcc.u_customername=actInfo.NomeDoCliente
Para propUtils.
Veja a linha: webexcc.u_customername=actInfo.NomeDoCliente; com um comentário de apoio.
var propUtils = Class.create(); propUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{ 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('campo'),this.getParameter('valor')); user.query(); if (user.next()) aberto_para=user.sys_id;//retornar user.sys_id; // senão // retornar nulo; var grInt = new GlideRecord('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.aberto_para= aberto_para; var sysid=grInt.Insert(); retornar sysid; }, 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 foi 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 = new GlideRecordSecure("sys_user"); suser.addQuery("telefone", 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(); } } } return sys_id; }, type: 'propUtils' });
Crie uma variável CAD no Flow Designer
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 faz parte do script de exemplo mostrado acima "actInfo.CustomerName".
Capturas de tela de demonstração
Veja a variável CAD recém-adicionada na tabela de atividades do WebexCC.
Criar variável CAD para o Flow Designer
Urgência do incidenteImpacto do incidente
Atualização do script do Service Now
Atualizações no script incluem
-
Vá até o navegador de filtros e pesquise por
o script inclui
Selecione o O script inclui opção sob Interface do sistema.
-
Filtrar o Nome com
propUtils
. -
Alterar o método
UserGetSysId
no Roteiro campo.Roteiro atual:
UserGetSysId: function () { var opened_for; var usuário = novo GlideRecord("sys_user"); usuário.addQuery(this.getParameter('campo'),this.getParameter('valor')); usuário.query(); if (usuário.next()) opened_for=usuário.sys_id; var grInt = novo GlideRecord('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.opened_for= aberto_para; var sysid=grInt.Insert(); return sysid; },
Novo código de exemplo para o incidente:
UserGetSysId: function () { var opened_for; var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('campo'),this.getParameter('valor')); user.query(); if(user.next()) { opened_for=user.sys_id;//retornar user.sys_id; var inc = new GlideRecordSecure('incidente'); inc.addQuery('id do chamador', opened_for); inc.addQuery('estado','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.initialize(); inc.caller_id=aberto_para; inc.contact_type='telefone'; inc.urgency=this.getParameter('IncUrgência'); inc.impact=this.getParameter('Impacto'); inc.short_description='Chamada recebida de' + this.getParameter('valor'); sysidlist.incsysid=inc.Insert(); } } var grInt = new GlideRecordSecure('interação'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefone'; grInt.opened_for= aberto_para; var sysid=grInt.Insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
Vá até o navegador de filtros e pesquise por
Páginas da interface do usuário
.Selecione o Páginas da interface do usuário opção sob Interface do sistema.
-
Filtrar o Páginas da interface do usuário com Nome e procurar por
agente de desktop
. -
Mudar o
Tela pop
Função no campo de script.Função atual:
// função de tela pop screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('campo', 'telefone'); gaout.addParam('valor', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid }); }
Código de exemplo para o incidente:
// função pop-up de tela screenpop(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('campo', 'telefone'); gaout.addParam('valor', chamadorani); 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: '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)); }
Se as informações do chamador existirem no CRM e não houver nenhum incidente novo ou em andamento, o aplicativo abrirá um novo incidente
Alterar o código no ServiceNow
Adicionar novas colunas ao Atividade IMP do WebexCC
mesa
Abra o Atividade IMP do WebexCCmesa
Clique em Atualizar.
Adicionar novas colunas ao Registro de telefone
mesa
Abra o Registro de telefone
mesa
Mapa de transformação de atividades do WebexCC
Abrir Transformar mapa
Do navegador de filtros
Clique em Transformação de atividade do WebexCC
Clique em Update (Atualizar).
Mudanças no script incluem
-
Vá até o navegador de filtros e procure por "script includes".
Selecione Script Includes em Interface do usuário do sistema.
-
Filtrar o Nome com
propUtils
. -
Alterar o método
definirWebexcctable
.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()) { //Atividades no registro de incidente; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactionysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; excluir actInfo['interaction_sys_id']; excluir actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid != undefined){ 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','Fechado Concluído'); inte.work_notes='Atualizar Estado para fechado.'; 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("telefone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incidente'); inc.addQuery('id_do_chamador', suser.sys_id); inc.addQuery('estado','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); se (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 da interface do usuário
-
Vá para o navegador de filtros e pesquise por
Páginas da interface do usuário
Selecione o Páginas da interface do usuário opção sob Interface do sistema.
-
Filtrar as páginas da IU com Nome e procurar por
agente de desktop
. -
Mudar o
nowActivities e screenpop
Função no script.Função atual:
função 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); } função screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('campo', 'telefone'); gaout.addParam('valor', 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 seguintes personalizações se aplicam às versões 1.0.5 e anteriores. Para personalizações para as versões mais recentes 1.0.7 e superiores, siga os passos acima.
Personalização nº 1 - Adicionar regras de negócios personalizadas para casos de uso de fluxo de chamadas
Crie um novo registro de incidente para cada chamadaPara cada nova chamada no conector WebexCC CRM no ServiceNow, crie um novo registro de incidente.
Pesquisar Regras de Negócios no navegador de filtros
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 telefonia e computador (CTI) para Incidente é marcado como Verdadeiro.
Atualize a url do screenpop com a CTI Rule personalizada" cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
O sysparm_cti_rule=nome em que 'nome' é o nome de uma função deve ser invocado para 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 Insert, 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 - Adicione a variável CAD na tabela Webex Contact Center atividade
Visão geralEste 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 dentro do log de atividades de chamadas ServiceNowPOST, e manter isso até os dados da tabela de atividades de chamadasPOST.
-
Essa é apenas a documentação de referência - e mostra como fazer isso para uma variável CAD de exemplo chamada Nome do cliente que armazena o nome do cliente dentro do IVR e publica isso no ServiceNow.
-
Os desenvolvedores partner+customer ServiceNow configurarão e gerenciarão essa configuração, uma vez que é uma personalização para o conector existente.
-
Cisco somente fornecerá as técnicas sobre como personalizar e estender o conector.
-
A partir deste artigo, a equipe Cisco validou o suporte para a adição da variável CAD à Tabela de Log e Atividade de Atividades usando a técnica descrita abaixo.
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 o Conjunto de atualizações XML - somente uma linha deverá ser adicionada "webexcc.u_customername=actInfo.CustomerName" ao propUtils.

Exemplo de script
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' });
Editar a página de interface de usuário com um novo nome de script
Criar uma variável CAD no Designer de Fluxos
Adicione a variável CAD ao Layout da Área de Trabalho
Demonstração de que a demo se torna uma demo,
Visualize a variável CAD recém-adicionada na tabela de Atividades WebexCC.
