Integrar Webex Contact Center con ServiceNow (versión 1: Legacy)
Prerrequisitos
El tamaño mínimo admitido para la interfaz softphone es 500px. Cualquier valor inferior a 500px puede dar lugar a problemas de visualización o funcionalidad.
Antes de integrar Webex Contact Center con la consola de ServiceNow CRM, asegúrese de tener lo siguiente:
-
Acceso al centro de contacto de Webex.
-
Acceso de administrador al Centro de control en https://admin.webex.com y al Centro Management Portal de contacto de Webex. Las direcciones URL para el Management Portal son específicas de su región.
-
Un agente con acceso al escritorio. La dirección URL para el escritorio es específica de su región.
-
Acceso del agente al siguiente dominio que se agrega en la lista de políticas de seguridad de contenido permitidas:
-
*.service-now.com
Para obtener más información sobre cómo definir la lista permitida, consulte el artículo Configuración de seguridad para el centro de contacto de Webex.
-
-
Una cuenta del portal para desarrolladores de ServiceNow. Para crear una cuenta, vaya al portal para desarrolladores de ServiceNow en https://developer.servicenow.com/dev.do y haga clic en Registrarse y comenzar a construir.
-
Acceda 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 Webex Contact Center soporta son Vancouver, Utah, Tokya, Washington y Xanadu. Para obtener más información, consulte Integración del centro de contacto de Webex con ServiceNow.
Siga uno de los dos métodos siguientes:
- Para las instancias de desarrollador, se recomienda seguir los pasos que se indican en la guía de instancias de desarrollador.
- Si posee una instancia con licencia empresarial, siga las pautas para las instancias con licencia empresarial.
No recomendamos mezclar la aplicación con licencia empresarial con instancias de sandbox para desarrolladores.
Los canales digitales como chat y correo electrónico no son compatibles con los conectores CRM. Esto se aplica a todas las integraciones de CRM que utilizan estos conectores. Por favor, planifique sus flujos de trabajo de implementación y participación del cliente en consecuencia.
En las siguientes secciones se describen los pasos para instalar el conector de ServiceNow para instancias de desarrollador.
| 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 construcción.
|
| 3 |
En su instancia de desarrollador, en el campo Navegador de filtros en la parte superior izquierda de la ventana, vaya a Plugins.
|
| 4 |
Busque el complemento Openframe que tiene el título Openframe. Puede que necesite 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 recargar formulario en el cuadro de diálogo Activación del complemento.
|
| 8 |
Para verificar la activación del complemento, en el campo Navegador de filtros en la parte superior izquierda de la ventana, vaya a OpenFrame. |
| 9 |
Haga clic en Configuraciones y asegúrese de que el complemento OpenFrame aparezca en la lista Configuraciones de OpenFrame.
|
| 1 |
Descargue el archivo XML más reciente del conjunto de actualizaciones del sistema disponible en el repo de github en esta ubicación: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. Nombre de Archivo: WebExcc-ServiceOw-Update-SETV (X) .xml
|
| 2 |
En su instancia de ServiceNow, en el campo Navegador de filtros en la parte superior izquierda de la ventana, vaya a Conjuntos de .
|
| 3 |
Haga clic en el enlace Importar conjunto de actualizaciones desde XML.
|
| 4 |
Haga clic en Elegir archivo, seleccione el archivo XML del 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 el 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 Vista previa del conjunto de actualizaciones una vez que se haya completado la vista previa.
|
| 8 |
Haga clic en Conmit Update Set.
|
| 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
|
| 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 agentdesktop_urlpara abrir la agentdesktop_url página Propiedad del sistema. |
| 4 |
En el campo Valor, escriba la dirección URL del escritorio de Webex Contact Center 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 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, vaya a
|
| 2 |
Haga clic en Nuevo.
|
| 3 |
Introduzca las siguientes propiedades para la dirección URL:
|
| 4 |
A la derecha del campo URL, haga clic en el botón Bloquear y
|
| 5 |
(Opcional) Seleccione el (los) grupo (s) de usuario/agente (s) para asignar la configuración.
|
| 6 |
Haga clic en Enviar. La URL aparece como un enlace.
|
| 7 |
Antes de intentar usar el teléfono OpenFrame, asegúrese de cargar el archivo JSON personalizado de ServiceNow Desktop Layout en el Centro de contacto de Webex. Management Portal Para obtener más información, consulte Configurar el diseño de escritorio ServiceNow en el centro de contacto de Webex. |
| 1 |
|
| 2 |
Actualice las propiedades en el archivo de diseño de escritorio, si es necesario. |
| 3 |
Vaya al Centro Management Portal de contacto de Webex. |
| 4 |
En la barra de Management Portal navegación, elija .
|
| 5 |
Haga clic en Nuevo diseño e introduzca los detalles del diseño de 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 de Webex Contact Center dentro de la consola de ServiceNow. |
| 8 |
En el campo Navegador de filtros, vaya a Área de .
|
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 construcción.
|
| 3 |
En su instancia de desarrollador, en el campo Navegador de filtros en la parte superior izquierda de la ventana, vaya a Plugins.
|
| 4 |
Busque el complemento Openframe que tiene el título Openframe. Puede que necesite 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 recargar formulario en el cuadro de diálogo Activación del complemento.
|
| 8 |
Para verificar la activación del complemento, en el campo Navegador de filtros en la parte superior izquierda de la ventana, vaya a OpenFrame. |
| 9 |
Haga clic en Configuraciones y asegúrese de que el complemento OpenFrame aparezca en la lista Configuraciones de OpenFrame.
|
Las instancias que tienen licencias empresariales pueden instalar la aplicación Webex Contact Center directamente desde ServiceNow Store.
|
|
| 1 |
En el campo Navegador de filtros en la parte superior izquierda de la ventana, escriba
|
| 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 agentdesktop_urlpara abrir la agentdesktop_url página Propiedad del sistema. |
| 4 |
En el campo Valor, escriba la dirección URL del escritorio de Webex Contact Center 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 x_caci_webexccpropiedades.webexccactivitytable según sea necesario.
|
| 7 |
(Opcional) Agregue grupos de usuarios de las siguientes maneras:
|
| 1 |
En el campo Navegador de filtros, vaya a
|
| 2 |
Haga clic en Nuevo.
|
| 3 |
Introduzca las siguientes propiedades para la dirección URL:
|
| 4 |
A la derecha del campo URL, haga clic en el botón Bloquear y agréguele
|
| 5 |
(Opcional) Seleccione el (los) grupo (s) de usuario/agente (s) para asignar la configuración.
|
| 6 |
Haga clic en Enviar. La URL aparece como un enlace.
|
| 7 |
En el campo Navegador de filtros, vaya a Área de .
|
| 8 |
(Opcional) En la lista Grupo de usuarios, mueva los grupos de usuarios que pueden acceder al escritorio de Webex Contact Center de Disponible a Seleccionado. |
| 9 |
Antes de intentar usar el teléfono OpenFrame, asegúrese de cargar el archivo JSON personalizado de ServiceNow Desktop Layout en el Centro de contacto de Webex. Management Portal Para obtener más información, consulte Configurar el diseño de escritorio ServiceNow en el centro de contacto de Webex. |
| 1 |
|
| 2 |
Actualice las propiedades en el archivo de diseño de escritorio, si es necesario. |
| 3 |
Vaya al Centro Management Portal de contacto de Webex. |
| 4 |
En la barra de Management Portal navegación, elija .
|
| 5 |
Haga clic en Nuevo diseño e introduzca los detalles del diseño de 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 de Webex Contact Center dentro de la consola de ServiceNow. |
| 8 |
En el campo Navegador de filtros, vaya a Área de .
|
| 1 |
En el campo Navegador de filtros, vaya a Incidentes > Incidentes abiertos. |
| 2 |
Haga clic derecho en el campo de la persona que llama y haga clic en Configurar diccionario.
|
| 3 |
Agregue atributos
Ahora puede comenzar a usar el escritorio de Webex Contact Center dentro de la consola de ServiceNow. |
| 4 |
En el campo Navegador de filtros, vaya a Área de .
|
- Apoyamos iniciar sesión Agent Desktop usando WebRTC para conectores Salesforce (SFDC) y Microsoft Dynamics (MS Dynamics) solamente.
- Actualmente, esta función solo se aplica a los agentes.
Agent Desktopen la consola de ServiceNow
Antes de hacer llamadas fuera de línea, asegúrese de hacer lo siguiente:
-
Cree el punto de entrada de salida y configure una estrategia de punto de entrada de salida.
-
Habilite ANI de salida para el perfil del agente.
-
Establezca la ANI de salida 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 Cisco Webex Contact Center configuración y administración.
En el campo Navegador de filtros, vaya a Área de .
Para obtener información sobre cómo usar Desktop, consulte la pestaña Agente en la ayuda del Centro de contacto de Webex.
Descripción general
Este artículo cubre varias formas de personalizar sus reglas de negocio para el conector de ServiceNow CRM. Detalla cómo puede personalizar los casos de uso según las reglas comerciales específicas de ServiceNow.
El cliente debe autoadministrar estos casos de uso en ServiceNow. La configuración es específica de ServiceNow y no del software o experiencia de Webex Contact Center.
Esta es una documentación de referencia para ayudar a modificar las reglas comerciales. Los desarrolladores de ServiceNow crearán y administrarán las reglas comerciales y brindarán soporte.
Cisco solo proporciona documentación de muestra.
En las siguientes secciones se proporcionan detalles sobre cómo configurar, habilitar y administrar el widget Acciones para instancias empresariales y de desarrollo.
Configure el widget Conjunto de actualizaciones para 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 archivo XML del conjunto de actualizaciones del sistema más reciente disponible en el repo 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 Conmitir el conjunto de actualizaciones.
Habilitar widget de acciones
Utilice la propiedad IsWidgetDisplayEnabled para habilitar el widget Acciones. No debe modificar el valor de esta propiedad en la sección sin encabezado del diseño de escritorio personalizado. La propiedad siempre se establece en false en la sección sin encabezado 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 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 CRM: haga clic en Asociar a registros de actividad para agregar objetos CRM como tipo de llamada (entrante o saliente), objeto de llamada, notas de llamada, etc. al registro de actividad.
- Administrar incidentes: haga clic en Crear incidente. Se crea un nuevo incidente con los datos de la persona que llama previamente. Puede hacer las actualizaciones necesarias sobre el incidente. Puede optar por modificar el tipo de registro de incidente a caso, módulo de recursos humanos, 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" } } ] } - Agregue notas de llamadas en vivo: puede capturar información adicional sobre la llamada en el área de texto y concluir la llamada. Puede ver estas notas agregadas como notas de llamada en el registro de actividad.
Cambio de código en ServiceNow
El guión incluye cambios-
Vaya al navegador de filtros y busque
secuencias de comandos incluidas
.Seleccione el script incluye en la interfaz de usuario del sistema.
-
Filtre el nombre y busque
ProPutils
. -
Cambie el método
UserGetSysid en el 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 : function () { var opened_for; //Incident related changes 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='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },
-
Vaya al navegador de filtros y busque
UI page.Seleccione las páginas de interfaz de usuario en Interfaz de usuario del sistema.
-
Filtre el nombre y busque
agentdesktop
. -
Cambie la función
de screenpop
en el script del 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 muestra 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 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 prellenados
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 del negocio (Variables CAD) dentro del diseñador de flujo WebExcc y agregar las variables CAD dentro del registro de actividad posterior a la llamada de ServiceNow, así como conservarlo 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 ejemplo llamada Customer Name que almacena el nombre del cliente dentro del IVR y lo publica en ServiceNow.
Se espera que los desarrolladores de ServiceNow socie+cliente configuren y administren esta configuración, ya que es una personalización para el 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 actividad y a la tabla de actividades mediante la técnica que se describe a continuación:
Agregar columna a la actividad WebEXCC IMP
-
Edite la tabla en la versión para desarrolladores de ServiceNow.

-
Vaya al navegador de filtros y busque el estudio.

Seleccione el centro
de contacto de Webex

o



-
Seleccione la tabla de
actividades WebExcc IMP

-
Agregar una nueva columna, por ejemplo,
CustomerName


Agregar columna al registro telefónico
-
Edite la tabla de registro telefónico.


-
Agregue una nueva columna, por ejemplo,
CustomerName
.

Mapa de transformación de actividad WebEXCC

Agregue una nueva columna, por ejemplo, mapeo de campo CustomerName
.


Personalizar columnas de lista

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


Configurar lista de registros telefónicos

Ir a Script Incluir
Agregue solo una línea webexcc. u_customername=ACTInfo.CustomerName para PropUtils
.



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= 'phone';
grInt.opened_for= opened_for;
var sysid=grInt.insert();
return 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;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
//Activities on Incident record;
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;
},
type: 'propUtils'
});
Crear una variable CAD en Flow Designer

