Requisitos previos

Antes de integrar Webex Contact Center con la consola de CRM de ServiceNow, asegúrese de tener lo siguiente:

Siga uno de los dos métodos a continuación:

Para las instancias de desarrollador, recomendamos seguir los pasos de la guía de instancias para desarrolladores.

Si posee una instancia con licencia empresarial, siga las directrices para las instancias con licencia empresarial.

No se recomienda mezclar la aplicación con licencia empresarial con instancias de espacio aislado para desarrolladores.

En las secciones siguientes se describen los pasos para instalar el conector ServiceNow para instancias de desarrollador.

1

Inicia sesión en tu cuenta del portal para desarrolladores de ServiceNow y abre la consola de administración .

2

En el área Mi instancia del menú Cuenta , haga clic en Iniciar compilación.

3

En su instancia de desarrollador, desde el campo Navegador de filtros en la parte superior izquierda de la ventana, navegue hasta Complementos.

4

Busque el complemento Openframe que tiene el título Openframe. Es posible que deba desplazarse por la lista.

5

Haga clic en Instalar para instalar el complemento Openframe.

6

En el cuadro de diálogo Activar complemento , haga clic en Activar.

7

Cuando se complete la activación del complemento, haga clic en Cerrar y volver a cargar el formulario en el cuadro de diálogo Activación del complemento.

8

Para verificar la activación del plugin, desde el campo Navegador de filtros en la parte superior izquierda de la ventana, navegue hasta OpenFrame.

9

Haga clic en Configuraciones y asegúrese de que el complemento OpenFrame aparezca en la lista Configuraciones de OpenFrame.

1

Descargue el último archivo de XML del conjunto de actualizaciones del sistema disponible en el repositorio de github en esta ubicación : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

Nombre del archivo: webexcc-servicenow-update-setV(X).xml

2

En la instancia de ServiceNow, en el campo Navegador de filtros en la parte superior izquierda de la ventana, vaya a Conjuntos de actualizaciones del sistema> Conjuntos de actualizaciones para confirmar.

3

Haga clic en el vínculo Importar conjunto de actualizaciones desde XML .

4

Haga clic en Elegir archivo, seleccione el archivo XML conjunto de actualizaciones del sistema y, a continuación, haga clic en Cargar.

El conjunto de actualizaciones aparece en la lista Conjuntos de actualizaciones recuperados y está en estado Cargado .
5

En la lista Conjuntos de actualizaciones recuperados , haga clic en el nombre de archivo del conjunto de actualizaciones (vínculo) para abrir el conjunto de actualizaciones.

6

En la parte superior derecha de la ventana, haga clic en Vista previa del conjunto de actualizaciones para comprobar si hay problemas en el conjunto de actualizaciones.

7

Haga clic en Cerrar en el cuadro de diálogo Actualizar conjunto de vista previa una vez completada la vista previa.

8

Haga clic en Confirmar conjunto de actualización.

9

Haga clic en Cerrar en el cuadro de diálogo Confirmar conjunto de actualizaciones una vez que se haya completado la confirmación del conjunto de actualizaciones.

1

En el campo Navegador de filtros en la parte superior izquierda de la ventana, escriba sys_properties.list y presione enter.

2

En la página Propiedades del sistema, ordene las propiedades por fecha de actualización. Asegúrese de que puede ver las siguientes propiedades de Webex Contact Center:

3

Haga clic en agentdesktop_url para abrir la página agentdesktop_url propiedades del sistema.

4

En el campo Valor , escriba la dirección URL de Webex Contact Center Desktop según la región de operación.

5

Haga clic en Actualizar para guardar los cambios.

6

(Opcional) Para cambiar el nombre de la tabla de actividades, edite las propiedades de webexccactivitytable según sea necesario.

En la página Propiedades del sistema, haga clic en webexccactivitytable.

Cambie el campo Valor según sea necesario.

7

