ServiceNow

Contact Center AI Platform (CCAI Platform) se integra con el CRM de ServiceNow.

Configuración para desarrolladores de ServiceNow

Requisitos mínimos preferidos de la versión de ServiceNow: Tokyo patch 1

Configura un usuario de autenticación básica

Es probable que la cuenta de administrador de ServiceNow tenga habilitada la verificación en 2 pasos y esté asociada a ese usuario. Por lo tanto, no se puede usar para obtener acceso de administrador en CCAI Platform. Para ello, debes crear una cuenta de usuario en ServiceNow.

Crea un usuario básico con credenciales:

  1. Ve a Usuario > Nuevo.

  2. Completa los detalles y selecciona Solo acceso a servicios web.

  3. Anota el ID de usuario y la contraseña.

Roles obligatorios en ServiceNow

Los roles predeterminados en ServiceNow están preconfigurados para proporcionar acceso y permisos específicos dentro de la plataforma. Los administradores pueden crear y configurar roles que otorgan permisos específicos, los cuales rigen lo que pueden hacer los usuarios y los grupos con ese rol.

Para realizar esta integración, debes tener los siguientes roles en ServiceNow:

  • user_admin: Este rol está diseñado para los administradores que necesitan administrar usuarios, grupos, ubicaciones y empresas dentro de la instancia de ServiceNow.

  • sn_incident_read: Este rol proporciona acceso de solo lectura a la aplicación de administración de incidentes y sus funciones relacionadas. Permite a los usuarios ver registros de incidentes.

  • sn_incident_write: Este rol otorga acceso de escritura a la aplicación de administración de incidentes y sus funciones relacionadas, lo que permite a los usuarios crear y modificar registros de incidentes.

  • personalize_dictionary: Este rol permite personalizar las entradas y las etiquetas del diccionario para satisfacer requisitos comerciales específicos.

  • function_field_admin: Este rol está destinado a los usuarios que necesitan crear, editar y ver campos de funciones específicamente en el diseñador de informes. No proporciona la capacidad de crear o borrar campos de funciones de la lista o el formulario de la plataforma.

Configura vistas de instancias

En las siguientes secciones, se describen los cambios de configuración necesarios para las vistas de instancias.

(Opcional) Agrega favoritos

Los favoritos son una forma rápida de encontrar los vínculos que usas con más frecuencia en la instancia de ServiceNow. Para agregar un favorito, selecciona el ícono de estrella junto a un campo en el panel de navegación. Si deseas filtrar el panel del navegador más adelante para ver solo tus favoritos, puedes seleccionar el ícono de estrella que se encuentra directamente debajo del campo del navegador de filtros en el panel del navegador.

Ejemplos de Favoritos útiles:

  • Incidentes: Asociaciones a registros para el CRM personalizado.
  • Usuarios: Son las asociaciones a cuentas para el CRM personalizado.
  • Explorador de la API de REST: Es una buena forma de probar la API.

Cómo agregar campos personalizados de forma manual

Selecciona el ícono de expansión (3 líneas horizontales) en la esquina superior izquierda dentro de la vista de objeto que deseas cambiar. Puedes hacerlo en la vista de autoservicio o en la vista predeterminada.

  1. En el menú, selecciona Configurar > Diseño de formulario para abrir el diseñador de formularios.

  2. En la columna de la izquierda, selecciona la pestaña Tipos de campos.

  3. Arrastra el tipo de campo personalizado que deseas agregar.

  4. Una vez que sueltes el tipo de campo en la sección que desees, selecciona el ícono de ajustes para ver la Configuración.

  5. Dentro de la ventana, cambia la etiqueta y toma nota del nombre. El nombre es el que usas en la configuración de la app de CCAI Platform.

  6. Selecciona Guardar en la esquina superior derecha de la pantalla.

Cómo asignar datos de la sesión al CRM

Debes asignar los datos de sesión adecuados desde CCAIP con Dialogflow y usar los siguientes parámetros:

Datos del agente virtual

