Diferencia entre revisiones de «Manual de operación de vFlow»

De VIVAitwiki
Ir a la navegaciónIr a la búsqueda
Línea 223: Línea 223:
 
== logs útiles ==
 
== logs útiles ==
 
  tail -f /var/log/vFlowProxy/vFlowProxy.log
 
  tail -f /var/log/vFlowProxy/vFlowProxy.log
                En nodo vFlowProxy
+
::En nodo vFlowProxy
                para cualquier canal
+
::para cualquier canal
  
 
  asterisk -rv | grep callsquare_name
 
  asterisk -rv | grep callsquare_name
                en nodo Omnisuite
+
::en nodo Omnisuite
                para canal voz
+
::para canal voz
  
 
  tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log
 
  tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log
                en nodo Omnisuite
+
::en nodo Omnisuite
                para canal voz
+
::para canal voz
  
 
  tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log
 
  tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log
                para canal voz
+
::para canal voz
 
 
 
 
  
 
== Para probar desde vFlow ==
 
== Para probar desde vFlow ==
  
 
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también ".ini" en vFlow
 
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también ".ini" en vFlow

Revisión del 13:28 5 feb 2026

1 Descripción general vFlow

vFlow es un módulo de conexión a sistemas de inteligencia artifical para sistemas de comunicaciones unificadas, ya sean sistemas corporativos o contact center Gracias a vFlow, las plataformas de UC dispondrán de una solución para comunicarse con sistemas IA utilizando un mismo mecanismo independientemente de la solución de inteligencia artificial que se utilice

Para proporcionar el servicio de manera completa, vFlow (en concreto el orquestador) se conectará a sistemas de inteligencia artificial (LLM) que permitirán desarrollar los agentes definidos en los orquestadores

Conceptos:

  • Plataforma--> Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call
  • Orquestador--> Plataforma agéntica de IA (por ejemplo Flowise)
  • vFlowProxy--> Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores
  • LLM--> Modelo de lenguaje natural que usará un orquestadores
  • Agente--> Cada uno de los flujos creados en el orquestadores
  • Servicio--> Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)
Arquitecura de vFlow


Los módulos principales de vFlow son:

  • vFlowProxy: Recibe las conexiones de los sistemas de comunicaciones unificadas, y conecta con los orquestadores de Inteligencia Artificial de manera segura y adaptada al tipo de servicio; el acceso a vFlow Proxy desde las plataformas se realizará mediante:
  • Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow
  • API REST: Alternativa al programa cliente, vFlowProxy proporciona una API REST que facilita que cualquier plataforma pueda comunicarse mediante un procedimiento estándar y documentado
  • Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema
  • Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)

Otros elementos relevantes serán:

  • Base de datos vFlow:
  • Almacena información sobre sesiones y transacciones realizadas
  • Almacena información de configuración sobre vFlow
  • Gestiona el RAG de las inteligencias artificiales a usar


2 Integración de vFlow desde Omnisuite

2.1 Descripción general

En Omnisuite, la integración con vFlow, se realiza con el programa vFlowOmnisuite, que podrá ser invocado como ejecutable (más rápido, para debian), o como Python (más universal)

   /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)
   /usr/local/sbin/vFlowOmnisuite.py (LEGACY)

Asociado al programa existen los siguientes ficheros de configuración (.ini):

Un ".ini" de plataforma Omnisuite en vFlow --> Solo contiene uuid de la plataforma; se entrega un ".ini" a modo de ejemplo en /etc/MDtel/vFlow/platform.ini

EJEMPLO ".INI" DE PLATAFORMA
   [uuids]
   platform=1d111530-e22d-11f0-b0f2-5254008bef96


Un ".ini" por agente en vFlow --> Solo contiene uuid del agente según su identificación en vFlow (NO en un orquestador, por ejemplo flowise); se entrega un ".ini" asociado a un agente "loop" existente en Flowise /etc/MDtel/vFlow/agent_loop_01.ini

EJEMPLO ".INI" DE AGENTE
   [uuids]
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96


Un ".ini" por servicio --> Configuración de cada servicio en Omnisuite; se entrega un ".ini" a modo de ejemplo en /etc/MDtel/vFlow/service.ini En cada fichero de servicio configuraremos

  • Donde está Vflow
  • Agente
  • Plataforma
  • timeout_s --> Importante, es afectado por el LLM
  • channel_text_type --> IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)
  • environment --> production, staging, test
EJEMPLO ".INI" DE SERVICIO
  [arch_uuids]
  agent=/etc/MDtel/vFlow/agent_loop_01.ini
  platform=/etc/MDtel/vFlow/platform.ini

  [vflow]
  host_port=172.25.129.242:7900
  timeout_s=20
  # channel_type=[voice|chat|email]
  channel_type=chat
  # environment=[production|staging|test]
  environment=production
  language=es

  [omnisuite]
  # channel_text_type=[chat|mail|sms|whatsup]
  channel_text_type=chat
  service_id=vflow_service_id
  service_name=vflow_service_name

2.2 Invocación

