Layer-api-log-service

De Plataforma COA Crowd
Saltar a: navegación, buscar

El servicio se creo pensando en almacenar información de los eventos y/o acciones realizadas por parte del cliente dentro del componente podlet-web-cvideocall con la finalidad de logar tener una manera de tener un track de lo sucedido dentro de un proceso de videollamada y poder identificar posibles problemas así como sus soluciones.

Dependencias

Base de datos

Para el correcto funcionamiento del servicio se requiere la creación/existencia del siguiente schema dentro de la db Microservicios de malla y/o producción:

Schema Tablas
serv_layer_api_log_service
TABLE serv_layer_api_log_service.videocall_log (
 id serial4 NOT NULL,
 podlet varchar(20) NULL,
 rsrvtn varchar(50) NULL,
 task_uuid varchar(50) NULL,
 evento text NULL,
 created_at timestamp NULL,
 code_result varchar(10) NULL,
 worker_uuid varchar(50) NULL,
 CONSTRAINT videocall_log_pkey PRIMARY KEY (id)
);
TABLE serv_layer_api_log_service.videocall_resume (
 id bigserial NOT NULL,
 reservation_id varchar(50) NOT NULL,
 task_uuid varchar(50) NOT NULL,
 worker_uuid varchar(50) NULL,
 config_started timestamp NULL,
 config_ended timestamp NULL,
 url_clicked timestamp NULL,
 task_queued timestamp NULL,
 task_assigned timestamp NULL,
 videocall_begining timestamp NULL,
 client_interaction_ending timestamp NULL,
 agent_post timestamp NULL,
 last_description varchar(50) NULL,
 last_description_code varchar(10) NULL,
 podlet varchar(20) NULL,
 attempts int4 NULL DEFAULT 0,
 CONSTRAINT videocall_resume_pk PRIMARY KEY (id)
);

Descripción de las tablas:

videocall_log:

Es la tabla utilizada para almacenar todos los eventos/acciones realizadas dentro del proceso de videollamada por parte del cliente y agente, donde una misma reservación de videollamada puede tener N intentos de proceso.

Campos:

 
  • id: Es un campo entero autoincremental que funje como llave primaria por cuestiones de jpa.
  • podlet: Almacena el dato para identificar quien esta enviando el registro cvideocall (cliente) y videollamada (agente).
  • rsrvtn: Cuando el registro es ingresado por el cliente, este dato es el numero de reservación, por otro lado cuando es el agente quien envía el registro el dato corresponde al uuid del task request de la tarea correspondiente.
  • task_uuid: Cuando el registro es ingresado por el cliente y la tarea aun no ha sido ingresada para checkin el dato es el numero de reservación en cambio cuando es enviado por el cliente y la tarea ya ha pasado por el proceso de checkin este dato será el  task_segment_id de la tarea correspondiente, por otro lado cuando es el agente quien envía el registro el dato corresponde al uuid del task request de la tarea correspondiente.
  • evento: En este campo se ingresa la información que se desea guardar ej. descripción del evento
  • created_at: Fecha generada automaticamente al momento en que se genera el registro.
  • code_result: Dentro del flujo hay procesos clave que envian un registro con codigo especifico el cual es almacenado en este campo.
  • worker_uuid: este campo es registrado unicamente por parte del agente.

videocall_resume:

Es la tabla utilizada para tener un resumen único por cada una de las reservaciones de proceso de videollamada, este registro se realiza en base a los code_result registrados por parte del cliente en la tabla videocall_log, esta tabla es registro secuencial de tiempos donde cada columna representa un punto especifico del proceso de videollamada .

Campos:

  • id: Es un campo entero autoincremental que funje como llave primaria por cuestiones de jpa.
  • reservation_id: Es el id de reservación del proceso de videollamada de cada uno de los clientes.
  • task_uuid: Es el id de tarea dentro de la plataforma crowd para el proceso de videollamada de cada cliente.
  • worker_uuid: Es el id del ultimo agente encargado de recibir la tarea dentro de plataforma crowd.
  • config_started: Es la hora en la cual inicia la configuración de permisos por parte del cliente. ICNF
  • config_ended: Es la hora en la cual termina la configuración de permisos por parte del cliente. TCNF
  • url_clicked: Es el momento en el que termina el proceso de checkin. IOTP
  • task_queued: Es la hora en la cual la tarea ha sido ingresada dentro de redis para ser asignada a un agente. QTL
  • task_assigned: Es la hora en la cual la tarea es asignada a un agente. TA
  • videocall_begining: Es la hora en la cual el cliente comienza a ver el video de bienvenida al proceso.
  • client_interaction_ending: Es la hora del ultimo registro de log ingresado por parte del cliente.
  • agent_post: Es la hora en la cual se recibe el mensaje correspondiente al fin exitoso del proceso de videollamada. DESP
  • last_description: Es el ultimo code_result obtenido.
  • last_description_code: Es el ultimo code_result obtenido.
  • podlet: Es el front del cual fue recibido el ultimo dato code_result.
  • attempts: Es un contador de ingresos del cliente a su respectivo numero de reservacion.

Secrets

  • secret-layer-api-log-service:

{
  "nameSpace": "app-autonomation",
  "secretName": "secret-layer-api-log-service",
  "secretParams": [
    {
      "paramName": "dbname",
      "paramValue": "Microservicios"
    },
    {
      "paramName": "defschema",
      "paramValue": "serv_layer_api_log_service"
    },
    {
      "paramName": "instance",
      "paramValue": "{instancia_db_depende_ambiente}"
    },
    {
      "paramName": "password",
      "paramValue": "{user_db_password}"
    },
    {
      "paramName": "projectid",
      "paramValue": "{projectid_depende_ambiente}"
    },
    {
      "paramName": "username",
      "paramValue": "{user_db_name}"
    }
  ]
}

  • secret-layer-api-log-service-env:

{
  "nameSpace": "app-autonomation",
  "secretName": "secret-layer-api-log-service",
  "secretParams": [
    {
      "paramName": "boveda_application_id",
      "paramValue": "{depende_ambiente}"
    },
    {
      "paramName": "boveda_id_service_account",
      "paramValue": "{depende_ambiente}"
    },
    {
      "paramName": "boveda_secret",
      "paramValue": "{depende_ambiente}"
    },
    {
      "paramName": "layer_api_error_handler",
      "paramValue": "{url layer-api-error-handler-service segun ambiente}"
    },
    {
      "paramName": "project_timezone",
      "paramValue": "America/Mexico_City"
    },
    {
      "paramName": "url_event_bus",
      "paramValue": "{url layer-api-event-bus-service segun ambiente}"
    }
  ]
}

Endpoints

Descripción Endpoint Tipo Petición Petición Respuesta
Es el endpoint utilizado para realizar el registro de logs por parte de los front cvideocall y videollamada ~/api/add_videocall_log PUT {
 podlet: {interprete_origen}, 
    rsrvtn: {no_reservacion_cliente}, 
    task_uuid: {id_crowd},
    evento: {contenido_log},
 code_result: {codigo_de_evento}
}

Este endpoint es utilizado para realizar la consulta de logs de una videollamada, cuando recibe el idreservacion o idsegmento retornara todos los logs generados por el front cvideocall, por otro lado cuanto recibe como parametro el idrequest retornara los logs generados por el front videollamada. ~/api/get_videocall_log GET ~?uuid={idreservacion, idsegmento o idrequest} {
  "result": [
    {
      "id": 24390,
      "podlet": "cvideocall",
      "rsrvtn": "8cfa9163-ff0a-4bab-8411-d4b1cd07d566",
      "task_uuid": "8cfa9163-ff0a-4bab-8411-d4b1cd07d566",
      "evento": "ICNF",
      "created_at": 1627663236405,
      "code_result": "ICNF",
      "worker_uuid": null,
      "create_at_str": "2021-07-30 11:40:36.405"
    },
 ....
  ]
}

Este endpoint es similar a get_videocall_log, con la diferencia que permite mas parametros y todos son opcionales, si el endpoint es llamado sin parametros por default arrojara todos los logs de todas las videollamadas generadas durante el dia en curso. Logica interna de consulta por parametros:

from = from!=null ? from : today 00:00:00
to = to!=null ? to : from+1 00:00:00

consulta:

uuid in (uuid!=null ? case uuid like s-1 ? select rsrvtn where task_uuid = uuid : uuid : uuid)
upper(podlet) = isnull(upper(podlet),upper(podlet))
upper(evento) like %(isnull(upper(evento),upper(evento)))%
code = isnull(code,code)
worker_uuid = isnull(workerid,worker_uuid)
created_at between from and to
~/api/find_videocall_log GET ~?uuid={idreservacion, idsegmento o idrequest}
&podlet={front del cual se buscan los logs}
&evento={texto completo o parcial a encontrar &dentro del evento}
&code={codigo enviado al log}
&workerid={idworker del cual se buscan registros}
&from={fecha inicio busqueda formato yyyyMMdd}
&to={fecha fin busqueda formato yyyyMMdd}
&order={asc o desc, null retorna asc}
{
  "result": [
    {
      "id": 24390,
      "podlet": "cvideocall",
      "rsrvtn": "8cfa9163-ff0a-4bab-8411-d4b1cd07d566",
      "task_uuid": "8cfa9163-ff0a-4bab-8411-d4b1cd07d566",
      "evento": "ICNF",
      "created_at": 1627663236405,
      "code_result": "ICNF",
      "worker_uuid": null,
      "create_at_str": "2021-07-30 11:40:36.405"
    },
 ....
  ]
}

Obtiene el registro del resumen de puntos especificos de la llamada.

~/api/get_videocall_log_resume GET ?uuid={idreservacion, idsegmento o idrequest} {
"result": [
{
"id": 341, "reservation_id": "8cfa9163-ff0a-4bab-8411-d4b1cd07d566", "task_uuid": "s-1-10facd0c-da32-4e42-8fd2-314c46bed2f5", "worker_uuid": null, "config_started": 1627663805054, "config_ended": 1627663843663, "url_clicked": 1627663904267, "task_queued": 1627663904312, "task_assigned": 1627663915559, "videocall_begining": 1627663947318, "client_interaction_ending": 1627663947318, "agent_post": null, "last_description": "VCS", "last_description_code": "ABNDC", "podlet": "cvideocall", "attempts": 3
}
]

}

Obtiene el numero total de reservaciones que han sido ingresadas al servicio de log.

~/api/get_rooms GET
{
"result": 133

}