Agregar la variable CAD al diseño de escritorio
Ejemplo
"CadName1:SnowField1,CadName2:SnowField2"
CadName1 is CustomerName
SnowField1 is also used as CustomerName which is part of sample scirpt showen above "actInfo.CustomerName".

Capturas de pantalla de demostración
Vea la variable CAD recién agregada en la tabla Actividad WebExcc.



Crear variable CAD para Flow Designer
Urgencia del incidente
Impacto del incidente

Actualización del script Service Now
Las actualizaciones del script incluyen
-
Vaya al navegador de filtros y busque
script includesSeleccione la opción Script incluye en la interfaz de usuario del sistema.

-
Filtre el nombre con
propUtils.
-
Cambie el método
UserGetSysid
en el campo Script.
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 muestra 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='Call Received From '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
Vaya al navegador de filtros y busque
UI pages.Seleccione la opción Páginas de interfaz de usuario en Interfaz de usuario del sistema.

-
Filtre las páginas de la interfaz de usuario con nombre y busque
agentdesktop.
-
Cambie la función de
pantalla emergente
en el campo de 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 muestra 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: '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 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 WebExcc IMP
Abra la tabla de actividades de WebExcc IMP





Haga clic en Actualizar.


Agregar nuevas columnas a la tabla Registro telefónico
Abra la tabla de registro telefónico





