<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://vivait-wiki.mdnova.local/wiki/vivait/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alfredo.rodriguez</id>
	<title>VIVAitwiki - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://vivait-wiki.mdnova.local/wiki/vivait/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alfredo.rodriguez"/>
	<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Especial:Contribuciones/Alfredo.rodriguez"/>
	<updated>2026-05-26T06:20:37Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18208</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18208"/>
		<updated>2026-05-21T09:38:21Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Integración de vFlow desde Omnisuite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
Fichero de log, en nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pruebas desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[uuids]&lt;br /&gt;
platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[uuids]&lt;br /&gt;
agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18207</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18207"/>
		<updated>2026-05-21T09:38:09Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Integración de vFlow desde Omnisuite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
Fichero de log, en nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pruebas desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[uuids]&lt;br /&gt;
platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[uuids]&lt;br /&gt;
agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18206</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18206"/>
		<updated>2026-05-21T09:37:33Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Pruebas desde vFlow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
Fichero de log, en nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pruebas desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18205</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18205"/>
		<updated>2026-05-21T09:36:45Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Descripción general */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
Fichero de log, en nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pruebas desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18204</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18204"/>
		<updated>2026-05-21T09:36:06Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Para probar desde vFlow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
Fichero de log, en nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pruebas desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18203</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18203"/>
		<updated>2026-05-21T09:35:18Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Diagnósticos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
Fichero de log, en nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18202</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18202"/>
		<updated>2026-05-21T09:34:22Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Diagnósticos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
Fichero de log, en nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18201</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18201"/>
		<updated>2026-05-21T09:33:49Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Diagnósticos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
:: Fichero de log&lt;br /&gt;
:::En nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::en nodo Omnisuite, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18200</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18200"/>
		<updated>2026-05-21T09:32:53Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Diagnósticos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
:: Fichero de log&lt;br /&gt;
:::En nodo vFlowProxy, para cualquier canal&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::Monitorizar estado del proceso vflowProxy, en nodo vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::En nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::en nodo Omnisuite, para canal voz&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18199</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18199"/>
		<updated>2026-05-21T09:28:16Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Diagnósticos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;agi-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/&amp;lt;routing-combined.yyyy-mm-dd.log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18198</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18198"/>
		<updated>2026-05-21T09:25:07Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Restauración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Las ubicaciones de los archivos a resturar pueden ser diferentes'''&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18197</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18197"/>
		<updated>2026-05-21T09:24:39Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Restauración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
* Importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(Las ubicaciones de los archivos a resturar pueden ser diferentes)&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18196</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18196"/>
		<updated>2026-05-21T09:24:14Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Restauración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
&lt;br /&gt;
* importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Las ubicaciones de los archivos a resturar pueden ser diferentes)&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18195</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18195"/>
		<updated>2026-05-21T09:23:30Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Restauración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
Para restaurar, será necesario&lt;br /&gt;
&lt;br /&gt;
* importar de nuevo las dos bases de datos de flowise y la base de datos de vFlow:&lt;br /&gt;
&lt;br /&gt;
mysql -u root -p vflow_flowise_config &amp;lt;  vflow_flowise_config_ULTIMAFECHA.sql&lt;br /&gt;
mysql -u root -p vflow_flowise_upsert &amp;lt;  vflow_flowise_upsert_ULTIMAFECHA.sql&lt;br /&gt;
mysql -u root -p vFlow &amp;lt;  vFlow_ULTIMAFECHA.sql&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Volver a poner las carpetas de /opt/vFlow_flowise/&lt;br /&gt;
mv -vi  /opt/vFlow_flowise/.flowise_ULTIMAFECHA  /opt/vFlow_flowise/.flowise&lt;br /&gt;
mv -vi /opt/vFlow_flowise/archivos_ULTIMAFECHA  /opt/vFlow_flowise/archivos&lt;br /&gt;
&lt;br /&gt;
(Las ubicaciones de los archivos a resturar pueden ser diferentes)&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18194</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18194"/>
		<updated>2026-05-21T09:20:46Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Respaldo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo'''&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18193</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18193"/>
		<updated>2026-05-21T09:20:28Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Respaldo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18192</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18192"/>
		<updated>2026-05-21T09:19:47Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Respaldo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18191</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18191"/>
		<updated>2026-05-21T09:19:11Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Respaldo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18190</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18190"/>
		<updated>2026-05-21T09:18:30Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Procedimientos de respaldo y restauración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18189</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18189"/>
		<updated>2026-05-21T09:16:52Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Procedimientos de respaldo y restauración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
&lt;br /&gt;
=== Respaldo ===&lt;br /&gt;
&lt;br /&gt;
* Hacer backup de las bases de datosdel orquestador (flowise) y de vFlow&lt;br /&gt;
&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_config_$(date +%F_%H%M%S).sql&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vflow_flowise_config &amp;gt; vflow_flowise_upsert_$(date +%F_%H%M%S).sql&lt;br /&gt;
mariadb-dump -u root -p --single-transaction --routines --events --triggers --default-character-set=utf8mb4 vFlow &amp;gt; vFlow_$(date +%F_%H%M%S).sql&lt;br /&gt;
&lt;br /&gt;
* Copiar:&lt;br /&gt;
** El directorio /opt/vFlow_flowise/.flowise&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/.flowise  /opt/vFlow_flowise/.flowise_$(date +%F_%H%M%S)&lt;br /&gt;
** El directorio /opt/vFlow_flowise/archivos&lt;br /&gt;
cp -vai  /opt/vFlow_flowise/archivos /opt/vFlow_flowise/archivos_$(date +%F_%H%M%S)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Todos los ficheros creados pueden ser movidos al destino deseado para almacenar la copia de respaldo&lt;br /&gt;
&lt;br /&gt;
=== Restauración ===&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18188</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18188"/>
		<updated>2026-05-21T09:06:55Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|400px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-21 110124.png|500px|miniaturadeimagen|no|Inovación a TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-21 110413.png|500px|miniaturadeimagen|no|Reproducción de audio generado]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18187</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18187"/>
		<updated>2026-05-21T09:06:09Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|350px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-21 110124.png|500px|miniaturadeimagen|no|Inovación a TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-21 110413.png|500px|miniaturadeimagen|no|Reproducción de audio generado]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18186</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18186"/>
		<updated>2026-05-21T09:05:40Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-21 110124.png|500px|miniaturadeimagen|no|Inovación a TTS&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-21 110413.png|500px|miniaturadeimagen|no|Reproducción de audio generado]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Captura_de_pantalla_2026-05-21_110413.png&amp;diff=18185</id>
		<title>Archivo:Captura de pantalla 2026-05-21 110413.png</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Captura_de_pantalla_2026-05-21_110413.png&amp;diff=18185"/>
		<updated>2026-05-21T09:04:46Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reproducción de audio&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18184</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18184"/>
		<updated>2026-05-21T09:03:27Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-21 110124.png|500px|miniaturadeimagen|no|Text to Speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18183</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18183"/>
		<updated>2026-05-21T09:02:28Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Captura de pantalla 2026-05-21 110124.png|250px|miniaturadeimagen|no|Text to Speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Captura_de_pantalla_2026-05-21_110124.png&amp;diff=18182</id>
		<title>Archivo:Captura de pantalla 2026-05-21 110124.png</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Captura_de_pantalla_2026-05-21_110124.png&amp;diff=18182"/>
		<updated>2026-05-21T09:02:14Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Text to Speech con &amp;quot;cajas mdtel&amp;quot;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18181</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18181"/>
		<updated>2026-05-21T08:49:28Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Google */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18180</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18180"/>
		<updated>2026-05-21T08:49:11Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Google */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18179</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18179"/>
		<updated>2026-05-21T08:48:53Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