(Opcional) Agregue grupos de usuarios de las siguientes maneras:

  1. En el campo Navegador de filtros en la parte superior izquierda de la ventana, navegue a Grupos en Seguridad del sistema.

  2. Cree un nuevo grupo de usuarios o utilice uno existente.

  3. Haga clic en Edit (Editar).

  4. Busque sn_openframe_user en Recopilación y muévala a su grupo de usuarios.

  5. Haga clic en Guardar.

  6. Agregue el usuario como miembro del grupo.

1

En el campo Navegador de filtros, vaya a OpenFrame > Configurations .

2

Haga clic en New (Nuevo).

3

Introduzca las siguientes propiedades para la dirección URL:

  • Nombre: Webex Contact Center Desktop

  • Título: Webex Contact Center

  • Anchura: 550 (recomendado)

  • Altura: 600 (recomendado)

4

A la derecha del campo URL , haga clic en el botón Bloquear y agregue agentdesktop.do como URL. (Realice este paso para apuntar la configuración a la página de interfaz de usuario)

5

(Opcional) Seleccione los grupos de usuarios/agentes a los que desea asignar la configuración.

6

Haga clic en Submit (Enviar). La URL aparece como un vínculo.

7

Antes de intentar usar el teléfono OpenFrame, asegúrese de cargar el archivo JSON de diseño de escritorio personalizado de ServiceNow en el Portal de administración de Webex Contact Center. Para obtener más información, consulte Configurar el diseño de escritorio de ServiceNow en Webex centro de contacto.

1

Descarga el diseño de escritorio para ServiceNow desde https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

2

Actualice las propiedades del archivo de diseño de escritorio, si es necesario.

3

Vaya al Portal de administración de Webex Contact Center.

4

En la barra de navegación del Portal de administración, elija Provisioning > Desktop Layout.

5

Haga clic en Nuevo diseño e introduzca los detalles del diseño de escritorio.

6

Sube el archivo JSON de ServiceNow Desktop Layout.

7

Haga clic en Guardar para guardar la configuración.

Ahora puede iniciar Webex Contact Center Desktop en la consola de ServiceNow.

8

En el campo Navegador de filtros, vaya a Área de trabajo de operaciones deservicio.

La página de inicio de ServiceNow con Webex Contact Center Agent Desktop integrado con ServiceNow.

En las secciones siguientes se describen los pasos para instalar el conector ServiceNow para instancias empresariales con licencia.

1

Inicia sesión en tu cuenta del portal para desarrolladores de ServiceNow y abre la consola de administración .

2

En el área Mi instancia del menú Cuenta , haga clic en Iniciar compilación.

3

En su instancia de desarrollador, desde el campo Navegador de filtros en la parte superior izquierda de la ventana, navegue hasta Complementos.

4

Busque el complemento Openframe que tiene el título Openframe. Es posible que deba desplazarse por la lista.

5

Haga clic en Instalar para instalar el complemento Openframe.

6

En el cuadro de diálogo Activar complemento , haga clic en Activar.

7

Cuando se complete la activación del complemento, haga clic en Cerrar y volver a cargar el formulario en el cuadro de diálogo Activación del complemento.

8

Para verificar la activación del plugin, desde el campo Navegador de filtros en la parte superior izquierda de la ventana, navegue hasta OpenFrame.

9

Haga clic en Configuraciones y asegúrese de que el complemento OpenFrame aparezca en la lista Configuraciones de OpenFrame.

1

En el campo Navegador de filtros en la parte superior izquierda de la ventana, ingrese sys_properties.list.

2

En la página Propiedades del sistema, ordene las propiedades por fecha de actualización. Asegúrese de que puede ver las siguientes propiedades de Webex Contact Center:

3

Haga clic en agentdesktop_url para abrir la página agentdesktop_url propiedades del sistema.

4

En el campo Valor , escriba la dirección URL de Webex Contact Center Desktop según la región de operación.