Mapa de transformación de actividad 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 el script incluye en la interfaz de usuario del sistema.

-
Filtre el nombre con
PropUtils
.
-
Cambie el método
setWebExccTable
.
Nuevo código de muestra 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']; delete 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(); } return sys_id; },
Cambios de método en las páginas de interfaz de usuario
-
Vaya al navegador de filtros y busque
páginas de interfaz
de usuarioSeleccione la opción Páginas de interfaz de usuario en Interfaz de usuario del sistema.

-
Filtre las páginas de interfaz de usuario con nombre y busque
agentdesktop.
-
Cambie la función
NowActivities y screenpop
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 muestra 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 siguientes. Para las personalizaciones para las versiones más recientes 1.0.7 y superiores, siga los pasos anteriores.
Personalización # 1: agregue reglas comerciales personalizadas para casos de uso de flujo de llamadas
Cree un nuevo registro de incidentes para cada llamadaPor cada nueva llamada al conector WebEXCC CRM en ServiceNow, cree un nuevo registro de incidentes.
Buscar reglas de negocio en el navegador de filtros

Haga clic en Nuevo.

Código de muestra para 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", name); } 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; return url; } 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

Habilitar el cliente llamable

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


El sysparm_cti_rule=nombre donde 'name' es el nombre de una función debe invocarse para CTI Processing en lugar de usar el script predeterminado.
Defina la función en una sys_scriptentrada marcada como cliente llamable.
Si debe insertar, actualizar o eliminar cualquier GliDeRecord (s) en la función, llame a una función distinta a la que se pueda llamar al cliente para realizar las actualizaciones.
Para que un script pueda ser llamado por el cliente, debe marcar la casilla de verificación que se puede llamar por el cliente en el formulario que aparece cuando se muestra la entrada. sys_script
La casilla de verificación que puede llamar por el cliente no aparece de forma predeterminada. Para ver, debe modificar los campos que aparecen en el formulario utilizando el icono de engranaje y el mecanismo del cubo de granizado.
Personalización # 2: Agregar 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 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 del negocio (Variables CAD) dentro del diseñador de flujo WebExcc y agregar esas variables CAD dentro del registro de actividad posterior a la llamada de ServiceNow, y conservarlo en los datos de la tabla de actividad posterior a la llamada.
-
Esta es solo la documentación de referencia y muestra cómo hacerlo para una variable CAD de ejemplo llamada Customer Name 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 para el 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 actividad 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 al .



