<?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-06-14T09:35:18Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Omnisuite_STT_y_TTS&amp;diff=18737</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=18737"/>
		<updated>2026-06-11T10:38:24Z</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=APIKEYDEGOOGLE&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;
::&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 | jq -r '.text'&amp;lt;/code&amp;gt;&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;
::&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; /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;
:::[[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=18736</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=18736"/>
		<updated>2026-06-11T10:35:19Z</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=APIKEYDEGOOGLE&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;
::&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 | jq -r '.text'&amp;lt;/code&amp;gt;&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=Operacion_cartelia&amp;diff=18678</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18678"/>
		<updated>2026-06-09T13:58:43Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar textos de idioma&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:ejemplo para idioma español&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18677</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18677"/>
		<updated>2026-06-09T13:58:15Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar textos de idioma&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18676</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18676"/>
		<updated>2026-06-09T13:58:01Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar textos de idioma&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18675</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18675"/>
		<updated>2026-06-09T13:57:51Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar textos de idioma&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
:'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18674</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18674"/>
		<updated>2026-06-09T13:57:03Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar textos de idioma&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18673</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18673"/>
		<updated>2026-06-09T13:56:54Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar textos de idioma&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18672</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18672"/>
		<updated>2026-06-09T13:56:42Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar textos de idioma&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18671</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18671"/>
		<updated>2026-06-09T13:55:35Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:Cartelia]]&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18670</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18670"/>
		<updated>2026-06-09T13:44:12Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Instalación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13 (Trixie)&lt;br /&gt;