{
  "ujet": {
    "session_variable": {
      "capture_target": "payload",
      "payload": {
        "value_one": "$session.params.payload_value_one"
      };
      "capture_type": [ "comment", "field" ] // optional, default of ["comment"]
    }
  }
}

Metadatos

https://INSTANCE.service-now.com/api/now/table/sys_dictionary?sysparm_query=name%3Dsys_user https://INSTANCE.service-now.com/api/now/table/sys_dictionary?sysparm_query=name%3Dincident

Etiqueta: column_label

Clave de API: element

Los campos personalizados están al mismo nivel que los campos estándar en la respuesta de sys_user o incident.

Cómo subir un archivo de CCAI Platform al CRM

https://INSTANCE_URL.service-now.com/api/now/attachment/upload

Método: POST

Formato de los datos de la solicitud: property

Ubicación de los datos de respuesta: data.result

Tipo: Multi-part form

Tipo de archivo adjunto: Attachment Url

URL del archivo adjunto: download_link

Parámetros: table below

Ejemplo de solicitud:

{
    file: FILE_DATA,
    table_name: incident,
    table_sys_id: RECORD_ID
}

Integra adaptadores de agentes (formularios personalizados)

En los siguientes pasos, se explica el proceso para habilitar los adaptadores de agentes y la función Click to Call en la instancia de ServiceNow.

Instala y configura OpenFrame

  1. Navega a All > System Applications > All Available Applications > All.

  2. Busca OpenFrame.

  3. Instala OpenFrame.

  4. Una vez instalado, navega a All > OpenFrame > Configurations.

  5. Crea una configuración con una URL. Si tienes varias configuraciones en una instancia de ServiceNow, es posible que tu usuario no tenga acceso a una configuración recién creada. Verifica tus grupos y la lista de órdenes de configuración de OpenFrame para determinar qué configuración usa tu usuario.

  6. Escribe sys_properties.list en la búsqueda.

  7. Editar glide.ui.concourse.onmessage_enforce_same_origin_whitelist.

  8. Agrega la URL nueva a la lista de valores.

  9. Editar sn_openframe.cross.origin.access.

  10. Agrega autoplay a la lista de valores.

Habilita la próxima experiencia de IU para los usuarios

  1. Escribe sys_properties.list en la barra de navegación y haz clic en Intro.

  2. Establece la propiedad del sistema glide.ui.polaris.experience en true.

  3. Establece la preferencia del usuario glide.ui.polaris.use en false para el sistema.

  4. Establece la preferencia del usuario glide.ui.polaris.use en true para un usuario. (Puedes crear una fila de preferencias del usuario).

Actualiza las propiedades del sistema

  1. Ingresa sys_properties.list en la barra de navegación y haz clic en Intro.

  2. Editar glide.ui.concourse.onmessage_enforce_same_origin_whitelist.

  3. Agrega la URL a la lista de valores. Los valores múltiples deben estar separados por comas.

  4. Editar sn_openframe.cross.origin.access.

  5. Agrega la reproducción automática a la lista de valores.

  6. Editar glide.ui.polaris.experience.

  7. Cambia a false, ya que algunas funciones no funcionan si están habilitadas.

Agrega la función Llamar con un clic en la parte superior del formulario

  1. Navega a System UI > UI Actions.

  2. Selecciona Create New Action.

  3. En el formulario, como se ilustra, selecciona la tabla de la que formará parte este Click to Call.

  4. En el caso de los formularios con una referencia a un contacto o usuario, usa la API de g_form.getReference para acceder al número de teléfono del usuario. En el caso de las tablas personalizadas, es posible que el ID de referencia y los atributos resultantes difieran. La comunicación con la plataforma de la CCAI será la misma, por lo que la carga útil y la estructura de datos deben seguir siendo idénticas a las siguientes:

    function clickToDial() {
      var user = g_form.getReference('caller_id',function(res) {
        var phone = res.phone || res.mobile_phone;
        var payload = {"name": "clicktodial", "number": phone}; 
        var data = {"payload": payload, "method": "openframe_communication" }; 
        CustomEvent.fireAll("openframe_request", data);
      });
    }
    
  5. Para los formularios que tienen un número dentro del formulario al que se puede llamar, usa la API de g_form.getValue para recuperar los valores pertinentes. Este es un ejemplo de la acción de IU para la tabla Usuarios. En el caso de las tablas personalizadas, los nombres de los campos del formulario pueden variar. La comunicación con la plataforma de la CCAI será la misma, por lo que la carga útil y la estructura de datos deben seguir siendo idénticas a las siguientes:

    function clickToDial() {
      var phone = g_form.getValue('phone') || g_form.getValue('mobile_phone');
      var payload = {"name": "clicktodial", "number": phone}; 
      var context = {"payload": payload, "method" : "openframe_communication" }; 
      CustomEvent.fireAll("openframe_request", context);
    }
    