Se dispone del programa&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo y voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/google.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot;, actualmente no disponible&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot;, en la que defimiremos endpoint del servicio y timeout&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=AIzaSyCzkyUQBj9y3L-i1ej3Bj2lzO-wEwxY5mY&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# no disponible&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://texttospeech.googleapis.com/v1/text:synthesize?key=%s&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=RecordOmni&amp;diff=18178</id>
		<title>RecordOmni</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=RecordOmni&amp;diff=18178"/>
		<updated>2026-05-21T08:36:01Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Introducción ===&lt;br /&gt;
&lt;br /&gt;
recordOmni (actualmente versión 0.0.4) proporciona una gestión estructurada de los ficheros de grabaciones de Omnisuite, permitiendo:&lt;br /&gt;
* Reorganizar las grabaciones en una estrucutura de directorios en arbol basada en año/mes/dia/hora/minuto&lt;br /&gt;
* Almacenar las grabaciones en esa estructura de directorios y en formato mp3 (para reducir espacio)&lt;br /&gt;
* Extraer uno de los canales de la comunicación (el del lado del cliente) para dejarlo además en otra carpeta&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ello, '''en Omnisuite''':&lt;br /&gt;
* Se modifica en la tabla &amp;quot;voice_recordings&amp;quot; el campo &amp;quot;value&amp;quot; para reflejar el nuevo destino de la grabación (en vez de &amp;quot;/var/spool/asterisk/monitor&amp;quot; será por ejemplo &amp;quot;/mnt/grabaciones/2025/01/17/11/25&amp;quot;)&lt;br /&gt;
* Podemos escuchar la grabación (que ha quedado en formato mp3) desde el administrador voice/voice recordings y seleccionando en una grabación la opción &amp;quot;edit voice recording&amp;quot; en la pestaña &amp;quot;player&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El proceso que hemos realizado se basa en que actualmente Motion&lt;br /&gt;
* Deja las grabaciones en /var/spool/asterisk/monitor&lt;br /&gt;
* Escribe el dato en el campo &amp;quot;value&amp;quot; de la tabla &amp;quot;voice_recordings&amp;quot;&lt;br /&gt;
* En el campo &amp;quot;type&amp;quot; de la tabla &amp;quot;voice_recordings&amp;quot; las llamadas pueden ser &amp;quot;inbound&amp;quot;, &amp;quot;outbound&amp;quot;, &amp;quot;dialer&amp;quot; (hay más tipos pero solo estamos usando esos de momento)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instalación y puesta en marcha ===&lt;br /&gt;
&lt;br /&gt;
'''Para instalar:'''&lt;br /&gt;
* Instalar paquetes&lt;br /&gt;
        sudo apt install libdbi-perl&lt;br /&gt;
        sudo apt install libdbd-mysql-perl&lt;br /&gt;
* Copiar el archivo &amp;lt;code&amp;gt;recordOmni.pl&amp;lt;/code&amp;gt; a la carpeta &amp;lt;code&amp;gt;/opt/omnisuite/bin/&amp;lt;/code&amp;gt; y darle los permisos &amp;lt;code&amp;gt;744&amp;lt;/code&amp;gt; y usuario &amp;lt;code&amp;gt;root:root&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copiar el archivo &amp;lt;code&amp;gt;recordOmni.logrotate&amp;lt;/code&amp;gt; a la carpeta &amp;lt;code&amp;gt;/etc/logrotate.d&amp;lt;/code&amp;gt; renombrarlo a recordOmni con los permisos &amp;lt;code&amp;gt;744&amp;lt;/code&amp;gt; y usuario &amp;lt;code&amp;gt;root:root&amp;lt;/code&amp;gt;&lt;br /&gt;
* Crear la carpeta &amp;lt;code&amp;gt;/etc/MDtel&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copiar el archivo &amp;lt;code&amp;gt;recordOmni.pconf&amp;lt;/code&amp;gt; a la carpeta &amp;lt;code&amp;gt;/etc/MDtel&amp;lt;/code&amp;gt; con los permisos &amp;lt;code&amp;gt;644&amp;lt;/code&amp;gt; y usuario &amp;lt;code&amp;gt;root:root&amp;lt;/code&amp;gt;&lt;br /&gt;
* Copiar el archivo &amp;lt;code&amp;gt;recordOmni.sh&amp;lt;/code&amp;gt; a la carpeta &amp;lt;code&amp;gt;/etc/init.d&amp;lt;/code&amp;gt; y renombrarlo a &amp;lt;code&amp;gt;recordOmni&amp;lt;/code&amp;gt; con los permisos &amp;lt;code&amp;gt;755&amp;lt;/code&amp;gt; y el usuario &amp;lt;code&amp;gt;root:root&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;recorOmni&amp;lt;/code&amp;gt; queda instalado de esta manera como un demonio en el sistema&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Para puesta en marcha'''&lt;br /&gt;
* Habilitar el arranque automatico con el comando &amp;lt;code&amp;gt;systemctl enable recordOmni &amp;lt;/code&amp;gt;&lt;br /&gt;
* Configurar el archivo &amp;lt;code&amp;gt;/etc/MDtel/recordOmni.pconf&amp;lt;/code&amp;gt;; ver sección [[#Configuración]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuración ===&lt;br /&gt;
==== Parametros importantes para configuración ====&lt;br /&gt;
&lt;br /&gt;
'''La conexion con la BD'''&lt;br /&gt;
        # Conexion de base de datos&lt;br /&gt;
        $db = 'motion2';&lt;br /&gt;
        $dbHost = 'localhost';&lt;br /&gt;
        $dbPort = '3306';&lt;br /&gt;
        $dbUsuario = 'root';&lt;br /&gt;
        $dbClave = 'aaaaaqaaaaaa';&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Directorios donde se van a copiar los archivos'''&lt;br /&gt;
        # Directorio donde van las grabaciones&lt;br /&gt;
        $grabRutaDest = '/tmp/grabaciones';&lt;br /&gt;
        $grabRutaUsaTimestamp = 1;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El parametro grabRutaUsaTimestamp si vale 1 se crean los directorios con AAAA/MM/DD/HH/MM/SS&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
        # Directorio donde van el lado cliente de las grabaciones si '' no se obtiene&lt;br /&gt;
        $grabRutaDestCli = '/tmp/grabacionesCli';&lt;br /&gt;
        $grabRutaCliUsaTimestamp = 0;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Compresion de los archivos MP3'''&lt;br /&gt;
        #Compresion del mp3 (valores permidos: 8k 16k 32k 128k)&lt;br /&gt;
        $grabCompresionMP3 = 32k&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Dias que deben transcurrir para dar alarma al arrancar y subir el contador &amp;quot;Antiguas&amp;quot; en la monitorizacion'''&lt;br /&gt;
        # Dias transcurridos de la llamada a procesar para dar alarma&lt;br /&gt;
        $diasDesdeLlamada = 5;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de fichero &amp;lt;code&amp;gt;recordOmni.pconf&amp;lt;/code&amp;gt; completo y operativo ====&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # Configuracion de recordOmni.pl&lt;br /&gt;
 #&lt;br /&gt;
 # 0: Solo alarmas en archivo log - 1: alarmas y trazas&lt;br /&gt;
 $depurar = 1;&lt;br /&gt;
 &lt;br /&gt;
 # 0: Arranca como proceso - 1: arranca como demonio&lt;br /&gt;
 $soyDemonio = 1;&lt;br /&gt;
 &lt;br /&gt;
 # Archivo de log ('': salida estandar)&lt;br /&gt;
 $logArch = '/var/log/record/recordOmni.log';&lt;br /&gt;
 #logArch = '';&lt;br /&gt;
 &lt;br /&gt;
 # Archivo para el pid (eliminando el .pid final)&lt;br /&gt;
 $pidArch = '/var/run/record/recordOmni';&lt;br /&gt;
 &lt;br /&gt;
 # 0: El programa se ejecuta indefinidamente - 1: solo una vez (util en depuracion)&lt;br /&gt;
 $unaVezSolo = 0;&lt;br /&gt;
 &lt;br /&gt;
 # Tiempo de espera en segundos cuando no hay conexion o cuando no hay llamadas&lt;br /&gt;
 $toBucle = 15;&lt;br /&gt;
 &lt;br /&gt;
 # Tipos de llamada analizados&lt;br /&gt;
 $tiposLlamada = &amp;quot;'inbound','outbound','dialer','internal'&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Conexion de base de datos&lt;br /&gt;
 $db = 'motion2';&lt;br /&gt;
 $dbHost = 'omsui-bdtr';&lt;br /&gt;
 $dbPort = '3306';&lt;br /&gt;
 $dbUsuario = 'xcall';&lt;br /&gt;
 $dbClave = '';&lt;br /&gt;
 # indice inicial para empezar la busqueda de grabaciones (0 desde el principio)&lt;br /&gt;
 $dbIndInicial = 113920;&lt;br /&gt;
 # segundos de retardo en la fecha de la BD para empezar a procesar grabaciones (0 sin retardo)&lt;br /&gt;
 # 3600 (1 hora)&lt;br /&gt;
 # 86400 (1 dia)&lt;br /&gt;
 $dbSegRetardo = 3600;&lt;br /&gt;
 &lt;br /&gt;
 # Configuracion de la supervision&lt;br /&gt;
 $supPort = '2111';&lt;br /&gt;
 &lt;br /&gt;
 # Directorio donde se localizan las grabaciones&lt;br /&gt;
 $grabRutaOrig = '/var/spool/asterisk/monitor';&lt;br /&gt;
 &lt;br /&gt;
 # Directorio donde van las grabaciones&lt;br /&gt;
 $grabRutaDest = '/mnt/almacen/grabaciones';&lt;br /&gt;
 &lt;br /&gt;
 #Fichero que tiene que estar en la ruta destino para comprobar que si es una nas este montada. Si es '' no se comprueba&lt;br /&gt;
 $grabDestFileMarca = 'NASmontada';&lt;br /&gt;
 &lt;br /&gt;
 # grabRutaUsaTimestamp valores        0 $grabRutaDest&lt;br /&gt;
 #                                     1 $grabRutaDest/AAAA/MM/DD&lt;br /&gt;
 #                                     2 $grabRutaDest/AAAA/MM/DD/HH/MM&lt;br /&gt;
 $grabRutaUsaTimestamp = 1;&lt;br /&gt;
 &lt;br /&gt;
 #Compresion del mp3 (valores permidos: 8k 16k 32k 128k)&lt;br /&gt;
 $grabCompresionMP3 = 32k&lt;br /&gt;
 #Hay compresion&lt;br /&gt;
 #grabCompresion  valores    0 sin compresion&lt;br /&gt;
 #                           1 wav estereo -&amp;gt; mp3  (defecto)&lt;br /&gt;
 $grabCompresion = 1;&lt;br /&gt;
 &lt;br /&gt;
 # Directorio donde van el lado cliente de las grabaciones si '' no se obtiene&lt;br /&gt;
 $grabRutaDestCli = '/mnt/almacenCIL/grabacionesCli';&lt;br /&gt;
 &lt;br /&gt;
 # grabRutaCliUsaTimestamp valores     0 $grabRutaDest&lt;br /&gt;
 #                                     1 $grabRutaDest/AAAA/MM/DD&lt;br /&gt;
 #                                     2 $grabRutaDest/AAAA/MM/DD/HH/MM&lt;br /&gt;
 $grabRutaCliUsaTimestamp = 0;&lt;br /&gt;
 &lt;br /&gt;
 # Dias transcurridos de la llamada a procesar para dar alarma&lt;br /&gt;
 $diasDesdeLlamada = 5;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diagnósticos ===&lt;br /&gt;