5

Haga clic en Actualizar para guardar los cambios.

6

(Opcional) Para cambiar el nombre de la tabla de actividades, edite las propiedades x_caci_webexcc.webexccactivitytable según sea necesario.

  1. En la página Propiedades del sistema, haga clic en x_caci_webexcc.webexccactivitytable.

  2. Cambie el campo Valor según sea necesario.

7

(Opcional) Agregue grupos de usuarios de las siguientes maneras:

  1. En el campo Navegador de filtros en la parte superior izquierda de la ventana, navegue a Grupos en Seguridad del sistema.

  2. Haga clic en Editar y agregue los siguientes roles:

    • sn_openframe_user

    • x_caci_webexcc.agente

    • agent_workspace_user

    • x_caci_webexcc.webexcc_imp_activity_user

    • x_caci_webexcc.webex_contact_center

1

En el campo Navegador de filtros, vaya a OpenFrame > Configurations .

2

Haga clic en New (Nuevo).

3

Introduzca las siguientes propiedades para la dirección URL:

  • Nombre: Webex Contact Center Desktop

  • Título: Webex Contact Center

  • Anchura: 550 (recomendado)

  • Altura: 600 (recomendado)

4

A la derecha del campo URL , haga clic en el botón Bloquear y agregue x_caci_webexcc_agentdesktop.do como URL. (Realice este paso para apuntar la configuración a la página de interfaz de usuario)

5

(Opcional) Seleccione los grupos de usuarios/agentes a los que desea asignar la configuración.

6

Haga clic en Submit (Enviar). La URL aparece como un vínculo.

7

En el campo Navegador de filtros, vaya a Área de trabajo de operaciones deservicio.

La página de inicio de ServiceNow con Webex Contact Center Agent Desktop integrado con ServiceNow.

8

(Opcional) En la lista Grupo de usuarios, mueva los grupos de usuarios que pueden acceder a Webex Contact Center Desktop de Disponible a Seleccionado.

9

Antes de intentar usar el teléfono OpenFrame, asegúrese de cargar el archivo JSON de diseño de escritorio personalizado de ServiceNow en el Portal de administración de Webex Contact Center. Para obtener más información, consulte Configurar el diseño de escritorio de ServiceNow en Webex centro de contacto.

1

Descarga el diseño de escritorio para ServiceNow desde https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

2

Actualice las propiedades del archivo de diseño de escritorio, si es necesario.

3

Vaya al Portal de administración de Webex Contact Center.

4

En la barra de navegación del Portal de administración, elija Provisioning > Desktop Layout.

5

Haga clic en Nuevo diseño e introduzca los detalles del diseño de escritorio.

6

Sube el archivo JSON de ServiceNow Desktop Layout.

7

Haga clic en Guardar para guardar la configuración.

Ahora puede iniciar Webex Contact Center Desktop en la consola de ServiceNow.

8

En el campo Navegador de filtros, vaya a Área de trabajo de operaciones deservicio.

La página de inicio de ServiceNow con Webex Contact Center Agent Desktop integrado con ServiceNow.

1

En el campo Navegador de filtros, vaya a Incidentes > Incidente abierto.

2

Haga clic con el botón secundario en el campo Llamante y haga clic en Configurar diccionario.

3

Agregue atributos separados por comas"ref_contributions=show_phone,.

Ahora puedes empezar a usar Webex Contact Center Desktop en la consola de ServiceNow.

4

En el campo Navegador de filtros, vaya a Área de trabajo de operaciones de servicio.

La página de inicio de ServiceNow con Webex Contact Center Agent Desktop integrado con ServiceNow.

Agent Desktop en la consola de ServiceNow

Antes de realizar llamadas de marcado externo, asegúrese de hacer lo siguiente:

  • Cree el punto de entrada de marcado externo y configure una estrategia de punto de entrada de marcado externo.

  • Habilite ANI de marcado externo para el perfil de agente.

  • Establezca la ANI de marcado externo en una asignación de número de marcado a punto de entrada.