Agrega la opción de Llamar por clic junto a las referencias

  1. El botón de llamada junto a las referencias a los contactos debe editarse dentro del formulario. Haz clic con el botón derecho en el campo y navega a Configurar diccionario. Para los atributos, agrega el valor show_phone o show_phone_customer_service al valor ref_contributions.

  2. En UI Macros, edita show_phone y show_phone_customer_service.

  3. Reemplaza lo siguiente:

Anterior:

var task =    {"entity": p.attr('data-task-table'), "query" :"sys_id="+p.attr('data-task-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-task-value'),"label":p.attr('data-task-label')};
                                        var company = {"entity": p.attr('data-company-table'),"query":"sys_id="+p.attr('data-company-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-company-value'),"label":p.attr('data-company-label')};
                                        var caller = {"entity": p.attr('data-caller-table'),"query": "sys_id="+p.attr('data-caller-id')+"$[AMP]sysparm_view="+p.attr('data-task-view'),"value":p.attr('data-caller-value'),"label":p.attr('data-caller-label')};
                                        
                                        var callContext = [];
                                        callContext.push(task);
                                        callContext.push(company);
                                        callContext.push(caller);
                
                                        var metaData = {"phoneNumber":p.attr('data-caller-phone'),"taskId":p.attr('data-task-id')};
                                        
                                        var data =    {"metaData":metaData , "data": callContext};
                                        var payload = {"type": "OUTGOING_CALL", "data" : data};
                                        var createInteractionData ={};
                                        createInteractionData.interactionSysId = -1;
                                        createInteractionData.direction = 'outbound';
                                        createInteractionData.context_document = p.attr('data-task-id');
                                        createInteractionData.context_table = p.attr('data-task-table');
                                        createInteractionData.account = p.attr('data-company-id');
                                        if(p.attr('data-caller-table') === 'customer_contact')
                                                createInteractionData.contact = p.attr('data-caller-id');
                                        createInteractionData.opened_for = p.attr('data-caller-id');
        
                                        var ga = new GlideAjax('sn_openframe.OpenFrameAjaxUtility');
                                        ga.addParam('sysparm_name', 'createInteractionWithPropertyCheck');
                                        ga.addParam('context', JSON.stringify(createInteractionData));
                                        ga.getXML(function(serverResponse) {
                                                var result = serverResponse.responseXML.getElementsByTagName("result");
                                                var output = JSON.parse(result[0].getAttribute("data"));
                                                if(output.status == "success"){
                                                        var interaction = {"entity": "interaction", "query" :"sys_id="+output.fields.interactionSysId, "value":output.fields.number, "label":"Interaction", "display":false};
                                                        payload.data.data.push(interaction);
                                                }
                                                var context = {"payload": payload, "method" : "openframe_communication" };
                                                jslog("context with interaction : "+ JSON.stringify(context));
                                                CustomEvent.fireAll("openframe_request", context);
                                        });

Nuevo:

var phone = p.attr('data-caller-phone')
                   var payload = {"name": "clicktodial", "number": phone}; 
                   var data = {"payload": payload, "method": "openframe_communication" }; 
                   CustomEvent.fireAll("openframe_request", data);

Configuración de CRM