Los eventos de recorOmni quedan registrados en &amp;lt;code&amp;gt;/var/log/record/recordOmni.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para ver el estado del proceso, y reiniciarlo en caso necesario&lt;br /&gt;
 /etc/init.d/recordOmni status&lt;br /&gt;
 /etc/init.d/recordOmni stop&lt;br /&gt;
 /etc/init.d/recordOmni start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18177</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18177"/>
		<updated>2026-05-21T08:34:18Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Ejemplo de voz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18176</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18176"/>
		<updated>2026-05-21T08:33:40Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Ejemplo de chat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18175</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18175"/>
		<updated>2026-05-21T08:33:20Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Cerrar sesión */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18174</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18174"/>
		<updated>2026-05-21T08:32:57Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Enviar texto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18173</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18173"/>
		<updated>2026-05-21T08:32:02Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Abrir sesión */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18172</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18172"/>
		<updated>2026-05-21T08:31:37Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Para canales de texto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18171</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18171"/>
		<updated>2026-05-21T08:30:58Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Ver versión */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18170</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18170"/>
		<updated>2026-05-21T08:30:34Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Ver configuración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/opt/omnisuite/bin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18169</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18169"/>
		<updated>2026-05-21T07:10:13Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Procedimientos de respaldo y restauración ==&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18168</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18168"/>
		<updated>2026-05-21T07:06:56Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Diagnósticos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep &amp;lt;callysquare_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18167</id>
		<title>Omnisuite STT y TTS</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18167"/>
		<updated>2026-05-21T06:50:52Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Google */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introducción ==&lt;br /&gt;