Para obtener más información, consulte el capítulo Aprovisionamiento de la Guía de configuración y administración de Cisco Webex Contact Center.

En el campo Navegador de filtros, vaya a Área de trabajo de operaciones deservicio.

La página de inicio de ServiceNow con Webex Contact Center Agent Desktop integrado con ServiceNow.

Para obtener información sobre cómo usar Desktop, consulte la ficha Agente de la ayuda de Webex Contact Center.

Descripción general

En este artículo se describen varias formas de personalizar las reglas empresariales para el conector de ServiceNow CRM. Detalla cómo puedes personalizar los casos de uso en función de las reglas empresariales específicas de ServiceNow.

El cliente debe autogestionar estos casos de uso en ServiceNow. La configuración es específica de ServiceNow y no Webex software o experiencia de Contact Center.

Esta es una documentación de referencia para ayudar a la modificación de las reglas de negocio. Los desarrolladores de ServiceNow crearán y administrarán las reglas de negocio y proporcionarán soporte.

Cisco sólo proporciona documentación de muestra.

En las secciones siguientes se proporciona información detallada sobre cómo configurar, habilitar y administrar el widget Acciones para instancias empresariales y de desarrollador.

Confirmar el conjunto de actualizaciones para el widget de acciones

Para las instancias empresariales con licencia, instale la aplicación Webex Contact Center más reciente de la tienda ServiceNow.

Para configurar el widget Acciones para las instancias de desarrollador, descargue el último archivo de XML del conjunto de actualizaciones del sistema disponible en el repositorio de github en esta ubicación: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. El nombre del archivo es webexcc-servicenow-update-setv7-1-ActionsWidget.xml. Para confirmar el conjunto de actualizaciones para el widget Acciones, consulte los pasos 2 a 9 en Confirmar el conjunto de actualización.

Activar widget Acciones

Utilice la propiedad isWidgetDisplayEnabled para habilitar el widget Acciones. No debe modificar el valor de esta propiedad en la sección sin periféricos del diseño de escritorio personalizado. La propiedad siempre se establece en false en la sección sin periféricos del diseño de escritorio personalizado. Debe actualizar el valor de la propiedad solo en la sección de panel del diseño de escritorio personalizado.

Una vez que habilite el widget Acciones en el diseño de escritorio personalizado, puede realizar las siguientes acciones:

  • Administrar registros de actividad: haga clic en Ver/Editar registro de actividad para ver la lista de registros de actividad asociados con la persona que llama.
  • Asociar objetos de CRM: haga clic en Asociar a registros de actividad para agregar objetos de CRM como tipo de llamada (entrante o saliente), objeto de llamada, notas de llamada, etc. al registro de actividad.
  • Gestionar incidentes: haga clic en Crear incidente. Se crea un nuevo incidente con los detalles de la persona que llama rellenados previamente. Puede realizar las actualizaciones necesarias para el incidente. Puede optar por modificar el tipo de registro de incidente a caso, módulo de recursos humanos, etc. en función de sus requisitos. Para cambiar el tipo de registro, modifique el valor de la propiedad typeOfRecord en la configuración del widget Acciones. Por ejemplo:
    { "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" } } ] }
  • Agregar notas de llamadas en vivo: puede capturar información adicional sobre la llamada en el área de texto y finalizar la llamada. Puede ver estas notas agregadas como notas de llamada en el registro de actividad.

Cambio de código en ServiceNow

