Diferencia entre revisiones de «Manual de operación de vFlow»
| (No se muestran 56 ediciones intermedias de 2 usuarios) | |||
| Línea 11: | Línea 11: | ||
* vFlowProxy<span style="margin-left: 3em;"></span>--> Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores | * vFlowProxy<span style="margin-left: 3em;"></span>--> Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores | ||
* LLM<span style="margin-left: 3em;"></span>--> Modelo de lenguaje natural que usará un orquestadores | * LLM<span style="margin-left: 3em;"></span>--> Modelo de lenguaje natural que usará un orquestadores | ||
| − | * Agente<span style="margin-left: 3em;"></span>--> Cada uno de los flujos creados en | + | * Agente<span style="margin-left: 3em;"></span>--> Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador |
* Servicio<span style="margin-left: 3em;"></span>--> Cada elemento de negocio en la plataforma de CU (por ejemplo VDN) | * Servicio<span style="margin-left: 3em;"></span>--> Cada elemento de negocio en la plataforma de CU (por ejemplo VDN) | ||
| − | [[Archivo:Arquitectura Vflow - v2.jpg| | + | [[Archivo:Arquitectura Vflow - v2.jpg|1024px|none|Arquitecura de vFlow]] |
| − | |||
Los '''módulos principales''' de vFlow son: | Los '''módulos principales''' de vFlow son: | ||
| Línea 23: | Línea 22: | ||
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema | * 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) | * Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes) | ||
| − | + | <br> | |
'''Otros elementos''' relevantes serán: | '''Otros elementos''' relevantes serán: | ||
* Base de datos vFlow: | * Base de datos vFlow: | ||
| Línea 29: | Línea 28: | ||
:* Almacena información de configuración sobre vFlow | :* Almacena información de configuración sobre vFlow | ||
:* Gestiona el RAG de las inteligencias artificiales a usar | :* Gestiona el RAG de las inteligencias artificiales a usar | ||
| − | |||
== Integración de vFlow desde Omnisuite == | == Integración de vFlow desde Omnisuite == | ||
| Línea 36: | Línea 34: | ||
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) | 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): | 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 | 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 | 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 | En cada fichero de servicio configuraremos | ||
::* Donde está Vflow | ::* Donde está Vflow | ||
| Línea 62: | Línea 60: | ||
::* environment --> production, staging, test | ::* 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 | |
=== Invocación === | === Invocación === | ||
| Línea 91: | Línea 89: | ||
Parámetros ( Los OPCIONALES son "" si no se envía valor): | Parámetros ( Los OPCIONALES son "" si no se envía valor): | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | {| class="wikitable" | ||
| + | ! 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 | Ejemplo de respuesta JSON | ||
| Línea 113: | Línea 122: | ||
Para canales de voz, existen comandos para "abrir sesión", "enviar texto" y "cerrar sesión" | Para canales de voz, existen comandos para "abrir sesión", "enviar texto" y "cerrar sesión" | ||
| − | + | ===== Abrir sesión ===== | |
/usr/local/sbin/vFlowOmnisuite <config_arch> sessionOpen <omnisuite_UniqueId> <vflow_client_id> <vflow_client_phone_number> <vflow_client_email> | /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ámetros (Los OPCIONALES son "" si no se envía valor): |
| − | + | ||
| − | + | {| class="wikitable" | |
| − | + | ! Parámetro !! Requisito !! Descripción | |
| − | + | |- | |
| − | + | | <code><config_arch></code> || OBLIGATORIO || ".ini" del servicio | |
| + | |- | ||
| + | | <code><omnisuite_UniqueId></code> || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite | ||
| + | |- | ||
| + | | <code><vflow_client_id></code> || OPCIONAL || Id de cliente en Omnisuite | ||
| + | |- | ||
| + | | <code><vflow_client_phone_number></code> || OPCIONAL || Telf de cliente en Omnisuite | ||
| + | |- | ||
| + | | <code><vflow_client_email></code> || OPCIONAL || Email de cliente en Omnisuite | ||
| + | |} | ||
| + | |||
Ejemplo de respuesta JSON | Ejemplo de respuesta JSON | ||
| Línea 134: | Línea 153: | ||
'''El value correspondiente al key "session" deberá ser guardado en una variable para siguientes invocaciones''' | '''El value correspondiente al key "session" deberá ser guardado en una variable para siguientes invocaciones''' | ||
| + | ===== Enviar texto ===== | ||
| + | |||
| + | /usr/local/sbin/vFlowOmnisuite <config_arch> textRequest <vflow_session_uuid> <question> | ||
| + | |||
| + | Parámetros: | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Parámetro !! Requisito !! Descripción | ||
| + | |- | ||
| + | | <code><config_arch></code> || OBLIGATORIO || ".ini" del servicio | ||
| + | |- | ||
| + | | <code><vflow_session_uuid></code> || OBLIGATORIO || Variable "session" almacenada en el "sessionOpen" | ||
| + | |- | ||
| + | | <code><question></code> || 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." | ||
| + | } | ||
| − | + | ===== 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): | ||
| + | {| class="wikitable" | ||
| + | ! Parámetro !! Estado !! Descripción | ||
| + | |- | ||
| + | | <code><config_arch></code> || OBLIGATORIO || ".ini" del servicio | ||
| + | |- | ||
| + | | <code><vflow_session_uuid></code> || OBLIGATORIO || Variable "session" almacenada en el "sessionOpen" | ||
| + | |- | ||
| + | | <code><vflow_cause></code> || OPCIONAL || (normal, abandoned, expired, other) | ||
| + | |} | ||
| − | |||
| − | + | Ejemplo de respuesta JSON | |
| − | + | { | |
| − | + | "errorNum": 104, | |
| + | "errorStr": "Wrong session" | ||
| + | } | ||
| − | + | == Ejemplos para omnisuite == | |
| − | |||
| − | |||
| − | |||
| − | |||
| + | '''Ejemplo de chat''' | ||
| + | <pre>/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_chat.ini" "omnisuiteText" "{{interaction.id}}" "{{account.id}}" "{{interaction.createdAt}}" "" "" "" "{{message.body}}" | jq -r '.response'</pre> | ||
| − | + | ||
| + | '''Ejemplo de voz''' | ||
| + | |||
| + | [[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]] | ||
| + | <br> | ||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | <pre>/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_voice.ini" "sessionOpen" "{UNIQUEID}" "" "" "" | jq -r '.session' </pre> | ||
| + | ::<small>salida del comando almacenado en variable "vflow_sessionopen_response" para su posterior uso en cally square</small> | ||
| + | |||
| + | [[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]] | ||
| + | <br> | ||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | <pre>/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_desa_voz.ini" "textRequest" "{vflow_sessionopen_response}" "{OPENAI_WHISPER_TRANSCRIPT}" | jq -r '.response'</pre> | ||
| + | ::<small>la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})</small> | ||
| + | |||
| + | [[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]] | ||
| + | <br> | ||
| + | <br> | ||
| + | <br> | ||
| + | |||
| + | <pre>/usr/local/sbin/vFlowOmnisuite "/etc/MDtel/vFlow/service_desa_voz.ini" "sessionClose" "{{vflow_sessionopen_response}}" "normal"</pre> | ||
| + | |||
| + | [[Archivo:Imagen sessionclose.jpg|550px|center|miniatura|Cerrar sesión en vFlow]] | ||
| + | |||
| + | == 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 | ||
| + | |||
| + | == 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 | ||
| + | |||
| + | |||
| + | == Puesta en marcha de nodo vFlow == | ||
| + | <br> | ||
| + | Existe un nodo vFlow en los repositorios habituales proporcionados | ||
| + | <br> | ||
| + | Para '''dar de alta nodo vflow en un cliente''' hay que: | ||
| + | * Configurar IP (por defecto la maquina va configurada por DHCP) | ||
| + | * Adaptar el firewall, para ello REVISAR el fichero /etc/firewall/vars.sh | ||
| + | * Certificados validos en apache | ||
| + | * REVISAR ficheros /etc/apache2/sites-enabled/flowise.conf y /etc/apache2/sites-enabled/vFlow.conf la variable ServerName (nombre valido de la maquina) | ||
| + | <br> | ||
| + | '''Accesos vFlow''' (se debe cambiar tras instalación): | ||
| + | * Usuario ssh y de SO por defecto es sat y clave a proporcionar. | ||
| + | * Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar | ||
| + | * Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar. | ||
| + | <br> | ||
| + | '''Accesos BBDD vFlow''' | ||
| + | * Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel): | ||
| + | * BBDD Vlfow (admin) vflowadmin // clave a proporcionar | ||
| + | * BBDD Vlfow (no_admin) vflow // clave a proporcionar | ||
| + | <br> | ||
| + | Relevante para poder '''poner en marcha un loader''': | ||
| + | * Qdrant --> localhost:6333 | ||
| + | * Record Manager --> SQLite | ||
| + | <br> | ||
| + | Se adjunta imagen a modo de ejemplo | ||
| + | [[Archivo:Alta loader vflow.png|800px|miniaturadeimagen|no|alta loader vFlow]] | ||
Revisión actual del 14:52 5 feb 2026
Sumario
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 vFlow; corresponde a un par plataforma/agentflow de orquestador
- Servicio--> Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)
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
6 Puesta en marcha de nodo vFlow
Existe un nodo vFlow en los repositorios habituales proporcionados
Para dar de alta nodo vflow en un cliente hay que:
- Configurar IP (por defecto la maquina va configurada por DHCP)
- Adaptar el firewall, para ello REVISAR el fichero /etc/firewall/vars.sh
- Certificados validos en apache
- REVISAR ficheros /etc/apache2/sites-enabled/flowise.conf y /etc/apache2/sites-enabled/vFlow.conf la variable ServerName (nombre valido de la maquina)
Accesos vFlow (se debe cambiar tras instalación):
- Usuario ssh y de SO por defecto es sat y clave a proporcionar.
- Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar
- Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.
Accesos BBDD vFlow
- Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):
- BBDD Vlfow (admin) vflowadmin // clave a proporcionar
- BBDD Vlfow (no_admin) vflow // clave a proporcionar
Relevante para poder poner en marcha un loader:
- Qdrant --> localhost:6333
- Record Manager --> SQLite
Se adjunta imagen a modo de ejemplo