Se han desarrollado conectores propios para&lt;br /&gt;
:* Speech To Text (STT)&lt;br /&gt;
:* Text To Speech (TTS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para los proveedores&lt;br /&gt;
:* Evelenlabs&lt;br /&gt;
:* Google&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
'''La configuración adecuada por agilidad y costes es usar STT de ElevenLabs y TTS de Google'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== ElevenLabs ==&lt;br /&gt;
Se dispone de los programas&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p&amp;lt;/code&amp;gt; para '''Speech to Text (STT)'''&lt;br /&gt;
:* &amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTS11p&amp;lt;/code&amp;gt; para '''Text To Speech (TTS)'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Speech to Text''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* fichero a convertir a texto&lt;br /&gt;
Ejemplo STT&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteSTT11p /etc/MDtel/elevenlabs.ini stt scribe_v2 es  /var/lib/asterisk/sounds/{id_llamada}_stt.wav &amp;lt;/code&amp;gt;&lt;br /&gt;
: Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;¿En qué más puedo ayudarte?&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
  &amp;quot;elevenlabs_language&amp;quot;: &amp;quot;spa&amp;quot;,&lt;br /&gt;
  &amp;quot;confidence&amp;quot;: 100&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la invocación para '''Text to Speech''' incluiremos&lt;br /&gt;
:* Fichero &amp;quot;.ini&amp;quot;&lt;br /&gt;
:* &amp;lt;code&amp;gt;tst&amp;lt;/code&amp;gt; --&amp;gt; comando para speech a text&lt;br /&gt;
:* idioma a usar &lt;br /&gt;
:* Modelo a usar&lt;br /&gt;
:* Voz a usar&lt;br /&gt;
:* Fichero donde quedará el audio obtenido&lt;br /&gt;
:* Texto a convertir&lt;br /&gt;
Ejemplo TTS&lt;br /&gt;
: Invocación&lt;br /&gt;
::&amp;lt;code&amp;gt; /opt/omnisuite/bin/omnisuiteTTS11p /etc/MDtel/elevenlabs.ini tts es eleven_turbo_v2_5 1eHrpOW5l98cxiSRjbzJ /var/lib/asterisk/sounds/{id_llamada}_tts.alaw &amp;quot;{vflow_respuesta}&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:Respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
El fichero &amp;quot;.ini&amp;quot; (por defecto &amp;lt;code&amp;gt;/etc/MDtel/elevenlabs.ini&amp;lt;/code&amp;gt;) contiene:&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;comun&amp;lt;/code&amp;gt; en la que habrá que cambiar el &amp;lt;code&amp;gt;api_key&amp;lt;/code&amp;gt;&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;stt&amp;lt;/code&amp;gt;, para &amp;quot;speech to text&amp;quot; en la que se configurarán los keyterms del proyecto&lt;br /&gt;
:* Una sección &amp;lt;code&amp;gt;tts&amp;lt;/code&amp;gt;, para &amp;quot;text to speech&amp;quot; &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
[comun]&lt;br /&gt;
proxy=no&lt;br /&gt;
api_key=APIKEYDELPROYECTO&lt;br /&gt;
&lt;br /&gt;
[stt]&lt;br /&gt;
# enable_logging=false solo enterprise&lt;br /&gt;
url=https://api.elevenlabs.io/v1/speech-to-text?enable_logging=true&lt;br /&gt;
to_ms=10000&lt;br /&gt;
# temperature=0.0 a 2.0&lt;br /&gt;
temperature=0.1&lt;br /&gt;
# keyterms_XX: pueden estar todos vacios o no existir. 00&amp;lt;=XX&amp;lt;=09&lt;br /&gt;
keyterms_00=&lt;br /&gt;
keyterms_01=&lt;br /&gt;
keyterms_02=&lt;br /&gt;
keyterms_03=&lt;br /&gt;
keyterms_04=&lt;br /&gt;
keyterms_05=&lt;br /&gt;
keyterms_06=&lt;br /&gt;
keyterms_07=&lt;br /&gt;
keyterms_08=&lt;br /&gt;
keyterms_09=&lt;br /&gt;
&lt;br /&gt;
[tts]&lt;br /&gt;
url=https://api.elevenlabs.io/v1/text-to-speech/%s?output_format=%s_8000&lt;br /&gt;
to_ms=10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/opt/omnisuite/bin/omnisuiteTTSgoo /etc/MDtel/google.ini tts es-es &amp;quot;es-ES-Chirp3-HD-Despina&amp;quot; /tmp/a.wav &amp;quot;Buenos días. ¿Me puedes decir la hora?&amp;quot; &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración en Omnisuite (SIN INTERRUPCIÓN A AGENTE)  ==&lt;br /&gt;
En Omnisuite la invocación a un ASR o TTS del catálogo integrado requiere la inserción de una sola caja en Cally Square, por ejemplo &amp;quot;Google Cloud TTS&amp;quot; o &amp;quot;OpenAI Whisper&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizando la implementación realizada por mdtel, se requerirá al menos de dos cajas:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para STT:&lt;br /&gt;
::* (Opcional) una caja &amp;quot;system&amp;quot; que reproduzca un pitido&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que grabe el audio del usuario&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoque al STT con dicho audio grabado&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134424.png|250px|miniaturadeimagen|no|Speech To Text con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134721.png|250px|miniaturadeimagen|no|Reproducción de &amp;quot;beep&amp;quot;]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134822.png|300px|miniaturadeimagen|no|Grabación de audio a transcribir]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 134933.png|500px|miniaturadeimagen|no|Invocación a transcripción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Para TTS:&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que invoca al TTS y deja el audio generado en un fichero&lt;br /&gt;
::* Una caja &amp;quot;system&amp;quot; que reproduce el audio &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 141728.png|300px|miniaturadeimagen|no|Texto to speech con &amp;quot;cajas mdtel&amp;quot;]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''PENDIENTE SUBIR DETALLES CUANDO TENGAMOS TTS CON GOOGLE EN C'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::'''Este proceso genera un fichero temporal de audio para STT y otro para TTS que deberán ser borrados'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:::[[Archivo:Captura de pantalla 2026-05-14 135949.png|500px|miniaturadeimagen|no|Ejemplo para borrar archivo temporal TTS]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18166</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18166"/>
		<updated>2026-05-21T06:40:10Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Descripción general */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep callsquare_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 500px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18165</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18165"/>
		<updated>2026-05-21T06:39:48Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Descripción general */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep callsquare_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /opt/omnisuite/bin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Captura_de_pantalla_2026-05-20_132119.png&amp;diff=18164</id>
		<title>Archivo:Captura de pantalla 2026-05-20 132119.png</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Captura_de_pantalla_2026-05-20_132119.png&amp;diff=18164"/>
		<updated>2026-05-21T06:23:40Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: Alfredo.rodriguez subió una nueva versión de Archivo:Captura de pantalla 2026-05-20 132119.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;panel vflow&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Ventana_Panel_de_vFlow.png&amp;diff=18163</id>
		<title>Archivo:Ventana Panel de vFlow.png</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Archivo:Ventana_Panel_de_vFlow.png&amp;diff=18163"/>
		<updated>2026-05-21T06:20:26Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: Alfredo.rodriguez subió una nueva versión de Archivo:Ventana Panel de vFlow.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ventana Panel de vFlow&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Portal_de_administraci%C3%B3n_de_vFlow&amp;diff=18162</id>
		<title>Portal de administración de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Portal_de_administraci%C3%B3n_de_vFlow&amp;diff=18162"/>
		<updated>2026-05-21T06:20:05Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Panel de vFlow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Archivo:Icono en construccion.png|600px|miniaturadeimagen|center|marco|En construcción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;max-width: 600px&amp;quot;&amp;gt;&lt;br /&gt;