El script incluye cambios
  1. Vaya al navegador de filtros y busque El script incluye.

    Seleccione Script Includes (El script incluye ) en IU del sistema.

  2. Filtrar el nombre y buscar propUtils.

  3. Cambiar el método UserGetSysId En el guión.

    Curent:

    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; },

    Nuevo código de ejemplo para el incidente:

    UserGetSysId: function () { var opened_for; //Cambios relacionados con incidentes 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=opened_for; inc.contact_type='phone'; inc.short_description='Llamada recibida de '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'teléfono'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },

Cambio de método en las páginas de interfaz de usuario
  1. Vaya al navegador de filtros y busque la página de interfaz de usuario.

    Seleccione las páginas de interfaz de usuario en IU del sistema.

  2. Filtrar el nombre y buscar AgentDesktop.

  3. Cambie el screenpop Función en script de cliente.

    Función actual:

    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: 'interaction', query: 'sys_id='+sysid });

    Código de ejemplo para el 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: 'incident', query: 'sys_ id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }

Si la información del llamante existe en CRM y ya hay una nueva incidencia abierta con este contacto, la aplicación abre la incidencia en curso

Si la información del llamante no existe en CRM, la aplicación abre un nuevo incidente

Si la información del llamante existe en CRM, la aplicación abre un nuevo incidente con detalles rellenados previamente

Descripción general

Este caso de uso detalla el proceso para agregar una columna adicional a la tabla ServiceNow: webexcc_imp_activity y crear sn_openframe_phone_log tras la instalación de Webex CC para ServiceNow CRM Connector.

De forma predeterminada, la tabla contiene ciertos campos y valores del sistema listos para usar.

Puede crear más variables específicas de la empresa (variables CAD) dentro del diseñador de flujo de WebexCC y agregar las variables CAD dentro del registro de actividad posterior a la llamada de ServiceNow, así como conservar esto en los datos de la tabla de actividad posterior a la llamada.

Esta es solo una documentación de referencia, y muestra cómo hacerlo para una variable CAD de muestra llamada Nombre del cliente que almacena el nombre del cliente dentro del IVR y lo publica en ServiceNow.

Se espera que los desarrolladores de partner+customer ServiceNow configuren y administren esta configuración, ya que es una personalización del conector existente.

Cisco solo proporciona las técnicas sobre cómo personalizar y ampliar el conector.

A partir de este artículo, el equipo de Cisco ha validado el soporte para la adición de variables CAD al registro de actividad y la tabla de actividad utilizando la técnica que se describe a continuación:

Agregar columna a la actividad IMP de WebexCC

  1. Edita la tabla en la versión para desarrolladores de ServiceNow.

  2. Vaya al navegador de filtros y busque studio.

    Seleccionar Webex Contact Center

    o

  3. Seleccione la opción Actividad IMP de WebexCC mesa

  4. Agregue una nueva columna, por ejemplo, Nombre del cliente

Agregar columna al registro del teléfono

  1. Edite la tabla de registro del teléfono.

  2. Agregue una nueva columna, por ejemplo, Nombre del cliente.

Mapa de transformación de actividad de WebexCC

Agregue una nueva columna, por ejemplo, Nombre del cliente Mapeo de campos.

Personalizar columnas de lista

Como recomienda Service Now, cambie la acción Elegir de crear a ignorar.

Configurar lista de registros telefónicos

Ir a Incluir script

Agregar solo una línea webexcc.u_customername=actInfo.CustomerName A propUtils.

Script de ejemplo

