Table of Contents

Captura del evento Agente Conectado en Open Messaging

Para detectar cuándo un agente ha sido asignado a una interacción en Genesys a través de Open Messaging, se utiliza el evento:

    v2.detail.events.conversation.{id}.user.start

Este evento es emitido por el sistema cuando la cola asigna una interacción a un agente, y se encuentra en la etapa de ringing en la interfaz del agente.

Casos de uso

Existen dos escenarios diferenciados según la configuración del agente:

  1. Agente con AutoAnswer habilitado

    Descripción: La interacción es respondida automáticamente por el sistema en cuanto se presenta al agente.

    Comportamiento del evento: El evento user.start es considerado válido, ya que se garantiza que el agente está conectado a la sesión.

    Resultado: Se registra el evento como un Agente Conectado sin necesidad de validación adicional.

  2. Agente con contestación manual

    Descripción: El agente debe aceptar manualmente la interacción cuando se le presenta.

    Comportamiento del evento: Aunque se emite el evento user.start en la etapa de ringing, no garantiza que el agente haya contestado la interacción.

    Validación adicional: Se implementa una verificación posterior en el flujo para confirmar si el agente efectivamente atendió la interacción, y así evitar registrar un falso positivo.

Para amboa casos de uso se requieren dos acciones, una para consultar la innformaci´ón del agente, y otra, para enviar el evento a Lynn, para que el cliente pueda recibir el mensaje de conexión del agente.

Captura y Envío del Evento "Agente Conectado" desde Genesys a Lynn

A continuación se describen los componentes necesarios para implementar esta funcionalidad en el entorno de Genesys Cloud.

Componentes a configurar:

Componente Descripción
[Actions] Consulta Agente Obtiene la información del agente desde Genesys.
[Actions] Enviar evento a Lynn Envía los datos estructurados hacia Lynn vía HTTP POST.
[Trigger] Captura el evento user.start desde Genesys.
[Workflow] Flujo que procesa y envía el evento según el escenario detectado.

[Actions] Consulta información del agente

La función de esta acción es recuperar la información del usuario al momento de generarse el evento. Para ello, se consulta el userId obtenido desde el evento y se retorna un objeto JSON como cadena de texto (string). Esta cadena será procesada dentro del flujo, donde se extraerá el nombre del agente y las interacciones que tiene vigentes.

Integración: Genesys Cloud Data Actions

Genesys Cloud Data action

Contrato

Input: userID(string) Output: result(string)

Action Contract

Configuración

Método: GET
Endpoint: /api/v2/analytics/agents/${input.userId}/status
Response:

    {
        "translationMap": {},
        "translationMapDefaults": {},
        "successTemplate": 
            {"
                result": "$esc.jsonString(${rawResult})"
            }
    }

GC Action Configuration

Note

Esta acción requiere el permiso Analytics → AgentState → View, por lo tanto, la integración asociada debe contar con la autorización necesaria para ejecutar esta API.

[Actions]: Enviar el evento a Lynn. (/PureCloud/OpenMessaging_OnEvent)

La función de esta acción es enviar el evento a Lynn utilizando el endpoint configurado. El cuerpo (body) de la solicitud debe construirse respetando los nombres de los objetos esperados por la API.

Integración: Web Services Data Actions

GC Web Service Data Action

Contrato

Input: endpoint (string)
Input: body (string)

GC Web Service Data Action-Action Contracts

Configuración

Method: POST
Endpoint: ${input.endpoint}
Body: ${input.body}
Response:

    {
        "translationMap": {},
        "translationMapDefaults": {},
        "successTemplate": "${rawResult}"
    }

GC Web service data action - Action Configuration

Escenario donde la cola tiene AutoAnswer

En este escenario, la cola tiene activado el AutoAnswer, por lo que la llamada asignada al agente se responde automáticamente. Por ende, en el flujo solo es necesario recuperar el nombre del agente.

GC AutoAnswer Flow

El flujo consta con las siguientes componentes:

GC Variable Accesibility

[CallDataActions] Para invocar el Actions que recupera el la información del Agente.

Input: Flow.userId (Expresión)

Output: Flow.result (Expresión)

Call Data Action

[UpdateData]

Se configura en la rama SUCCESS del componente anterior. Su propósito es procesar la respuesta del servicio y transformarla en un objeto JSON (JsonObject).

Variable Name: Flow.JsonObject
Value To Assign: JsonParse(Flow.result)

!GC Update Data

[Call Data Actions] Para invocar el servicio que envía el evento a Lynn

GC Call Data Action enviar evento a Lynn

Input endpoint(Literal): <<Aqui Base Url>>/PureCloud/OpenMessaging_OnEvent
Input body (Expresión):

    { 
        "conversationId": "Flow.conversationId", 
        "userId": "Flow.userId", 
        "userName": "ToString(Flow.JsonObject.userName)",
        "type": "eventAgentConnect", 
        "provider": "Flow.provider" , 
        "externalId": "Flow.addressTo"
    }
Note

En el campo endpoint, se debe reemplazar Aquí Base Url por la base URL recomendada por Lynn. Esta URL se define al configurar el módulo de extensión para transferencias, y su valor es dinámico: Lynn selecciona automáticamente la mejor opción según la región de Genesys.

Valores de configuración en Lynn

Resumen del funcionamiento:

En el caso ideal, cuando está configurado el AutoAnswer, lo primero que hace el sistema es recuperar el nombre del ejecutivo. Luego, se envía esta información a Lynn en un string con formato JSON, el cual se construye dinámicamente.

Es importante respetar las claves (KEYs) definidas, ya que son los valores esperados por Lynn para procesar correctamente la información.

[Workflow] Avanzado, este es sugerido para los casos donde el Agente contesta Manualmente las interacciones.

Cuando el evento activa el flujo, se espera un tiempo prudente para permitir que el agente responda. A continuación, se invoca un servicio que obtiene el estado actual del agente.

Este estado se evalúa dentro de un bucle, ya que el agente podría estar gestionando múltiples interacciones simultáneamente. En cada iteración, se verifica si el conversationId correspondiente está presente y siendo atendido. Solo cuando esta condición se cumple, se envía el evento a Lynn.

GC Flujo resp manual

El flujo se representaría como en la siguiente imagen.

Componentes que aplican a este caso de uso:

[Loop] Bucle

GC bucle

Current Index: Flow.count
Maxi Loop Count: ToInt(Flow.JsonObject.sessionCount)

[Decision] para Evaluar si la interacción esta activa

Expression (Expression):

    ToString(Flow.JsonObject.sessions[Flow.count].conversationId) == Flow.conversationId AND ToString(Flow.JsonObject.sessions[Flow.count].segmentType) == "interact"

GC Decision

Important

Esta segunda solución se puede adaptar para ofrecer mayor flexibilidad en los tiempos de ejecución, utilizando intervalos de espera (delay) más cortos y realizando reintentos en los casos en que el agente aún no haya atendido.

[TRIGGER] Agente Conectado

Creamos un Trigger para el evento v2.detail.events.conversation.{id}.user.start. Se recomienda aplicar filtros asociados al queueId de las colas que nos interesan, para evitar el envío de eventos no deseados. Este Trigger redirige al flujo de trabajo (Workflow) que creamos previamente.

GC trigger

Note

Recuerde activar el Trigger para que los eventos se procesen correctamente.