El Dashboard de vflow actualmente no gestiona ningún tipo de configuración a nivel de orquestador de IA&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo siguientes elementos:&lt;br /&gt;
* Agentes (incluso producción, preproducción y prueba)&lt;br /&gt;
* Stores&lt;br /&gt;
* API loaders de los Stores&lt;br /&gt;
Han de ser dados de alta tanto en vFlow Dashboard como en el orquestador&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Acceso ==&lt;br /&gt;
El acceso a vFlow dispone de tres niveles de usuario:&lt;br /&gt;
* Guest: Puede ver conversaciones e interacciones&lt;br /&gt;
* User: Además Puede actualizar RAG&lt;br /&gt;
* Admin: Además puede hacer altas/bajas/modificaciones en usuarios, plataformas, agentes y orquestadores&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pantalla acceso vflow.png|400px|miniaturadeimagen|centro|Pantalla de acceso a vFlow Dashboard]]&lt;br /&gt;
&lt;br /&gt;
== Ventanas de vFlow dashboard ==&lt;br /&gt;
vFlow dashboard proporciona las siguientes ventanas:&lt;br /&gt;
&lt;br /&gt;
* Panel de vFlow: Presenta estadísticas generales de la plataforma&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132119.png|500px|miniaturadeimagen|no|Panel vflow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Búsqueda semántica: Permite realizar búsquedas dentro de todas las conversaciones almacenadas en vFlow&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132316.png|500px|miniaturadeimagen|no|Búsqueda semántica]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Gestión RAG: Permite gestionar versiones de los API Loaders (Que habrán sido dados de alta tanto en vFlow como en el orquestador)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132434.png|500px|miniaturadeimagen|no|Gestión RAG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Historial de peticiones: Lista todas las peticiones que cumplan el filtro seleccionado&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132550.png|500px|miniaturadeimagen|no|Historial de peticiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Sesiones: Lista las sesiones que cumplan el filtro seleccionado y muestra su detalle&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132657.png|500px|miniaturadeimagen|no|Historial de sesiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Panel de administración de vFlow: De acceso solo para usuarios &amp;quot;admin&amp;quot; permite altas, bajas y modificaciones de plataformas, agentes, orquestadores, usuarios y diferentes parámetros de configuración&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132747.png|500px|miniaturadeimagen|no|Panel de administración]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Panel de vFlow ===&lt;br /&gt;
Desde la ventana de panel de vFlow podremos ver diferentes tablas y gráficas:&lt;br /&gt;
* Tokens por modelo&lt;br /&gt;
* Evolución de peticiones&lt;br /&gt;
* Peticiones por modelo&lt;br /&gt;
* Evolución de tokens&lt;br /&gt;
* Llamadas a LLM por día&lt;br /&gt;
* Duración por modelo&lt;br /&gt;
* Peticiones por hora el día&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Filtradas por período&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es configurable las gráficas que ve cada tipo de usuario&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana Panel de vFlow.png|1000px|miniaturadeimagen|centro|ventana panel de vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Búsqueda semántica ===&lt;br /&gt;
La ventana de búsqueda semántica permite la búsqueda de cualquier cadena dentro de los registros de conversaciones e interaciones de vFlow, incluso dentro de la conversación&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana busqueda semantica.png|1000px|miniaturadeimagen|centro|Ventana de búsqueda semántica|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestión RAG ===&lt;br /&gt;
&lt;br /&gt;
Desde la ventana de gestión RAG podremos realizar tareas de gestión de versiones de los documentos o loaders que tengamos en el sistema, agrupados por almacenes o stores.&lt;br /&gt;
&lt;br /&gt;
Las acciones se podrán realizar sobre los loaders, incluyendo:&lt;br /&gt;
* Eliminar loader&lt;br /&gt;
* subir una nueva versión del loader&lt;br /&gt;
* Gestionar versiones (definir versión activa)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana RAG 1.png|1000px|miniaturadeimagen|centro|Ventana principal gestión RAG|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La ventana de gestión de versiones nos permitirá:&lt;br /&gt;
* Definir la versión activa&lt;br /&gt;
* Ver el documento asociado al loader&lt;br /&gt;
* Eliminar una versión&lt;br /&gt;
* Subir nueva versión&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana RAG 2.png|1000px|miniaturadeimagen|centro|Gestión de versiones de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historial de peticiones ===&lt;br /&gt;
Desde la ventana de historial de peticiones obtendremos un listado de las peticiones realizadas desde la plataforma a vFlow con las respuestas proporcionadas por este, existiendo la posibilidad de filtrar por período&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ventana de historial de peticiones.png|1000px|miniaturadeimagen|centro|Ventana de historial de peticiones|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sesiones ===&lt;br /&gt;
La ventana de sesiones nos permite poder ver el detalle de todas las consultas y respuestas que han sido realizadas desde las plataformas a vFlow, pudiendo filtrar por período y sesión&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana sesiones.png|1000px|miniaturadeimagen|centro|Ventana de sesiones|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Panel de vFlow ===&lt;br /&gt;
Desde la ventana de panel de administración podremos hacer altas, bajas y modificiones de plataformas, agentes, orquestadores, usuarios y configuraciones adicionales&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana panel de administracion.png|1000px|miniaturadeimagen|centro|Ventana panel de administración|link=]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Portal_de_administraci%C3%B3n_de_vFlow&amp;diff=18161</id>
		<title>Portal de administración de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Portal_de_administraci%C3%B3n_de_vFlow&amp;diff=18161"/>
		<updated>2026-05-21T06:19:12Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Panel de vFlow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[Archivo:Icono en construccion.png|600px|miniaturadeimagen|center|marco|En construcción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;max-width: 600px&amp;quot;&amp;gt;&lt;br /&gt;
El Dashboard de vflow actualmente no gestiona ningún tipo de configuración a nivel de orquestador de IA&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo siguientes elementos:&lt;br /&gt;
* Agentes (incluso producción, preproducción y prueba)&lt;br /&gt;
* Stores&lt;br /&gt;
* API loaders de los Stores&lt;br /&gt;
Han de ser dados de alta tanto en vFlow Dashboard como en el orquestador&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Acceso ==&lt;br /&gt;
El acceso a vFlow dispone de tres niveles de usuario:&lt;br /&gt;
* Guest: Puede ver conversaciones e interacciones&lt;br /&gt;
* User: Además Puede actualizar RAG&lt;br /&gt;
* Admin: Además puede hacer altas/bajas/modificaciones en usuarios, plataformas, agentes y orquestadores&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Pantalla acceso vflow.png|400px|miniaturadeimagen|centro|Pantalla de acceso a vFlow Dashboard]]&lt;br /&gt;
&lt;br /&gt;
== Ventanas de vFlow dashboard ==&lt;br /&gt;
vFlow dashboard proporciona las siguientes ventanas:&lt;br /&gt;
&lt;br /&gt;
* Panel de vFlow: Presenta estadísticas generales de la plataforma&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132119.png|500px|miniaturadeimagen|no|Panel vflow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Búsqueda semántica: Permite realizar búsquedas dentro de todas las conversaciones almacenadas en vFlow&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132316.png|500px|miniaturadeimagen|no|Búsqueda semántica]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Gestión RAG: Permite gestionar versiones de los API Loaders (Que habrán sido dados de alta tanto en vFlow como en el orquestador)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132434.png|500px|miniaturadeimagen|no|Gestión RAG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Historial de peticiones: Lista todas las peticiones que cumplan el filtro seleccionado&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132550.png|500px|miniaturadeimagen|no|Historial de peticiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Sesiones: Lista las sesiones que cumplan el filtro seleccionado y muestra su detalle&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132657.png|500px|miniaturadeimagen|no|Historial de sesiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Panel de administración de vFlow: De acceso solo para usuarios &amp;quot;admin&amp;quot; permite altas, bajas y modificaciones de plataformas, agentes, orquestadores, usuarios y diferentes parámetros de configuración&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 132747.png|500px|miniaturadeimagen|no|Panel de administración]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Panel de vFlow ===&lt;br /&gt;
Desde la ventana de panel de vFlow podremos ver diferentes tablas y gráficas:&lt;br /&gt;
* Tokens por modelo&lt;br /&gt;
* Evolución de peticiones&lt;br /&gt;
* Peticiones por modelo&lt;br /&gt;
* Evolución de tokens&lt;br /&gt;
* Llamadas a LLM por día&lt;br /&gt;
* Duración por modelo&lt;br /&gt;
* Peticiones por hora el día&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Filtradas por período&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es configurable las gráficas que ve cada tipo de usuario&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana Panel de vFlow.png|1000px|miniaturadeimagen|centro|ventana panel de vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Búsqueda semántica ===&lt;br /&gt;
La ventana de búsqueda semántica permite la búsqueda de cualquier cadena dentro de los registros de conversaciones e interaciones de vFlow, incluso dentro de la conversación&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana busqueda semantica.png|1000px|miniaturadeimagen|centro|Ventana de búsqueda semántica|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gestión RAG ===&lt;br /&gt;
&lt;br /&gt;
Desde la ventana de gestión RAG podremos realizar tareas de gestión de versiones de los documentos o loaders que tengamos en el sistema, agrupados por almacenes o stores.&lt;br /&gt;
&lt;br /&gt;
Las acciones se podrán realizar sobre los loaders, incluyendo:&lt;br /&gt;
* Eliminar loader&lt;br /&gt;
* subir una nueva versión del loader&lt;br /&gt;
* Gestionar versiones (definir versión activa)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana RAG 1.png|1000px|miniaturadeimagen|centro|Ventana principal gestión RAG|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La ventana de gestión de versiones nos permitirá:&lt;br /&gt;
* Definir la versión activa&lt;br /&gt;
* Ver el documento asociado al loader&lt;br /&gt;
* Eliminar una versión&lt;br /&gt;
* Subir nueva versión&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana RAG 2.png|1000px|miniaturadeimagen|centro|Gestión de versiones de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Historial de peticiones ===&lt;br /&gt;
Desde la ventana de historial de peticiones obtendremos un listado de las peticiones realizadas desde la plataforma a vFlow con las respuestas proporcionadas por este, existiendo la posibilidad de filtrar por período&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ventana de historial de peticiones.png|1000px|miniaturadeimagen|centro|Ventana de historial de peticiones|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sesiones ===&lt;br /&gt;
La ventana de sesiones nos permite poder ver el detalle de todas las consultas y respuestas que han sido realizadas desde las plataformas a vFlow, pudiendo filtrar por período y sesión&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana sesiones.png|1000px|miniaturadeimagen|centro|Ventana de sesiones|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Panel de vFlow ===&lt;br /&gt;
Desde la ventana de panel de administración podremos hacer altas, bajas y modificiones de plataformas, agentes, orquestadores, usuarios y configuraciones adicionales&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Ventana panel de administracion.png|1000px|miniaturadeimagen|centro|Ventana panel de administración|link=]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18160</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18160"/>
		<updated>2026-05-21T06:03:34Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Descripción general */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep callsquare_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18159</id>
		<title>Manual de operación de vFlow</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=18159"/>
		<updated>2026-05-21T06:01:37Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Gestión en vFlow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en vFlow; corresponde a un par plataforma/agentflow de orquestador&lt;br /&gt;