En los siguientes pasos, se ilustra cómo conectar la API a ServiceNow con el portal de la plataforma de CCAI.

  1. En el portal de la CCAI Platform, navega a Settings > Developer Settings > CRM.

  2. En la sección Plataforma del agente, selecciona ServiceNow.

  3. Ingresa la información de tu dominio de ServiceNow en el campo Dominio de ServiceNow. Puede ser una instancia de desarrollador o de proveedor según sea necesario, pero es una correlación directa con la instancia y es la primera parte de la URL en la dirección web del portal de ServiceNow: https://{your instance}.servicenow.com.

  4. En el campo Selección de la nube de ServiceNow, selecciona Incident para un tipo de ticket básico. Si seleccionas Custom, aparecerán opciones adicionales. Los incidentes son extensiones de la tabla de tareas, y los objetos personalizados deben ser extensiones de los incidentes.

  5. En los campos Credenciales de autenticación, ingresa tu nombre de usuario y contraseña.

  6. Si seleccionaste Incident para el tipo de campo Selección de Cloud, verás los siguientes campos:

    • Lookup Account Object incluye tres campos desplegables: Object Type, Phone Number lookup fields y Phone number primary field.
  7. Si seleccionaste Custom para el tipo de campo Selección de Cloud, verás los siguientes campos:

    • Objeto de registro de búsqueda:
      • Tipo de objeto de registro base: Selecciona un tipo de tabla task o incident.
      • Tipo de objeto de registro: Este campo se completará con datos si se extendió una tabla de incidentes, y puedes seleccionarlo si es necesario.
    • Lookup Account Object incluye tres campos desplegables: Object Type, Phone Number lookup fields y Phone number primary field.
  8. Campos de ID de usuario personalizados: Marca esta casilla si deseas habilitar campos de búsqueda de usuarios personalizados para las sesiones del SDK para dispositivos móviles o del SDK web.

  9. Formato de número de teléfono: Te permite seleccionar el formato que deseas usar para mostrar los números de teléfono.

  10. Archivo de metadatos de la sesión: Marca esta casilla para adjuntar metadatos de la sesión a los registros del CRM.

  11. Haz clic en Guardar para guardar tus selecciones. Si marcaste la casilla Campos de ID de usuario personalizados, tendrás la opción de crear campos personalizados para los registros. Esto agregará pestañas de campos personalizados en la parte inferior de cada incidente de ServiceNow, debajo de las secciones de código de resolución y notas de resolución de la página.

Campos personalizados para registros

Estos son campos personalizados que ya se crearon para la instancia de ServiceNow en el diseñador de formularios. En la documentación de ServiceNow, en la sección Configuración del CRM de ServiceNow, sección Cómo agregar campos personalizados de forma manual, encontrarás instrucciones para crear otros campos personalizados.

Campo Tipo Definición
u_ujet_custom_field_after_call_work String Duración del trabajo después de la llamada
u_ujet_custom_field_call_duration String Duración de la llamada
u_ujet_custom_field_comm_id Número entero ID de llamada o chat, según el tipo de contacto
u_ujet_custom_field_rating Número entero Puntuación de Satisfacción del cliente (CSAT)
u_ujet_custom_field_email_via_web String Se envió un correo electrónico desde la Web
u_ujet_custom_field_feedback String Comentarios
u_ujet_custom_field_from_phone_number String Número de teléfono de la persona que llama
u_ujet_custom_field_hold_duration String Tiempo total de espera
u_ujet_custom_field_menu_path String Selección de menú
u_ujet_custom_field_queue_name String Nombre de la tarea en cola
u_ujet_custom_field_session_type String Tipo de sesión
u_ujet_custom_field_verification Verdadero o falso Confirma que se completó la verificación
u_ujet_custom_field_wait_time String Tiempo total de espera

Configura OAuth

Para configurar OAuth, sigue los pasos para crear una aplicación de OAuth en ServiceNow. Luego, ingresa las credenciales (ID de cliente de OAuth y secreto de cliente de OAuth) en Configuración del desarrollador > CRM > Método de autenticación.