2.2.1 Para canales de texto

Para canales de texto en Omnisuite existe un único Comando de invocación "omnisuiteText"

/usr/local/sbin/vFlowOmnisuite <config_arch> omnisuiteText <omnisuite_id> <omnisuite_websiteId> <omnisuite_createdAt> <vflow_client_id> <vflow_client_phone_number> <vflow_client_email> <question>

Parámetros ( Los OPCIONALES son "" si no se envía valor):

Parámetro Obligatoriedad Descripción
`<config_arch>` OBLIGATORIO ".ini" del servicio
`<omnisuite_id>` OBLIGATORIO Identificativo de la interacción en Omnisuite
`<omnisuite_websiteId>` OBLIGATORIO Identificativo del servicio en Omnisuite (ej. website id en chat)
`<omnisuite_createdAt>` OBLIGATORIO Creación de la interacción
`<vflow_client_id>` OPCIONAL Id de cliente en Omnisuite
`<vflow_client_phone_number>` OPCIONAL Telf de cliente en Omnisuite
`<vflow_client_email>` OPCIONAL Email de cliente en Omnisuite
`<question>` OBLIGATORIO Texto a enviar al orquestado (p. ej. Flowise)
Ejemplo de respuesta JSON
{
 "errorNum": 0,
 "errorStr": "OK",
 "session": "e926548d-fdcf-11f0-a793-525400ef204c",
 "language": "es",
 "response": "HOLA"
}

2.2.2 Para canales de voz

Para canales de voz, existen comandos para "abrir sesión", "enviar texto" y "cerrar sesión"

2.2.2.1 Abrir sesión
/usr/local/sbin/vFlowOmnisuite <config_arch> sessionOpen <omnisuite_UniqueId> <vflow_client_id> <vflow_client_phone_number> <vflow_client_email>

Parámetros (Los OPCIONALES son "" si no se envía valor):

Parámetro Requisito Descripción
<config_arch> OBLIGATORIO ".ini" del servicio
<omnisuite_UniqueId> OBLIGATORIO Unique_ID de asterisk de la llamada en Omnisuite
<vflow_client_id> OPCIONAL Id de cliente en Omnisuite
<vflow_client_phone_number> OPCIONAL Telf de cliente en Omnisuite
<vflow_client_email> OPCIONAL Email de cliente en Omnisuite


Ejemplo de respuesta JSON
{
   "errorNum": 0,
   "errorStr": "OK",
   "session": "ec73df29-f08a-11f0-a8ec-525400ef204c",
   "platform_id": "146"
}

El value correspondiente al key "session" deberá ser guardado en una variable para siguientes invocaciones

2.2.2.2 Enviar texto
/usr/local/sbin/vFlowOmnisuite <config_arch> textRequest <vflow_session_uuid> <question>

Parámetros:

Parámetro Requisito Descripción
<config_arch> OBLIGATORIO ".ini" del servicio
<vflow_session_uuid> OBLIGATORIO Variable "session" almacenada en el "sessionOpen"
<question> OBLIGATORIO Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)
Ejemplo de respuesta JSON
{
   "errorNum": 0,
   "errorStr": "OK",
   "session": "c6f6fad7-f6c1-11f0-a793-525400ef204c",
   "language": "ES",
   "response": "Cristóbal Colón."
}
2.2.2.3 Cerrar sesión
/usr/local/sbin/vFlowOmnisuite <config_arch> sessionClose <vflow_session_uuid> <vflow_cause>

Parámetros (Los OPCIONALES son "" si no se envía valor):

Parámetro Estado Descripción
<config_arch> OBLIGATORIO ".ini" del servicio
<vflow_session_uuid> OBLIGATORIO Variable "session" almacenada en el "sessionOpen"
<vflow_cause> OPCIONAL (normal, abandoned, expired, other)


Ejemplo de respuesta JSON
{
   "errorNum": 104,
   "errorStr": "Wrong session"
}

3 Ejemplos para omnisuite

Ejemplo de chat

/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_chat.ini" "omnisuiteText" "{{interaction.id}}" "{{account.id}}" "{{interaction.createdAt}}" "" "" "" "{{message.body}}" | jq -r '.response'


Ejemplo de voz

/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_voice.ini" "sessionOpen" "{UNIQUEID}" "" "" "" |  jq -r '.session' 
salida del comando almacenado en variable "vflow_sessionopen_response" para su posterior uso en cally square


/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_desa_voz.ini" "textRequest" "{vflow_sessionopen_response}" "{OPENAI_WHISPER_TRANSCRIPT}" | jq -r '.response'
la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})


/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_desa_voz.ini" "sessionClose" "{{vflow_sessionopen_response}}" "normal"

4 logs útiles

tail -f /var/log/vFlowProxy/vFlowProxy.log
En nodo vFlowProxy
para cualquier canal
asterisk -rv | grep callsquare_name
en nodo Omnisuite
para canal voz
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log
en nodo Omnisuite
para canal voz
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log
para canal voz

5 Para probar desde vFlow

En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también ".ini" en vFlow