Seleccione la tabla de actividades WebEXCC.

Por ejemplo, CustomerName.


Seleccione el diseño de lista para la actividad WebEXCC.

Este paso no es necesario si está utilizando el XML del conjunto de actualizaciones: solo se requiere agregar una línea "webexcc. u_customername=ActInfo.CustomerName "a PropUtils.



Secuencia de comandos de muestra
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;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
// Activities on Incident record;
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();
}
}
}
return sys_id;
},
type: 'propUtils2'
});
Edite la página de interfaz de usuario con un nuevo nombre de script
Crear una variable CAD en Flow Designer
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 WebEXCC.

El conector CRM funciona según la versión del widget especificado en el formato de escritorio JSON. Es extremadamente importante asegurarse de que la versión del widget dentro del diseño de escritorio se mantenga actualizada.
Se espera que los administradores se aseguren de que todos los diseños de escritorio para este conector CRM utilicen esta versión de widget. If the layout is not updated to use the latest version, functionality will no longer be supported and may cease to work correctly.
- Última actualización de ServiceNow: .1.0_v5.0.3.json. ServiceNow_Desktop_0 A partir de marzo de 2024, la versión del paquete es 1.0.9
- Última actualización de XML: WebExcc-ServiceNow-Update-Setv7-1-ActionsWidget.xml, junio de 2024











































