En el flujo, comenzamos por configurar los scripts de eventos en el widget de inicio. A continuación, podemos ver que el widget de inicio tiene configurados los dos scripts de eventos.
Para crear el código del script de eventos, deberá agregar un nuevo script de eventos al widget de inicio y, luego, el código se puede escribir directamente en el editor de flujo, como se muestra a continuación.
Tanto el evento de Compromiso Aceptado como el de Disposición Guardada utilizan un código similar. Ambos son simples bloques de código Javascript que utilizan la función HTTP incorporada para generar una solicitud HTTPS POST saliente.
Código de script del evento Interacción aceptada
En este ejemplo de código, incluimos el ID de interacción, el número de teléfono de la persona que llama, el correo electrónico del agente y el nombre de la cola. Este código se ejecutará cuando el agente responda a la interacción y comience a hablar con el consumidor. Este es un ejemplo de lo que probablemente sea la cantidad mínima de información requerida para generar una pantalla emergente o para iniciar el registro de la nueva llamada. Cabe mencionar que, si su configuración de flujo de ZCC recopila datos sobre la persona que llama en el flujo/IVR, como su número de cuenta, número de caso/ticket, etc., es tan fácil como agregar variables adicionales a la variable request_body para incluir datos adicionales en esta solicitud HTTP.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"] } const result = await req.post('https://api.example.com/acceptedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
Código de script del evento Disposición guardada
Para el evento de disposición guardada reutilizaremos el código utilizado en el ejemplo anterior, con la adición de la variable de disposición añadida en la línea 9. Este bloque de código se ejecutará cuando el agente seleccione la disposición para la llamada, lo que ocurre como la última acción que realiza el agente en la interacción. Mediante el envío de esta solicitud, el sistema externo puede rastrear que el agente haya completado la disposición de la interacción. Al igual que el evento Interacción aceptada anterior, se pueden incluir variables adicionales según sea necesario en función de su caso de uso.
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"], "disposition_name": var_get()["global_system.Engagement.disposition"] } const result = await req.post('https://api.example.com/dispositionedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
Según su solución, puede que los scripts de eventos de flujo anteriores sean suficientes o puede que necesite algunos de los eventos de la API de Zoom App Marketplace para ayudar a cubrir todos los casos de uso necesarios de su integración. Por ejemplo, puede complementar los dos eventos de flujo anteriores suscribiéndose a los eventos de la API de Zoom App Marketplace para eventos de poner en espera/reanudar/silenciar/reactivar audio. Estos eventos adicionales proporcionarían a su aplicación información sobre la frecuencia con la que los agentes ponen las llamadas en espera o las silencian.
Los dos scripts de eventos de flujo anteriores y los eventos de enganche web/websocket de Zoom App Marketplace están disponibles para su solución.