* Apache 2.4.67&lt;br /&gt;
* PHP 8.4&lt;br /&gt;
* Motor de base de datos MariaDB 11.8.6&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR (cambiar hostname, cambiar IP en no se cuantos sitios, cambiar certificados,...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18669</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18669"/>
		<updated>2026-06-09T13:39:23Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Instalación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará en formato de imagen virtual (.qcow) listo para su despliegue y adaptación por parte del personal de instalación.&lt;br /&gt;
El personal técnico que despliegue deberá tener nociones básicas de virtualización y administración de sistemas operativos linux&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache versión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18668</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18668"/>
		<updated>2026-06-09T13:27:16Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Instalación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache versión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18667</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18667"/>
		<updated>2026-06-09T13:26:05Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Instalación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18666</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18666"/>
		<updated>2026-06-09T13:25:50Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Instalación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
La adaptación de la máquina entregada para cada caso pasará por realizar los siguientes cambios:&lt;br /&gt;
&lt;br /&gt;
* INDICAR CAMBIOS A REALIZAR&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18665</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18665"/>
		<updated>2026-06-09T13:25:13Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18664</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18664"/>
		<updated>2026-06-09T13:25:00Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Procedimientos básicos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18663</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18663"/>
		<updated>2026-06-09T13:24:41Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Procedimientos básicos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt; (las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18662</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18662"/>
		<updated>2026-06-09T13:24:20Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt;(las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18661</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18661"/>
		<updated>2026-06-09T13:24:00Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt;(las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18660</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18660"/>
		<updated>2026-06-09T13:23:50Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt;(las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
La herramienta poedit es de uso sencillo y no requiere de instrucciones específicas para personal técnico de mdtel&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18659</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18659"/>
		<updated>2026-06-09T13:22:46Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta &amp;lt;code&amp;gt;C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Ejemplo invocación: &amp;lt;code&amp;gt;msgunfmt.exe &amp;quot;C:\cartelia\locale\es.mo&amp;quot; -o &amp;quot;C:\cartelia\locale\es.po&amp;quot; &amp;lt;/code&amp;gt;(las carpetas cambiarán en cada caso)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18658</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18658"/>
		<updated>2026-06-09T13:21:34Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
'''Herramientas necesarias''':&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&lt;br /&gt;
*** Ejemplo invocación: msgunfmt.exe &amp;quot;C:\xibo-cms\locale\es.mo&amp;quot; -o &amp;quot;C:\xibo-cms\locale\es.po&amp;quot; (las carpetas pueden cambiar)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Instrucciones para cambiar mensajes'''&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18657</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18657"/>
		<updated>2026-06-09T13:21:15Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
Herramientas previas necesarias:&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&lt;br /&gt;
*** Ejemplo invocación: msgunfmt.exe &amp;quot;C:\xibo-cms\locale\es.mo&amp;quot; -o &amp;quot;C:\xibo-cms\locale\es.po&amp;quot; (las carpetas pueden cambiar)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instrucciones para cambiar mensajes&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18656</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18656"/>
		<updated>2026-06-09T13:21:01Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
Herramientas previas necesarias:&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&lt;br /&gt;
*** Ejemplo invocación: msgunfmt.exe &amp;quot;C:\xibo-cms\locale\es.mo&amp;quot; -o &amp;quot;C:\xibo-cms\locale\es.po&amp;quot; (las carpetas pueden cambiar)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instrucciones para cambiar mensajes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:(ejemplo para idioma español)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18655</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18655"/>
		<updated>2026-06-09T13:20:02Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
Herramientas previas necesarias:&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&lt;br /&gt;
*** Ejemplo invocación: msgunfmt.exe &amp;quot;C:\xibo-cms\locale\es.mo&amp;quot; -o &amp;quot;C:\xibo-cms\locale\es.po&amp;quot; (las carpetas pueden cambiar)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instrucciones para cambiar mensajes&lt;br /&gt;
&amp;lt;br&amp;gt;      (ejemplo para idioma español)&lt;br /&gt;
&amp;lt;br&amp;gt;      entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18654</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18654"/>
		<updated>2026-06-09T13:19:32Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: /* Modificar textos idioma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
Herramientas previas necesarias:&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&lt;br /&gt;
*** Ejemplo invocación: msgunfmt.exe &amp;quot;C:\xibo-cms\locale\es.mo&amp;quot; -o &amp;quot;C:\xibo-cms\locale\es.po&amp;quot; (las carpetas pueden cambiar)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instrucciones para cambiar mensajes&lt;br /&gt;
&amp;lt;br&amp;gt;(ejemplo para idioma español)&lt;br /&gt;
&amp;lt;br&amp;gt; entre paréntesis perfil que puede realizar la tarea con seguridad&lt;br /&gt;
&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18653</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18653"/>
		<updated>2026-06-09T13:18:57Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisión&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimientos básicos ==&lt;br /&gt;
&lt;br /&gt;
=== Modificar textos idioma ===&lt;br /&gt;
&lt;br /&gt;
Herramientas previas necesarias:&lt;br /&gt;
&lt;br /&gt;
* poedit (https://poedit.com/); nos permitirá:&lt;br /&gt;
** Descompilar fichero &amp;quot;.mo&amp;quot; (el que entiende cartelia) existente a &amp;quot;.po&amp;quot; para modificar una traducción&lt;br /&gt;
*** Se hace con la herramienta C:\Program Files\Poedit\GettextTools\bin\msgunfmt.exe&lt;br /&gt;
*** Ejemplo invocación: msgunfmt.exe &amp;quot;C:\xibo-cms\locale\es.mo&amp;quot; -o &amp;quot;C:\xibo-cms\locale\es.po&amp;quot; (las carpetas pueden cambiar)&lt;br /&gt;
* Ver las traducciones para un fichero &amp;quot;.po&amp;quot;&lt;br /&gt;
* Modificar y &amp;quot;compilar&amp;quot; a fichero &amp;quot;.mo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instrucciones para cambiar mensajes (ejemplo para idioma español); entre paréntesis perfil que entendemos puede realizar la tarea con seguridad&lt;br /&gt;
&lt;br /&gt;
#.- (SAT) Obtener el fichero &amp;quot;.mo&amp;quot; original de /var/www/html/cartelia/locale/es.mo; este es un fichero &amp;quot;compilado&amp;quot;&lt;br /&gt;
#.- (PU) Descompilar el fichero con la herramienta msgunfmt&lt;br /&gt;
#.- (PU) Modificar mensajes con &amp;quot;poedit&amp;quot; y compilar&lt;br /&gt;
#.- (SAT) Subir el fichero modificado a /var/www/html/cartelia/locale/es.mo&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18652</id>
		<title>Operacion cartelia</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Operacion_cartelia&amp;diff=18652"/>
		<updated>2026-06-09T13:16:45Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: Página creada con « == Instalación ==  Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guí…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación ==&lt;br /&gt;
&lt;br /&gt;
Cartelia se entregará al instalador como una máquina virtual a partir de la cual podrá realizar la adaptación necesaria. No se incluye en esta guía detalles de como copiar dicha máquina virtual en cada entorno&lt;br /&gt;
&lt;br /&gt;
Los elementos principales de la máquina son:&lt;br /&gt;
&lt;br /&gt;
* Sistema Operativo Debian 13&lt;br /&gt;
* Apache verisón&lt;br /&gt;
* Motor de base de datos MariaDB&lt;br /&gt;
* Elementos de seguridad por defecto&lt;br /&gt;
** Firewall (basado en )&lt;br /&gt;
** fail2ban&lt;/div&gt;</summary>
		<author><name>Alfredo.rodriguez</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=18651</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=18651"/>
		<updated>2026-06-09T13:14:04Z</updated>

		<summary type="html">&lt;p&gt;Alfredo.rodriguez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
**mainpage|mainpage-description&lt;br /&gt;
&lt;br /&gt;
* Usuario&lt;br /&gt;
** Documentación de usuario VIVAit Call|VIVAit Call&lt;br /&gt;
** Documentacion de usuario VIVAit Suite|VIVAit Suite&lt;br /&gt;
** Documentacion de usuario VIVAit Alert|VIVAit Alert&lt;br /&gt;
&amp;lt;!--*** Documentación de usuario VIVAit Fax|VIVAit Fax--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Administrador&lt;br /&gt;
** Arquitectura VIVAit|Arquitectura&lt;br /&gt;
** Release Notes|Release Notes&lt;br /&gt;
** Funcionalidades | Funcionalidades&lt;br /&gt;
** Portales de administración VIVAit |Portales de administración&lt;br /&gt;
** Preguntas frecuentes administración | Preguntas frecuentes&lt;br /&gt;
&lt;br /&gt;
* Servicio técnico&lt;br /&gt;
** Manuales de instalación|Instalación&lt;br /&gt;
** Actualización|Actualización&lt;br /&gt;
** Manuales de operación plataforma VIVAit |Manuales de operación&lt;br /&gt;
** Terminales homologados en VIVAit | Terminales&lt;br /&gt;
** Hylafax + IAXmodem en VIVAit Call| Solución de fax para VIVAit Call&lt;br /&gt;
** Howtos| Howtos&lt;br /&gt;
** Formación| Formación&lt;br /&gt;
** Incidencias| Incidencias&lt;br /&gt;
** Base de datos| Base de datos&lt;br /&gt;
&lt;br /&gt;
* Desarrollo&lt;br /&gt;
** APIs integracion|API's de integración&lt;br /&gt;
** Kit argumentarios|Desarrollo de argumentarios&lt;br /&gt;
&lt;br /&gt;
* vFlow&lt;br /&gt;
** Manual de operación de vFlow|Operación&lt;br /&gt;
** Portal de administración de vFlow|Administración&lt;br /&gt;
&lt;br /&gt;
* Omnisuite&lt;br /&gt;
** RecordOmni|Mejora grabaciones&lt;br /&gt;
** Manual de operación de vFlow | Integración vflow (punto 6)&lt;br /&gt;
** Omnisuite STT y TTS | STT y TTS&lt;br /&gt;
&lt;br /&gt;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitectura VIVAit Fax|Arquitectura&lt;br /&gt;
** Instalación VIVAit Fax|Instalación&lt;br /&gt;
** Documentacion técnica|Servicio Técnico&lt;br /&gt;
&lt;br /&gt;
* Cartelia&lt;br /&gt;
** Operacion_cartelia | Operacion de cartelia&lt;br /&gt;
&lt;br /&gt;
*  Roadmap&lt;br /&gt;
** Proyectos en desarrollo|Proyectos en desarrollo&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=18254</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=18254"/>
		<updated>2026-05-29T05:58:25Z</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=APIKEYDEGOOGLE&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=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>
</feed>