Vea la línea: webexcc.u_customername=actInfo.CustomerName; con un comentario de apoyo.

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('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= 'teléfono'; grInt.opened_for= opened_for; var sysid=grInt.insert(); devolver 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 línea se agrega - para capturarla en el registro de actividad webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); Actividades en el 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(); } } } devolver sys_id; }, tipo: 'propUtils' });

Crear una variable CAD en el diseñador de Flow

Agregar la variable CAD al diseño del escritorio

Ejemplo

"CadName1:SnowField1,CadName2:SnowField2" CadName1 es CustomerName SnowField1 también se utiliza como CustomerName, que forma parte del ejemplo scirpt mostrado arriba de "actInfo.CustomerName".

Capturas de pantalla de demostración

Vea la variable CAD recién agregada en la tabla Actividad de WebexCC.

Crear variable CAD para Flow Designer

Urgencia del incidente

Impacto del incidente

Actualización de script de Service Now

Las actualizaciones del script incluyen

  1. Vaya al navegador de filtros y busque script incluye

    Seleccione la opción Script Includes (El script incluye ) en IU del sistema.

  2. Filtre el nombre con propUtils.

  3. Cambiar el método UserGetSysId En el campo Guión .

    Guión actual:

    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; },

    Nuevo código de ejemplo para el incidente:

    UserGetSysId: function () { 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=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='Llamada recibida de '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'teléfono'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },

Un cambio de método en las páginas de interfaz de usuario
  1. Vaya al navegador de filtros y busque páginas deinterfaz de usuario.

    Seleccione la opción Páginas de interfaz de usuario en IU del sistema.

  2. Filtre las páginas de interfaz de usuario con nombre y busque agentdesktop .

  3. Cambie el screenpop En el campo Script.

    Función actual:

    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: 'interaction', query: 'sys_id='+sysid }); }

    Código de ejemplo para el incidente:

    screen pop function 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('field', 'phone'); gaout.addParam('value', callerani); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('Impacto', Impacto); gaout.getXMLWait(); var sysid = gaout.getAnswer(); 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({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }

Si la información del autor de la llamada existe en CRM y no hay ningún incidente nuevo o en curso, la aplicación abre un nuevo incidente

Cambiar el código en ServiceNow

Agregar nuevas columnas a la carpeta Actividad IMP de WebexCC mesa

Abra el Actividad IMP de WebexCC mesa

Agregar una nueva columna - InteractionsNumber

Agregar una nueva columna: IncidentNumber

Haga clic en Actualizar.

Agregar nuevas columnas a la carpeta Registro telefónico mesa

Abra el Registro telefónico mesa

Agregar una nueva columna - InteractionsNumber

Agregar una nueva columna: IncidentNumber

Mapa de transformación de actividad de WebexCC

Abrir Transformar mapa Desde el navegador de filtros

Haga clic en TransformMap de actividad de WebexCC

Agregar nuevo - para Mapa de números de interacción

Agregar nuevo - para Mapa de números de incidentes

Haga clic en Update (Actualizar).

Los cambios en el script incluyen

  1. Vaya al navegador de filtros y busque "script includes".

    Seleccione Script Includes (El script incluye ) en IU del sistema.

  2. Filtrar el nombre con propUtils.

  3. Cambiar el método setWebexcctable.

    Nuevo código de ejemplo 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=""; delete actInfo['interaction_sys_id']; suprímase 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','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(); } devolver sys_id; },

Cambios de método en las páginas de interfaz de usuario

  1. Vaya al navegador de filtros y busque Páginas de interfaz de usuario

    Seleccione la opción Páginas de interfaz de usuario en IU del sistema.

  2. Filtre las páginas de interfaz de usuario con nombre y busque agentdesktop .

  3. Cambie el nowActividades y screenpop Función en el script.

    Función actual:

    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 ejemplo para el incidente:

    function 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: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); } 

Resultados después de la actualización

Las siguientes personalizaciones se aplican a las versiones 1.0.5 y anteriores. Para las personalizaciones de las versiones más recientes 1.0.7 y superiores, siga los pasos anteriores.

Personalización # 1 - Agregar reglas de negocio personalizadas para casos de uso de flujo de llamadas

Crear un nuevo registro de incidentes para cada llamada

