Integrar Webex Contact Center con ServiceNow (versión 1: heredado)
Al integrar el Centro de contacto de Webex con la consola ServiceNow CRM, puede iniciar el escritorio del Centro de contacto de Webex desde ServiceNow.
Requisitos previos
Actualmente, esta característica solo se aplica a los agentes.
Antes de integrar el Centro de contacto de Webex con la consola ServiceNow CRM, asegúrese de tener lo siguiente:
-
Acceso al Centro de contacto deWebex.
-
Acceso del administrador al Control Hub en https://admin.webex.com y al portal de administración de Webex Contact Center. Las URL del portal de administración son específicas de su región.
-
América del Norte: https://portal.wxcc-us1.cisco.com
-
Reino Unido: https://portal.wxcc-eu1.cisco.com
-
Singapur: https://portal-v2.wxcc-sg1.cisco.com
-
-
Un agente con acceso al escritorio. La URL del escritorio es específica de su región.
-
América del Norte: https://desktop.wxcc-us1.cisco.com
-
Reino Unido: https://desktop.wxcc-eu1.cisco.com
-
Singapur: https://desktop.wxcc-sg1.cisco.com
-
-
Acceso del agente al siguiente dominio que se agrega en la Lista de permitidos de política de seguridad de contenido:
-
*.service-now.com
Para obtener más información sobre cómo definir la lista de permitidos, consulte el artículo Configuración de seguridad para el Centro de contacto de Webex.
-
-
Una cuenta del portal de desarrolladores ServiceNow. Para crear una cuenta, vaya al portal para desarrolladores de ServiceNow en https://developer.servicenow.com/dev.do y haga clic en Inscribirse e iniciar edificio.
-
Acceso a los siguientes archivos en https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
Conjunto de actualizaciones de ServiceNow (XML)
-
Diseño de escritorio del Centro de contacto de ServiceNow (JSON)
-
- Las ediciones de ServiceNow que admite Webex Contact Center son Vancouver, Utah, Tokya, Washington y Xanadu. Para obtener más información, consulte Integración de Webex Contact Center con ServiceNow.
Siga uno de los dos métodos a continuación:
En el caso de instancias de desarrolladores, recomendamos seguir los pasos de la guía de instancias de desarrolladores.
Si es propietario de una instancia con licencia empresarial, siga las pautas correspondientes a instancias con licencia empresarial.
No recomendamos mezclar la aplicación con licencia empresarial con instancias de entorno aislado para desarrolladores.
En las siguientes secciones se describen los pasos para instalar el conector de ServiceNow para instancias de desarrolladores.
1 |
Inicie sesión en su cuenta del portal de desarrolladores de ServiceNow y abra la consola de Administración . |
2 |
En el área Mi instancia del menú Cuenta , haga clic en Iniciar edificio. |
3 |
En su instancia de desarrollador, en el campo Filtrar navegador en la parte superior izquierda de la ventana, diríjase a Complementos. |
4 |
Busque el complemento de Openframe que tiene el título Openframe. Es posible que deba desplazarse por la lista. |
5 |
Haga clic en Instalar para instalar el complemento de Openframe. |
6 |
En el cuadro de enlace Activar cuadro de diálogo complemento, haga clic en Activar. |
7 |
Cuando haya finalizado la activación del complemento, haga clic en Cerrar y volver a cargar el formulario en el cuadro de diálogo Activación de complementos . |
8 |
Para verificar la activación del complemento, desde el campo Filter navigator (Navegador de filtro) en la esquina superior izquierda de la ventana, diríjase a OpenFrame. |
9 |
Haga clic en Configurations (Configuraciones) y asegúrese de que el complemento OpenFrame aparezca en la lista OpenFrame Configurations (Configuraciones de OpenFrame). |
1 |
Descargue el archivo XML del conjunto de actualización del sistema más reciente disponible en el repositorio 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 su instancia de ServiceNow, en el campo Filtrar navegador en la parte superior izquierda de la ventana, diríjase a . |
3 |
Haga clic en el enlace Importar actualización establecida desde XML . |
4 |
Haga clic en Elegir archivo, seleccione el archivo XML establecido para actualizar el sistema y, a continuación, haga clic en Cargar.
El conjunto de actualizaciones aparece en la lista Retrieved Update Sets (Conjuntos de actualización recuperados) y está en el estado Loaded (Cargado).
|
5 |
Desde la lista Conjuntos de actualizaciones recuperados , haga clic en el nombre de archivo Update Set (enlace) para abrir el Conjunto de actualizaciones. |
6 |
En la parte superior derecha de la ventana, haga clic en Vista preliminar del conjunto de actualizaciones para comprobar el conjunto de actualizaciones en busca de problemas. |
7 |
Haga clic en Cerrar en el cuadro de diálogo Actualizar vista preliminar una vez finalizada la vista preliminar. |
8 |
Haga clic en Commit Update Set (Establecer actualización de confirmación). |
9 |
Haga clic en Cerrar en el cuadro de diálogo Update Set Commit una vez que haya finalizado el commit del Update Set. |
1 |
En el campo Filtrar navegador en la parte superior izquierda de la ventana, escriba |
2 |
En la página Propiedades del sistema, ordene las propiedades por fecha actualizada. Asegúrese de que puede ver las siguientes propiedades del Centro de contacto de Webex: |
3 |
Haga clic agentdesktop_url para abrir la página Propiedades del agentdesktop_url sistema. |
4 |
En el campo Valor , introduzca la URL del escritorio del Centro de contacto de Webex 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 actividad, edite las propiedades de la tabla de actividades 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 |
Desde el campo Filter navigator (Navegador de filtro), diríjase a . |
2 |
Haga clic en Nuevo. |
3 |
Introduzca las siguientes propiedades para la URL:
|
4 |
A la derecha del campo URL , haga clic en el botón Bloquear y agregue |
5 |
(Opcional) Seleccione los grupos de usuarios/agentes para asignar la configuración. |
6 |
Haga clic en Enviar. La URL aparece como un enlace. |
7 |
Antes de intentar utilizar el teléfono OpenFrame, asegúrese de cargar el archivo JSON de diseño de escritorio personalizado de ServiceNow en el portal de gestión del Centro de contacto de Webex. Para obtener más información, consulte Configurar el diseño de escritorio de ServiceNow en Webex Contact Center. |
1 |
Descargue el diseño de escritorio para ServiceNow desde https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Actualice las propiedades en el archivo de diseño de escritorio, si es necesario. |
3 |
Vaya al portal de gestión del Centro de contacto de Webex. |
4 |
En la barra de navegación del Portal de administración, elija |
5 |
Haga clic en Nuevo diseño e introduzca los detalles para el diseño del escritorio. |
6 |
Cargue el archivo JSON de diseño de escritorio de ServiceNow. |
7 |
Haga clic en Guardar para guardar la configuración. Ahora puede iniciar el escritorio del Centro de contacto de Webex en la consola de ServiceNow. |
8 |
En el campo Filtrar navegador , diríjase a . |
En las siguientes secciones se describen los pasos para instalar el conector de ServiceNow para instancias empresariales con licencia.
1 |
Inicie sesión en su cuenta del portal de desarrolladores de ServiceNow y abra la consola de Administración . |
2 |
En el área Mi instancia del menú Cuenta , haga clic en Iniciar edificio. |
3 |
En su instancia de desarrollador, en el campo Filtrar navegador en la parte superior izquierda de la ventana, diríjase a Complementos. |
4 |
Busque el complemento de Openframe que tiene el título Openframe. Es posible que deba desplazarse por la lista. |
5 |
Haga clic en Instalar para instalar el complemento de Openframe. |
6 |
En el cuadro de enlace Activar cuadro de diálogo complemento, haga clic en Activar. |
7 |
Cuando haya finalizado la activación del complemento, haga clic en Cerrar y volver a cargar el formulario en el cuadro de diálogo Activación de complementos . |
8 |
Para verificar la activación del complemento, desde el campo Filter navigator (Navegador de filtro) en la esquina superior izquierda de la ventana, diríjase a OpenFrame. |
9 |
Haga clic en Configurations (Configuraciones) y asegúrese de que el complemento OpenFrame aparezca en la lista OpenFrame Configurations (Configuraciones de OpenFrame). |
Las instancias que tienen licencias empresariales pueden instalar la aplicación Webex Contact Center directamente desde la tienda ServiceNow.
Descargue e instale el paquete Webex Contact Center desde la tienda ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
En el campo Filter navigator (Navegador de Filtro) que se encuentra en la esquina superior izquierda de la ventana, ingrese |
2 |
En la página Propiedades del sistema, ordene las propiedades por fecha actualizada. Asegúrese de que puede ver las siguientes propiedades del Centro de contacto de Webex: |
3 |
Haga clic agentdesktop_url para abrir la página Propiedades del agentdesktop_url sistema. |
4 |
En el campo Valor , introduzca la URL del escritorio del Centro de contacto de Webex 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.
|
7 |
(Opcional) Agregue grupos de usuarios de las siguientes maneras:
|
1 |
Desde el campo Filter navigator (Navegador de filtro), diríjase a . |
2 |
Haga clic en Nuevo. |
3 |
Introduzca las siguientes propiedades para la URL:
|
4 |
A la derecha del campo URL , haga clic en el botón Bloquear y agregue |
5 |
(Opcional) Seleccione los grupos de usuarios/agentes para asignar la configuración. |
6 |
Haga clic en Enviar. La URL aparece como un enlace. |
7 |
En el campo Filtrar navegador , diríjase a . |
8 |
(Opcional) En la lista Grupo de usuarios , mueva los grupos de usuarios que pueden acceder al escritorio del Centro de contacto de Webex de Disponible a Seleccionado. |
9 |
Antes de intentar utilizar el teléfono OpenFrame, asegúrese de cargar el archivo JSON de diseño de escritorio personalizado de ServiceNow en el portal de gestión del Centro de contacto de Webex. Para obtener más información, consulte Configurar el diseño de escritorio de ServiceNow en Webex Contact Center. |
1 |
Descargue el diseño de escritorio para ServiceNow desde https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Actualice las propiedades en el archivo de diseño de escritorio, si es necesario. |
3 |
Vaya al portal de gestión del Centro de contacto de Webex. |
4 |
En la barra de navegación del Portal de administración, elija |
5 |
Haga clic en Nuevo diseño e introduzca los detalles para el diseño del escritorio. |
6 |
Cargue el archivo JSON de diseño de escritorio de ServiceNow. |
7 |
Haga clic en Guardar para guardar la configuración. Ahora puede iniciar el escritorio del Centro de contacto de Webex en la consola de ServiceNow. |
8 |
En el campo Filtrar navegador , diríjase a . |
1 |
En el campo Filtrar navegador, diríjase a Incidentes > Abrir incidente. |
2 |
Haga clic con el botón derecho en el campo que llama y haga clic en Configurar diccionario. |
3 |
Agregue los atributos separados por comas Ahora puede comenzar a utilizar el escritorio del Centro de contacto de Webex dentro de la consola de ServiceNow. |
4 |
En el campo Filtrar navegador , diríjase a . |
Actualmente, no admitimos el inicio de sesión en Agent Desktop mediante la opción Escritorio (WebRTC).
Agent Desktop en la consola de ServiceNow
Antes de realizar llamadas salientes, asegúrese de hacer lo siguiente:
-
Cree el punto de entrada de outdial y configure una estrategia de punto de entrada de outdial.
-
Habilite ANI de outdial para el perfil del agente.
-
Defina la ANI de marcado como 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 Filtrar navegador , diríjase a .
Para obtener información sobre cómo utilizar el escritorio, consulte la ficha Agente en la ayuda de Webex Contact Center.
Descripción general
Este artículo cubre varias formas de personalizar las reglas empresariales para el conector CRM de ServiceNow. Detalla cómo puede personalizar los casos de uso en función de las reglas empresariales que son específicas de ServiceNow.
El cliente debe autogestionar estos casos de uso en ServiceNow. La configuración es específica de ServiceNow y no del software o la experiencia del centro de contacto de Webex.
Se trata de una documentación de referencia para facilitar la modificación de las normas empresariales. Los desarrolladores de ServiceNow crearán y gestionarán las reglas empresariales y proporcionarán soporte.
Cisco solo proporciona documentación de muestra.
Las siguientes secciones proporcionan detalles sobre cómo configurar, habilitar y administrar el widget de acciones para instancias de desarrolladores y empresariales.
Consignar el widget de actualización establecido para las acciones
Para las instancias empresariales con licencia, instale la aplicación Webex Contact Center más reciente desde la tienda ServiceNow.
Para configurar el widget de acciones para las instancias del desarrollador, descargue el archivo XML del conjunto de actualización del sistema más reciente disponible en el repositorio 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 consignar el conjunto de actualizaciones para el widget de acciones, consulte los pasos del 2 al 9 en Consignar el conjunto de actualizaciones.
Habilitar widget de acciones
Utilice la propiedad isWidgetDisplayEnabled para habilitar el widget de acciones. No debe modificar el valor de esta propiedad en la sección sin cabeza del diseño de escritorio personalizado. La propiedad siempre se establece en falso en la sección sin cabeza del diseño de escritorio personalizado. Debe actualizar el valor de la propiedad solo en la sección del panel del diseño de escritorio personalizado.
Una vez que habilite el widget de acciones en el diseño de escritorio personalizado, puede realizar las siguientes acciones:
- Administrar registros de actividades: haga clic en Ver/Editar registro de actividades para ver la lista de registros de actividades asociados con la persona que llama.
- Asociar objetos de CRM: haga clic en Asociar a registros de actividad para agregar objetos de CRM como el tipo de llamada (entrante o saliente), el objeto de llamada, las notas de llamada, etc. al registro de actividad.
- Administrar incidentes: haga clic en Crear incidente. Se crea un nuevo incidente con los detalles de la persona que llama previamente completados. Puede realizar las actualizaciones necesarias para el incidente. Puede optar por modificar el tipo de registro de incidente a caso, módulo de RR. HH., etc. según 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 la llamada en directo: puede capturar información adicional acerca de la llamada en el área de texto y cerrar la llamada. Puede ver estas notas agregadas como notas de llamada en el registro de actividad.
Cambio de código en ServiceNow
La Secuencia de Comandos Incluye cambios-
Vaya al navegador de filtros y busque
la secuencia de comandos incluye
.Seleccione Incluye la secuencia de comandos en IU del sistema.
-
Filtre el Nombre y busque
propUtils
. -
Cambie el método
UserGetSysId
en la Secuencia de comandos.Saludo:
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 muestra para el incidente:
UserGetSysId: función () { 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=usuario.sys_id;//devolver usuario.sys_id; var inc = nuevo GlideRecordSecure('incidente'); 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=“teléfono”; 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= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; devuelve JSON.stringify(sysidlist); },
-
Vaya al navegador de filtros y busque la
página de la interfaz de usuario
.Seleccione Páginas de la interfaz de usuario en Interfaz de usuario del sistema.
-
Filtre el Nombre y busque
agentdesktop
. -
Cambie la función
screenpop
en la secuencia de comandos 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: 'interacción', consulta: '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(); // Para cambios relacionados con incidentes var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incidente', consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incidente', consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
Si la información de la persona que llama existe en CRM, y ya se ha abierto un nuevo incidente con este contacto, la aplicación abre el incidente en curso
Si la información de la persona que llama no existe en CRM, la aplicación abre un nuevo incidente
Si la información de la persona que llama existe en CRM, la aplicación abre un nuevo incidente con detalles precargados
Descripción general
Este caso de uso detalla el proceso para agregar una columna adicional a la tabla de ServiceNow webexcc_imp_activity y crear sn_openframe_phone_log tras la instalación del CC de Webex para el conector de CRM de ServiceNow.
De forma predeterminada, la tabla contiene determinados campos y valores del sistema listos para usar.
Puede crear más variables específicas de negocio (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 mantenerlas en los datos de la tabla de actividad posterior a la llamada.
Esta es una documentación de referencia solamente, y muestra cómo hacerlo para una variable CAD de muestra llamada Customer Name (Nombre del cliente) que almacena el nombre del cliente dentro de la IVR y lo publica en ServiceNow.
Se espera que los desarrolladores partner+customer ServiceNow configuren y administren esta configuración, ya que se trata de una personalización del conector existente.
Cisco solo proporciona 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 la variable CAD al registro de actividades y a la tabla de actividades mediante la técnica que se describe a continuación:
Agregar columna a la actividad de MI y Presencia de WebexCC
-
Edite la tabla en la versión para desarrolladores de ServiceNow.
-
Vaya al navegador de filtros y busque estudio.
Seleccione
Centro de contacto de Webex
o
-
Seleccionar la tabla
Actividad de MI y Presencia de WebexCC
-
Agregue una nueva columna, por ejemplo:
CustomerName
Agregar columna al registro del teléfono
-
Edite la tabla del registro del teléfono.
-
Agregue una columna nueva, por ejemplo,
CustomerName
.
Mapa de transformación de la actividad de WebexCC
Agregue una nueva columna, por ejemplo, la asignación del campo CustomerName
.
Personalizar columnas de lista
Tal como Service Now recomienda, cambie la acción Choice de crear a ignorar.
Configurar la lista de registros telefónicos
Ir al guión e incluir
Agregue solo una línea webexcc.u_customername=actInfo.CustomerName
a propUtils.
Guion de muestra
Vea la línea: webexcc.u_customername=actInfo.CustomerName; con un comentario de soporte.
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= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; }, setWebexcctable : función () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = nuevo 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.calldisposition=actInfo.CallDisposition; // Esta línea se Agrega para capturarla en el registro de actividades webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); //Actividades sobre 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(); } } } return sys_id; }, tipo: «propUtils» });
Crea una variable CAD en el diseñador de flujo
Agregar la variable CAD al diseño de escritorio
Ejemplo
"CadName1:SnowField1,CadName2:SnowField2" CadName1 es CustomerName SnowField1 también se utiliza como CustomerName que es parte de la muestra scirpt de muestra 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 el Diseñador de flujos
Urgencia ante incidentesImpacto del incidente
Actualización de secuencia de comandos de Service Now
Las actualizaciones del script incluyen
-
Ir al navegador de filtros y buscar
la secuencia de comandos incluye
Seleccione la opción La secuencia de comandos incluye en IU del sistema.
-
Filtre el Nombre con
propUtils
. -
Cambie el método
UserGetSysId
en el campo Script .Script 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 muestra para el incidente:
UserGetSysId: función () { var opened_for; sisidlista de var = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=usuario.sys_id;//devolver usuario.sys_id; var inc = nuevo GlideRecordSecure('incidente'); 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= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; devuelve JSON.stringify(sysidlist);//sysid; },
-
Vaya al navegador de filtros y busque
páginas de la interfaz de usuario
.Seleccione la opción Páginas de la interfaz de usuario en IU del sistema.
-
Filtre las páginas de la interfaz de usuario con Nombre y busque agentdesktop .
-
Cambie la función
screenpop
en el campo de secuencia de comandos.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: 'interacción', consulta: '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('Impact', Impact); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incidente', consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incidente', consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Si la información de la persona que llama existe en CRM, y no hay ningún incidente nuevo o en curso, la aplicación abre un nuevo incidente
Cambie el código en ServiceNow
Agregar nuevas columnas a la tabla Actividad de MI y Presencia de WebexCC
Abra la tabla Actividad de MI y Presencia de WebexCCAgregue una nueva columna: InteractionsNumber Agregar una nueva columna: IncidentNumber
Haga clic en Actualizar.
Agregar nuevas columnas a la tabla Registro de teléfono
Abra la tabla Registro de teléfono
Mapa de transformación de la actividad de WebexCC
Abra el mapa de transformación
desde el navegador de filtros
Haga clic en WebexCC Activity TransformMap
Haga clic en Actualizar.
Los cambios en el script incluyen
-
Vaya al navegador de filtros y busque "script incluye".
Seleccione Incluye la secuencia de comandos en IU del sistema.
-
Filtre el Nombre con
propUtils
. -
Cambie el método
setWebexcctable
.Nuevo código de muestra para Incidente:
setWebexcctable: función () { 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 interactionsisid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; eliminar actInfo['interaction_sys_id']; eliminar 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='Actualizar estado a cerrado.'; 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(); } return sys_id; },
Cambios de método en páginas de interfaz de usuario
-
Ir al navegador de filtros y buscar
páginas de la interfaz de usuario
Seleccione la opción Páginas de la interfaz de usuario en IU del sistema.
-
Filtre las páginas de la interfaz de usuario con Nombre y busque
agentdesktop
. -
Cambie las funciones
nowActivities y screenpop
en la secuencia de comandos.Función actual:
función 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); } función screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incidente', consulta: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incidente', consulta: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Resultados 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 posteriores, siga los pasos anteriores.
N.º de personalización 1 - Agregar reglas comerciales personalizadas para los casos de uso del flujo de llamadas
Crear un nuevo registro de incidentes para cada llamadaPara cada llamada nueva en el conector de CRM de WebexCC en ServiceNow, cree un nuevo registro de incidentes.
Buscar reglas de negocios en el navegador de filtros
Haga clic en New (Nuevo).
Código de muestra para referencia:
función customcti() { var url = nulo; 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", name); } if (userID == null && phone != null && phone != '') { userID = UserGetSysId("phone", phone); } if (userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += "caller_id=" + userID; } si (url == nulo) { url = "incident.do?sys_id=-1"; if (fQuery != null) url += "&sysparm_query=" + fQuery; } respuesta = url; return url; } función UserGetSysId(campo, valor) { var user = new GlideRecord("sys_user"); user.addQuery(campo, valor); user.query(); if (user.next()) devuelve el usuario.sys_id; else devuelve nulo; }
Ejemplo de configuración de la regla de negocio
Habilitar el Cliente llamable
El procesamiento de la integración de telefonía informática (CTI) para incidentes se marca como Verdadero.
Actualice la URL del pop de pantalla con la regla de CTI personalizada " cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
sysparm_cti_rule=name donde 'name' es el nombre de una función se debe invocar para el Procesamiento CTI en lugar de utilizar la secuencia de comandos predeterminada.
Defina la función en una sys_script entrada marcada como cliente llamable.
Si debe insertar, actualizar o eliminar cualquier GlideRecord(s) en la función, llame a una función independiente que no puede llamarse de cliente para realizar las actualizaciones.
Para hacer que una secuencia de comandos de cliente pueda llamarse, debe marcar la casilla de verificación de cliente en el formulario que aparece cuando se muestra la sys_script entrada.
La casilla de verificación a la que se puede llamar el cliente no aparece de manera predeterminada. Para ver, debe modificar los campos que aparecen en el formulario utilizando el icono de engranaje y el mecanismo de cubo de descarga.
N.º de personalización 2 - Agregar la variable CAD en la tabla de actividades del Centro de contacto de Webex
Descripción generalEste artículo detalla el proceso para agregar una columna adicional a la tabla de ServiceNow - webexcc_activity que se crea tras la instalación del CC de Webex para el conector de CRM de ServiceNow.
De forma predeterminada, la tabla contiene campos y valores del sistema listos para usar.
Es posible crear variables más 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 persistir 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 Customer Name (Nombre del cliente) que almacena el nombre del cliente dentro de la IVR y lo publica en ServiceNow.
-
Los desarrolladores de Partner+Customer ServiceNow configurarán y administrarán esta configuración, ya que se trata de 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 la variable CAD al registro de actividades y a la tabla de actividades mediante la técnica que se describe a continuación.
Edite la tabla en la versión para desarrolladores de ServiceNow.
Vaya a
.Seleccione la tabla Actividad de WebexCC .
Por ejemplo, CustomerName.
Seleccione Diseño de lista para Actividad de WebexCC.
Este paso no es necesario si está utilizando Update Set XML: solo se requiere agregar una línea "webexcc.u_customername=actInfo.CustomerName" a propUtils.
Guion de muestra
Vea la línea con:webexcc.u_customername=actInfo.CustomerName; con un comentario de soporte.
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 : función () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = nuevo 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.calldisposition=actInfo.CallDisposition; // Esta línea se Agrega para capturarla en el registro de actividades webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); // Actividades sobre 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(cadena de actuación),null,2); inc.comments =jsonPretty; inc.update(); } } } return sys_id; }, tipo: 'propUtils2' });
Editar la página de la interfaz de usuario con un nuevo nombre de secuencia de comandosCrea una variable CAD en el diseñador de flujo
Agregar la variable CAD al diseño de escritorio
Capturas de pantalla de demostración
Vea la variable CAD recién agregada en la tabla Actividad de WebexCC.