* Servicio&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada elemento de negocio en la plataforma de CU (por ejemplo VDN)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arquitectura Vflow - v2.jpg|1000px|center|Arquitecura de vFlow]]&lt;br /&gt;
&lt;br /&gt;
Los '''módulos principales''' de vFlow son:&lt;br /&gt;
* 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:&lt;br /&gt;
* Programa cliente: Se utiliza en el sistema de comunicaciones unificadas (actualmente VIVAit Call y Omnsisuite) para invocar a vFlow&lt;br /&gt;
* 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&lt;br /&gt;
* Portal de administración vFlow: Permite visualizar las interaciones realizadas y configurar el sistema&lt;br /&gt;
* Orquestador de IA: Herramienta de Inteligencia Artificial que permitirá la creación de aplicaciones personalizadas (agentes)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Otros elementos''' relevantes serán:&lt;br /&gt;
* Base de datos vFlow:&lt;br /&gt;
:* Almacena información sobre sesiones y transacciones realizadas&lt;br /&gt;
:* Almacena información de configuración sobre vFlow&lt;br /&gt;
:* Gestiona el RAG de las inteligencias artificiales a usar&lt;br /&gt;
&lt;br /&gt;
== Puesta en marcha de nodo vFlow ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Existe un nodo vFlow en los repositorios habituales proporcionados&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para '''dar de alta nodo vflow en un cliente''' hay que:&lt;br /&gt;
* Configurar IP (por defecto la maquina va configurada por DHCP)&lt;br /&gt;
* Adaptar el firewall, para ello REVISAR el fichero &amp;lt;code&amp;gt;/etc/firewall/vars.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
* Certificados validos en apache&lt;br /&gt;
* REVISAR ficheros &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/flowise.conf&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/vFlow.conf&amp;lt;/code&amp;gt; la variable &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; (nombre valido de la maquina)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos vFlow''' (se debe cambiar tras instalación):&lt;br /&gt;
* Usuario ssh y de SO por defecto es sat y clave a proporcionar.&lt;br /&gt;
* Para el portal de flowise las credenciales son usuario: vfloadmin@vflow.com clave: A proporcionar&lt;br /&gt;
* Para el portal de vflow las credenciales son usaurio sat y clave a proporcionar.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Accesos BBDD vFlow'''&lt;br /&gt;
* Para acceder a la base de datos desde el workbenck solo desde localhost (o tunel):&lt;br /&gt;
* BBDD Vlfow (admin)  vflowadmin // clave a proporcionar&lt;br /&gt;
* BBDD Vlfow (no_admin)  vflow //  clave a proporcionar&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Portal orquestador Flowise'''&lt;br /&gt;
&lt;br /&gt;
ubicado en https://host.cliente.xx:4567&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #fef6e7; border: 1px solid #fbd68a; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
'''⚠️ ATENCION !!'''&lt;br /&gt;
'''Los cambios en tablas de configuración de BBDD de vFlow (orquestadores, plataformas, agentes) requieren reinicio del servicio vFlowProxy'''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', 'Monaco', 'Courier New', monospace;&amp;quot;&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service status&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service stop&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
/etc/init.d/vFlowProxy.service start&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El fichero de configuración del demonio &amp;lt;code&amp;gt;vFlowProxy&amp;lt;/code&amp;gt; se encuentra en &amp;lt;code&amp;gt;/etc/MDtel/vFlowProxy.conf&amp;lt;/code&amp;gt;, si bien este fichero de configuración no se modificará habitualmente (los parámetros generales de configuración de vFlowProxy se encuentran en la BBDD de vFlow)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gestión en vFlow ==&lt;br /&gt;
vFlow prevé la existencia de tres entornos que permita hacer una gestión segura de agentes y RAG:&lt;br /&gt;
&lt;br /&gt;
* Producción&lt;br /&gt;
* Preproducción&lt;br /&gt;
* Pruebas&lt;br /&gt;
&lt;br /&gt;
Para cada agente o store de RAG se podrá desplegar un entorno, dos o los tres entornos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 0px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Recomendación'''&amp;lt;br&amp;gt;&lt;br /&gt;
::En la mayoría de los casos con disponer de entorno de producción y preproducción tanto para agente como para RAG será suficiente&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Para realizar una gestión completa en vFlow (suponiendo tres entornos y gestión de agentes y RAG), deberemos tener&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Gestión RAG.png|1000px|miniaturadeimagen|centro|Gestión en vFlow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En orquestador (Flowise) ===&lt;br /&gt;
* '''&amp;lt;big&amp;gt;1.- Crear agente&amp;lt;/big&amp;gt;''': Se crearán hasta '''tres agentes''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los agentes''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 144432.png|800px|miniaturadeimagen|no|Creación de agente en orquestador flowise (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2, 3 y 4 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''&amp;lt;big&amp;gt;2.- Crear store &amp;lt;/big&amp;gt;''': Se crearán hasta '''tres stores''' (pro/pre/pru) en función de los entornos deseados; es importante '''anotar los ID's de los stores''' creados (se ven en la URL)&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 135417.png|800px|miniaturadeimagen|no|Creación de store (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;3.- Crear loader'''&amp;lt;/big&amp;gt; : Para cada loader que se desee manejar, se creará en el orquestador y en el document store, para los entornos deseados&lt;br /&gt;
::* Subir fichero (p.ej &amp;quot;ld1.txt&amp;quot; a &amp;lt;code&amp;gt;/var/www.html/storages/production&amp;lt;/code&amp;gt; (o a &amp;lt;code&amp;gt;/staging&amp;lt;/code&amp;gt; o a &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; si procede)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 135757.png|700px|miniaturadeimagen|no|Subir fichero inicial (uno por entorno)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::* Crear loader&lt;br /&gt;
::::* Tipo: API loader&lt;br /&gt;
::::* Method: get&lt;br /&gt;
::::* URL : &amp;lt;cde&amp;gt;http://127.0.0.1/storages/production/nombrefich.txt&amp;lt;/code&amp;gt; (o  /staging /test) (formatos posibles txt, pdf, doc, docx)&lt;br /&gt;
::::* Splitter: Recursive character text splitter&lt;br /&gt;
::::* Comprobar con &amp;quot;preview chunks&amp;quot;&lt;br /&gt;
::::* Pulsar &amp;quot;process&amp;quot;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140146.png|700px|miniaturadeimagen|no|Creador loader en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 140326.png|700px|miniaturadeimagen|no|Loader creado en orquestador flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''&amp;lt;big&amp;gt;4.- Sincronizar chunks&amp;lt;/big&amp;gt;''' en store ('''para cada entorno''')&lt;br /&gt;
::* En Store, more actions / Upsert All Chunks&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 141118.png|700px|miniaturadeimagen|no|Upsert chunks store flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::* Embeddings: Por ejemplo OpenAI embeddings (requiere &amp;quot;Credential&amp;quot;)&lt;br /&gt;
::::* Vector Store: Qdrant&lt;br /&gt;
::::::* Credential: cflow_qdrant&lt;br /&gt;
::::::* URL: http://localhost:6333&lt;br /&gt;
::::::* Qdrant Collection Name: vflow&lt;br /&gt;
::::* Record Manager: MySQL&lt;br /&gt;
::::::* Connect credential: mysql_upsert&lt;br /&gt;
::::::* Host: localhost&lt;br /&gt;
::::::* Database: vflow_flowise_upsert&lt;br /&gt;
::::::* Cleaun: Full&lt;br /&gt;
::::* Aplicar&lt;br /&gt;
::::::* Save config&lt;br /&gt;
::::::* Upsert&lt;br /&gt;
::::::[[Archivo:Captura de pantalla 2026-05-20 141626.png|700px|miniaturadeimagen|no|Sincronizado de store en flowise|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La siguiente imagen muestra como quedará en el orquestador (flowise) un document store de vflow con entornos de producción, reproducción y pruebas&lt;br /&gt;
::[[Archivo:Captura de pantalla 2026-05-20 142148.png|700px|miniaturadeimagen|no|Document store en flowise con los tres entornos (tres document stores)|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== En flow ===&lt;br /&gt;
* 1.- '''&amp;lt;big&amp;gt; Crear un agente&amp;lt;/big&amp;gt;''': Vincularlo a los tres agentes de orquestador (pro/pre/pru) anotados anteriormente&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143843.png|800px|miniaturadeimagen|no|Crear agente en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f0fff4; border: 3px solid #c6f6d5; padding: 1em; border-radius: 4px;width: fit-content; margin-left: 50px&amp;quot;&amp;gt;&lt;br /&gt;
✅ '''Puntos 2 y 3 solo en caso de tener RAG'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 2.- '''&amp;lt;big&amp;gt;Crear un store&amp;lt;/big&amp;gt;''': Vinculado a los stores de orquestador anotados anteriormente (pro/pre/pru)&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 142920.png|800px|miniaturadeimagen|no|Creacion de Store en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* 3.- '''&amp;lt;big&amp;gt;Crear un loader&amp;lt;/big&amp;gt;'''&lt;br /&gt;
::* Loader vinculado a agente de vflow&lt;br /&gt;
::* El sistema comprobará que el fichero ya existe en el orquestador&lt;br /&gt;
:: Pulsar &amp;quot;crear&amp;quot;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143126.png|700px|miniaturadeimagen|no|Crear loader en vflow|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::::[[Archivo:Captura de pantalla 2026-05-20 143239.png|700px|miniaturadeimagen|no|Store, loader y detalle de loader|link=]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Diagnósticos ==&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
nc localhost 1131&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::Monitoriza estado del proceso vflowProxy&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;proceso&amp;quot;: {&lt;br /&gt;
    &amp;quot;nombre&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
    &amp;quot;inicio_ts&amp;quot;: 1771315153,&lt;br /&gt;
    &amp;quot;inicio_cad&amp;quot;: &amp;quot;20260217 085913&amp;quot;,&lt;br /&gt;
    &amp;quot;log_alarmas_val&amp;quot;: 8,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts&amp;quot;: 1771970401,&lt;br /&gt;
    &amp;quot;log_alarma_ultimo_ts_cad&amp;quot;: &amp;quot;20260224 230001&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;diagnostico&amp;quot;: {&lt;br /&gt;
    &amp;quot;gmp&amp;quot;: {&lt;br /&gt;
      &amp;quot;msj_val&amp;quot;: 1022,&lt;br /&gt;
      &amp;quot;msj_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_val&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;buf_max&amp;quot;: 1024,&lt;br /&gt;
      &amp;quot;tarea_val&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;tarea_max&amp;quot;: 15&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tiempo&amp;quot;: {&lt;br /&gt;
      &amp;quot;uptime&amp;quot;: 716665,&lt;br /&gt;
      &amp;quot;uptime_dias&amp;quot;: 8,&lt;br /&gt;
      &amp;quot;uptime_horas&amp;quot;: 7,&lt;br /&gt;
      &amp;quot;uptime_minutos&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;uptime_segundos&amp;quot;: 25&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;wws&amp;quot;: {&lt;br /&gt;
      &amp;quot;conexiones_val&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;conexiones_max_periodo&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;hilos_val&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;hilos_max&amp;quot;: 4,&lt;br /&gt;
      &amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;alarmas_nivel_max&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;alarmas&amp;quot;: []&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es relevante la monitorización de sesiones  &amp;lt;code&amp;gt;&amp;quot;wsi_cad&amp;quot;: &amp;quot;sesiones=0/200&amp;quot;&amp;lt;/code&amp;gt; (usadas/máximas)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
asterisk -rv | grep callsquare_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlowProxy hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;br /&gt;
&lt;br /&gt;
Es útil comenzar con&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/home/sat/vFlowProxy/vFlowGetInfo.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
que sin parámetros adicionales confirma el correcto estado de vFlowProxy&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
  &amp;quot;app&amp;quot;: &amp;quot;vFlowProxy&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;00.00.01&amp;quot;,&lt;br /&gt;
  &amp;quot;sessions_opened&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;sessions_limit&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;sessions_sleep_timeout_s&amp;quot;: 3600,&lt;br /&gt;
  &amp;quot;alarms&amp;quot;: 8&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descripción general ===&lt;br /&gt;
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)&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Asociado al programa existen los siguientes ficheros de configuración (.ini):&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; de plataforma''' Omnisuite en vFlow --&amp;gt; Solo contiene uuid de la plataforma; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/platform.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por agente''' en vFlow --&amp;gt; Solo contiene uuid del agente según su identificación en vFlow ('''NO''' en un orquestador, por ejemplo flowise); se entrega un &amp;quot;.ini&amp;quot; asociado a un agente &amp;quot;loop&amp;quot; existente en Flowise &amp;lt;code&amp;gt;/etc/MDtel/vflow/agent_loop_01.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
   [uuids]&lt;br /&gt;
   agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un '''&amp;quot;.ini&amp;quot; por servicio''' --&amp;gt; Configuración de cada servicio en Omnisuite; se entrega un &amp;quot;.ini&amp;quot; a modo de ejemplo en &amp;lt;code&amp;gt;/etc/MDtel/vflow/service.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
En cada fichero de servicio configuraremos&lt;br /&gt;
::* Donde está Vflow&lt;br /&gt;
::* Agente&lt;br /&gt;
::* Plataforma&lt;br /&gt;
::* timeout_s --&amp;gt; Importante, es afectado por el LLM&lt;br /&gt;
::* channel_text_type --&amp;gt; IMPORTANTE si el servicio es de texto que esté bien (vacio solo si el servicio es de texto, NO COMENTARLO)&lt;br /&gt;
::* environment --&amp;gt; production, staging, test&lt;br /&gt;
EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
  [arch_uuids]&lt;br /&gt;
  agent=/etc/MDtel/vflow/agent_loop_01.ini&lt;br /&gt;
  platform=/etc/MDtel/vflow/platform.ini&lt;br /&gt;
&lt;br /&gt;
  [vflow]&lt;br /&gt;
  host_port=172.25.129.242:7900&lt;br /&gt;
  timeout_s=20&lt;br /&gt;
  # channel_type=[voice|chat|email]&lt;br /&gt;
  channel_type=chat&lt;br /&gt;
  # environment=[production|staging|test]&lt;br /&gt;
  environment=production&lt;br /&gt;
  language=es&lt;br /&gt;
&lt;br /&gt;
  [omnisuite]&lt;br /&gt;
  # channel_text_type=[chat|mail|sms|whatsup]&lt;br /&gt;
  channel_text_type=chat&lt;br /&gt;
  service_id=vflow_service_id&lt;br /&gt;
  service_name=vflow_service_name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La imagen siguiente muestra el esquema de relación entre orquestador/plataforma/agente/servicio en la plataforma y en vFlow&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Relaciones vFlow plat orq ag serv.png|800px|miniaturadeimagen|centro|Relación orquestador-plataforma-agente-servicio]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invocación ===&lt;br /&gt;
==== Generales ====&lt;br /&gt;
&lt;br /&gt;
===== Ver configuración =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; configPrint&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
Configuration:&lt;br /&gt;
  agent_arch_uuid=/etc/MDtel/vflow/agent_fse_rapido.ini&lt;br /&gt;
  agent_uuid=3487af28-1d14-11f1-803c-525400ef204c&lt;br /&gt;
  platform_arch_uuid=/etc/MDtel/vflow/platform_labomsui.ini&lt;br /&gt;
  platform_uuid=9a54ea74-f050-11f0-bdf1-5254008bef96&lt;br /&gt;
&lt;br /&gt;
  vflow_host_port=labvflow.mdnova.local&lt;br /&gt;
  vflow_timeout_s=50&lt;br /&gt;
  vflow_environment=production&lt;br /&gt;
  vflow_channel_type=voice&lt;br /&gt;
  vflow_language=es&lt;br /&gt;
&lt;br /&gt;
  omnisuite_channel_text_type=chat&lt;br /&gt;
  omnisuite_service_id=287&lt;br /&gt;
  omnisuite_service_name=desarrollo&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;errorCad&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Ver versión =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite version&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
00.00.02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de texto ====&lt;br /&gt;
&lt;br /&gt;
Para canales de texto en Omnisuite existe un único Comando de invocación &amp;quot;omnisuiteText&amp;quot;&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros ( Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Obligatoriedad !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;config_arch&amp;gt;` || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_id&amp;gt;` || OBLIGATORIO || Identificativo de la interacción en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_websiteId&amp;gt;` || OBLIGATORIO || Identificativo del servicio en Omnisuite (ej. website id en chat)&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;omnisuite_createdAt&amp;gt;` || OBLIGATORIO || Creación de la interacción&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_id&amp;gt;` || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_phone_number&amp;gt;` || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;vflow_client_email&amp;gt;` || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| `&amp;lt;question&amp;gt;` || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; max-width: 400px; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
 &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
 &amp;quot;session&amp;quot;: &amp;quot;e926548d-fdcf-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
 &amp;quot;language&amp;quot;: &amp;quot;es&amp;quot;,&lt;br /&gt;
 &amp;quot;response&amp;quot;: &amp;quot;HOLA&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Para canales de voz ====&lt;br /&gt;
Para  canales de voz, existen comandos para &amp;quot;abrir sesión&amp;quot;, &amp;quot;enviar texto&amp;quot; y &amp;quot;cerrar sesión&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Abrir sesión =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;omnisuite_UniqueId&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Unique_ID de asterisk de la llamada en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_id&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Id de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_phone_number&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Telf de cliente en Omnisuite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_client_email&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || Email de cliente en Omnisuite&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;ec73df29-f08a-11f0-a8ec-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;platform_id&amp;quot;: &amp;quot;146&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''El value correspondiente al key &amp;quot;session&amp;quot; deberá ser guardado en una variable para siguientes invocaciones'''&lt;br /&gt;
&lt;br /&gt;
===== Enviar texto =====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Requisito !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;question&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Texto a enviar al orquestado (p. ej. Flowise) (normal, abandoned, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;c6f6fad7-f6c1-11f0-a793-525400ef204c&amp;quot;,&lt;br /&gt;
    &amp;quot;language&amp;quot;: &amp;quot;ES&amp;quot;,&lt;br /&gt;
    &amp;quot;response&amp;quot;: &amp;quot;Cristóbal Colón.&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros  (Los OPCIONALES son &amp;quot;&amp;quot; si no se envía valor):&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parámetro !! Estado !! Descripción&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;config_arch&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_session_uuid&amp;gt;&amp;lt;/code&amp;gt; || OBLIGATORIO || Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;vflow_cause&amp;gt;&amp;lt;/code&amp;gt; || OPCIONAL || (normal, abandoned, expired, other)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplo de respuesta JSON&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 50px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;errorNum&amp;quot;: 104,&lt;br /&gt;
    &amp;quot;errorStr&amp;quot;: &amp;quot;Wrong session&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos para omnisuite ===&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de chat ====&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo de voz ====&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen cally square.jpg|1024px|none|miniatura|Ejemplo de flujo de Cally Square]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionopen.jpg|550px|center|miniatura|Abrir sesión en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt;&lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen textrequest.jpg|550px|center|miniatura|Enviar texto en vFlow]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;background-color: #f6f8fa; border: 1px solid #d1d5da; padding: 1em; border-radius: 4px; width: fit-content; margin-left: 0px; font-family: 'Ubuntu Mono', 'Consolas', monospace; white-space: pre-wrap;&amp;quot;&amp;gt; &lt;br /&gt;
/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vflow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Imagen sessionclose.jpg|900px|center|miniatura|Cerrar sesión en vFlow]]&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:Omnisuite]]&lt;br /&gt;
[[Category:IA]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
</feed>