Para cada nueva llamada al conector de WebexCC CRM en ServiceNow, cree un Nuevo registro de incidentes.

  1. Buscar reglas de negocio en el navegador de filtros

  2. Haga clic en New (Nuevo).

    Código de ejemplo como referencia:

    function customcti() { var url = null; var name = sysparm_caller_name; eid = sysparm_caller_id; var phone = 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 && eid != '') { userID = UserGetSysId("employee_number",eid); } if (userID == null && name != null && name != '') { userID = UserGetSysId("name", nombre); } 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; } function UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query(); if (user.next()) return user.sys_id; else return null; }

    Ejemplo de configuración de la regla de negocio

  3. Habilitar cliente llamable

    El procesamiento de integración de telefonía informática (CTI) para incidentes está marcado como Verdadero.

  4. Actualice la url de screenpop con la regla de CTI personalizada" cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="

Ejemplo

Se va a invocar el sysparm_cti_rule=name, donde 'name ' es el nombre de una función CTI Procesando en lugar de utilizar el script predeterminado.

Defina la función en una entrada de sys_script marcada como cliente llamable.

Si debe insertar, actualizar o eliminar cualquier GlideRecords en la función, llame a una función independiente a la que no se pueda llamar al cliente para realizar las actualizaciones.

Para que una secuencia de comandos se pueda llamar al cliente, debe activar la casilla de verificación Llamable al cliente en el formulario que aparece cuando se muestra la entrada de sys_script.

La casilla de verificación al que se puede llamar al cliente no aparece de forma predeterminada. Para ver, debe modificar los campos que se muestran en el formulario utilizando el icono de engranaje y el mecanismo de cubo de granizado.

Referencias

Personalización # 2 - Agregar variable CAD en Webex tabla de actividad de Contact Center

Descripción general

En este artículo se detalla el proceso para agregar una columna adicional a la tabla ServiceNow, webexcc_activity que se crea tras la instalación de Webex CC para ServiceNow CRM Connector.

De forma predeterminada, la tabla contiene campos y valores del sistema listos para usar.

Potencialmente, puede crear más variables específicas de la empresa (variables CAD) dentro del diseñador de flujo de WebexCC y agregar esas variables CAD dentro del registro de actividad posterior a la llamada de ServiceNow, y conservarlas en los datos de la tabla de actividad posterior a la llamada.

  • Esta es solo documentación de referencia, y muestra cómo hacerlo para una variable CAD de muestra llamada Nombre del cliente que almacena el nombre del cliente dentro del IVR y lo publica en ServiceNow.

  • Los desarrolladores de partner+customer ServiceNow configurarán y administrarán esta configuración, ya que es una personalización del conector existente.

  • Cisco solo proporcionará las técnicas sobre cómo personalizar y extender el conector.

  • A partir de este artículo, el equipo de Cisco ha validado el soporte para la adición de variables CAD al registro de actividad y la tabla de actividad utilizando la técnica que se describe a continuación.

Agregar columna a la actividad de WebexCC
  1. Edita la tabla en la versión para desarrolladores de ServiceNow.

  2. Vaya al centro > contacto Webex estudio.

  3. Seleccione la tabla de actividad de WebexCC.

  4. Por ejemplo, NombreDeCliente.

  5. Seleccione Diseño de lista para la actividad de WebexCC.

Crear un nuevo script incluye

Este paso no es necesario si está utilizando el conjunto de actualizaciones XML - Sólo se requiere agregar una línea "webexcc.u_customername=actInfo.CustomerName" a propUtils.

Script de ejemplo

Vea la línea con:webexcc.u_customername=actInfo.CustomerName; con un comentario de apoyo.

var propUtils2 = Class.create(); propUtils2.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); }, 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 línea se agrega - para capturarla en el registro de actividad webexcc. u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); Actividades en el 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(); } } } devolver sys_id; }, tipo: 'propUtils2' });
Editar la página de interfaz de usuario con un nuevo nombre de script

Crear una variable CAD en el diseñador de Flow

Agregar la variable CAD al diseño del escritorio

Capturas de pantalla de demostración

Vea la variable CAD recién agregada en la tabla Actividad de WebexCC.