Crea una aplicación de OAuth en ServiceNow

  1. En tu cuenta de ServiceNow, navega a All > System OAuth > Application Registry.

  2. Crea una aplicación de OAuth y selecciona Crear un extremo de API de OAuth para clientes externos.

  3. Configura los siguientes campos:

    • Nombre: Ingresa un nombre único.

    • ID de cliente: El servidor de OAuth de ServiceNow genera automáticamente el ID de cliente.

    • Secreto del cliente: Es el secreto del cliente de la aplicación de OAuth. Déjalo vacío para que se genere automáticamente.

    • Duración del token de actualización: Es el tiempo, en segundos, durante el que el token de actualización será válido.

    • Duración del token de acceso: Es el tiempo, en segundos, durante el que el token de acceso será válido.

    • URL de redireccionamiento: Ingresa la URL de tu entorno más el subdirectorio. Por ejemplo: https://servicenow.yourcompany.co/v1/servicenow/oauth_callback

    • Enforce Token Restriction: Restringe el uso del token de acceso a las APIs definidas en las políticas de acceso a la API de REST que se encuentran en la documentación de ServiceNow. Si desmarcas esta opción, se permitirá el uso del token de acceso en otras APIs de REST.

  4. Haz clic en Enviar.

  5. Después de crear la aplicación, vuelve al registro y recupera el ID de cliente y el secreto del cliente recién creado.

Actualiza la configuración en la configuración para desarrolladores

  1. Navega a Configuración para desarrolladores > CRM.

  2. Asegúrate de que la configuración se haya ingresado y establecido según los pasos anteriores.

  3. En el método de autenticación, haz clic en OAuth.

  4. Ingresa el ID de cliente y el secreto del cliente de OAuth. (Consulta el paso 5 anterior).

  5. Haz clic en Guardar.

  6. Haz clic en Vincular credenciales.

Asignación de campos personalizados para el agente virtual

Si usas Virtual Agent, configura este campo en la pantalla Asignaciones de campos personalizados. Esto permite que las variables del agente virtual se transfieran de la carga útil de la sesión del agente virtual a ServiceNow. Los nombres de las variables pueden ser cualquier cadena. Las etiquetas de los campos que se indican aquí son un ejemplo.

En la pantalla Custom Field Mappings, configura la conexión entre las variables creadas por las definiciones de carga útil que usaste en la configuración inicial del agente virtual y la variable pertinente dentro de ServiceNow.

Título de la asignación de campos Etiqueta del campo de CRM Etiqueta de campo de datos personalizada
Comentarios sobre el agente virtual ccaip_custom_field_incident_feedback va_feedback

Configura otros parámetros

Encontrarás los demás parámetros de configuración que te permitirán integrar correctamente la plataforma de CCAI en tu instancia de ServiceNow en el menú desplegable Configuración. Consulta los vínculos de la siguiente lista para obtener más información sobre la configuración de cada sección.

Resultados de la prueba

Ahora puedes verificar la funcionalidad de tus flujos de llamadas y chats haciendo clic en los botones correspondientes en la parte superior de la pantalla del portal de CCAI Platform. Es importante que te asegures de que el bloqueador de ventanas emergentes esté inhabilitado cuando ejecutes esta prueba.

Deberías ver que se creó un incidente en ServiceNow, con el contacto de la llamada o el chat que aparece en la sección Actividades del incidente. Esto debería aparecer como una nota de trabajo, en lugar de un comentario del incidente, para que los clientes no vean esta actividad de backend.

La descripción del caso se completará automáticamente con "Llamada con CCAI Platform" o "Chat con CCAI Platform", y es posible que los agentes deban actualizarla.

Una vez que estés conforme con los resultados de tu llamada o chat, puedes ingresar un código y una nota de resolución (si se configuraron los campos de código y notas de resolución de ServiceNow) y, luego, cerrar el caso.

Para verificar que el caso se cerró, es posible que debas hacer clic en el botón de navegación back de tu navegador. Se espera que, en la instancia de ServiceNow, después de resolver el caso, este se cierre automáticamente y se te dirija a la página de registro del cliente.