<?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=Admin</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=Admin"/>
	<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Especial:Contribuciones/Admin"/>
	<updated>2026-04-30T06:05:01Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16065</id>
		<title>Proyectos en desarrollo</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16065"/>
		<updated>2026-02-20T09:58:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proyectos en desarrollo VIVAit&lt;br /&gt;
&lt;br /&gt;
=== VIVAit Call 5.2 ===&lt;br /&gt;
&lt;br /&gt;
* [[Pago asistido]], módulo mdpay&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16064</id>
		<title>Proyectos en desarrollo</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16064"/>
		<updated>2026-02-20T09:58:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proyectos en desarrollo VIVAit&lt;br /&gt;
&lt;br /&gt;
== VIVAit Call ==&lt;br /&gt;
=== Versión 5.2 ===&lt;br /&gt;
&lt;br /&gt;
* [[Pago asistido]], módulo mdpay&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16063</id>
		<title>Proyectos en desarrollo</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16063"/>
		<updated>2026-02-20T09:57:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proyectos en desarrollo VIVAit&lt;br /&gt;
&lt;br /&gt;
===VIVAit Call 5.2 ===&lt;br /&gt;
&lt;br /&gt;
* [[Pago asistido]], módulo mdpay&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16062</id>
		<title>Proyectos en desarrollo</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16062"/>
		<updated>2026-02-20T09:51:05Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proyectos en desarrollo VIVAit&lt;br /&gt;
&lt;br /&gt;
* [[Pago asistido]], módulo mdpay&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16061</id>
		<title>Proyectos en desarrollo</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16061"/>
		<updated>2026-02-20T09:50:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proyectos en desarrollo VIVAit&lt;br /&gt;
&lt;br /&gt;
* [[Pago asistido]] en VIVAit&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16060</id>
		<title>Proyectos en desarrollo</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16060"/>
		<updated>2026-02-20T09:50:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proyectos en desarrollo VIVAit&lt;br /&gt;
&lt;br /&gt;
[[Pago asistido]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16059</id>
		<title>Proyectos en desarrollo</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Proyectos_en_desarrollo&amp;diff=16059"/>
		<updated>2026-02-20T09:50:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: Página creada con «Proyectos en desarrollo VIVAit  **Pago asistido»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proyectos en desarrollo VIVAit&lt;br /&gt;
&lt;br /&gt;
**Pago asistido&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16058</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=16058"/>
		<updated>2026-02-20T09:49:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
*  Roadmap&lt;br /&gt;
** Proyectos en desarrollo|Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16057</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=16057"/>
		<updated>2026-02-20T09:49:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
*  Proyectos&lt;br /&gt;
** Proyectos en desarrollo|Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16056</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=16056"/>
		<updated>2026-02-20T09:48:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
*  &lt;br /&gt;
** Proyectos en desarrollo|Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16055</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=16055"/>
		<updated>2026-02-20T09:48:12Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
* Proyectos en desarrollo&lt;br /&gt;
** Pago asistido| Pago asistido&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16054</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=16054"/>
		<updated>2026-02-20T09:47:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
*&lt;br /&gt;
** Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16053</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=16053"/>
		<updated>2026-02-20T09:47:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
** Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16052</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=16052"/>
		<updated>2026-02-20T09:46:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
* Proyectos en desarrollo&lt;br /&gt;
** Pago asistido| Pago asistido&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16051</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=16051"/>
		<updated>2026-02-20T09:46:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
* Proyectos en desarrollo|Proyectos en desarrollo&lt;br /&gt;
** Pago asistido| Pago asistido&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16050</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=16050"/>
		<updated>2026-02-20T09:46:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura VIVAit Fax|Arquitectura&lt;br /&gt;
** Instalación VIVAit Fax|Instalación&lt;br /&gt;
** Documentacion técnica|Servicio Técnico&lt;br /&gt;
**&amp;lt;br&amp;gt;&lt;br /&gt;
**&amp;lt;br&amp;gt;&lt;br /&gt;
** Proyectos en desarrollo|Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16049</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=16049"/>
		<updated>2026-02-20T09:45:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
**&lt;br /&gt;
** Proyectos en desarrollo|Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16048</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=16048"/>
		<updated>2026-02-20T09:45:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura VIVAit Fax|Arquitectura&lt;br /&gt;
** Instalación VIVAit Fax|Instalación&lt;br /&gt;
** Documentacion técnica|Servicio Técnico&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Proyectos en desarrollo|Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16047</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=16047"/>
		<updated>2026-02-20T09:44:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
** Proyectos en desarrollo|Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16046</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=16046"/>
		<updated>2026-02-20T09:43:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
* Proyectos en desarrollo&lt;br /&gt;
** Pago asistido| Pago asistido&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=MediaWiki:Sidebar&amp;diff=16045</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=16045"/>
		<updated>2026-02-20T09:41:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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;
** Homologación de Terminales | 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;
* VIVAit Fax&lt;br /&gt;
** Documentación de usuario VIVAit Fax|Usuario&lt;br /&gt;
** Arquitctura 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;
* Proyectos en desarrollo&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16044</id>
		<title>Manual de Usuario de Vivait Supervisor 2.0</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16044"/>
		<updated>2026-02-20T09:38:10Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Producto:  '''!! '''''VIVA'''''it Call&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&lt;br /&gt;
Versiones anteriores de VIVAit Supervisor: [[VIVAit_Supervisor_versiones]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Introducción a Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;big&amp;gt;&lt;br /&gt;
Con la versión 5.1 de la plataforma '''''VIVA'''''it Call se ha lanzado la aplicación: ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los puntos claves de '''Vivait Supervisor''' son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seguimiento de las llamadas generadas en el sistema '''''VIVA'''''it Call.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Visualización de resultados mediante gráficos, tablas y otros formatos.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Exportación de datos para su posterior análisis.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0| Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definiciones en Vivait Supervisor 2.0 ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se definen los principales conceptos empleados en el supervisor:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Dashboard'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Panel de control que presenta de forma visual y resumida la información clave (datos, indicadores o métricas),&amp;lt;br&amp;gt;&lt;br /&gt;
:con el objetivo de facilitar la supervisión, el análisis y la toma de decisiones de manera rápida y eficiente.&amp;lt;br&amp;gt;&lt;br /&gt;
:Un dashboard está compuesto por uno o varios componentes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Componente'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Elemento individual que forma parte de un dashboard y cuya función es mostrar la información requerida.&amp;lt;br&amp;gt;&lt;br /&gt;
:Los componentes pueden adoptar distintos formatos, entre los más habituales:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Tablas:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se presenta en formato tabular. Las cabeceras y la estructura de la tabla se definen durante la creación de su lógica.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Gráficos:'''&amp;lt;br&amp;gt; &lt;br /&gt;
:::Los datos se muestran de forma visual mediante distintos tipos de gráficos, como: barras, líneas, circulares, entre otros.&amp;lt;br&amp;gt;&lt;br /&gt;
:Según el modo en que actualizan la información, los tipos de componentes se clasifican en:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Dinámicos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se actualiza de forma periódica, de acuerdo con un temporizador asociado al componente.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Estáticos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se carga al iniciar el dashboard y no se vuelve a actualizar hasta que el panel de control se invoca nuevamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Descripción de la interfaz de Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La aplicación de VIVAit-Supervisor tiene dos página web:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Inicio de sesión en Vivait Supervisor|validación]], donde se piden las credenciales al usuario,&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Interfaz de trabajo de Vivait Supervisor|trabajo]], donde se realizan todas las acciones referentes a la funcionalidad suministrada.&amp;lt;br&amp;gt;&lt;br /&gt;
:En este manual se describe el perfil consulta de del usuario ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inicio de sesión en Vivait Supervisor  ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El acceso a la aplicación '''''VIVA'''it Supervisor'' se hace a través de un navegador con un enlace de la siguiente forma: &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: https://host/Vivait-Supervisor/&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
: donde &amp;quot;host&amp;quot; será el nombre o dirección IP del servidor en el que está instalada la aplicación '''''VIVA'''it Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo:&lt;br /&gt;
:::''https://172.25.128.92/Vivait-Supervisor/''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación aparece una ventana donde es necesario autentificarse mediante las credenciales correspondientes:&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Usuario''': sera un usuario creado en el sistema con los permisos de acceso a la aplicación ''Call Center'',&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Contraseña''': el password asociado a este usuario.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Tener acceso a la aplicación ''Call Center'' no impide que el usuario tenga también otras funcionalidades, como movilidad corporativa o tracker.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al utilizar el botón [[File:entrar_V5.png|200px]] se pueden dar distintas situaciones posibles, con resultados diferentes, según se hayan cumplimentados los campos ''Usuario'' y ''Contraseña''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Inicio de sesión sin credenciales|Inicio de sesión sin credenciales]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 2. [[#Inicio de sesión con credenciales válidas|Inicio de sesión con credenciales válidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 3. [[#Inicio de sesión con credenciales inválidas|Inicio de sesión con credenciales inválidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 4. [[#Inicio de sesión sin permisos|Inicio de sesión sin permisos]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin credenciales  ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si no se han rellenado los campos '''Usuario''' y '''Contraseña''' aparece la siguiente ventana informando de la situación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_sin_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales válidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales introducidas son correctas se abre la ventana que permite el uso de la aplicación ''Supervisor''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:accesos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales inválidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales no son válidas aparece un mensaje informativo:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_mal1_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario realizar un nuevo intento introduciendo un usuario válido y una contraseña correcta.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin permisos ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el usuario no tiene configurado el acceso a la aplicación ''Call Center'' aparece una ventana informativa.&lt;br /&gt;
[[File:sin_permisos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario informar al administrador del sistema '''''VIVA'''it Call'' para que asigne al usuario los permisos adecuados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interfaz de trabajo de Vivait Supervisor ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario ha iniciado sesión con éxito la ventana que se muestra se divide en varías áreas:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Área de usuario de Vivait Supervisor|Usuario logado]]&lt;br /&gt;
:: 2. [[#Área de Configuración de Vivait Supervisor|Acceso a configuración de dashboards]]&lt;br /&gt;
:: 3. [[#Área del Logo del portal de Vivait Supervisor|Logo del portal]]&lt;br /&gt;
:: 4. [[#Botón de acceso a filtro global de Vivait Supervisor|Botón de filtro global]]&lt;br /&gt;
:: 5. [[#Área de monitorización en Vivait Supervisor|Información de supervisión]]&lt;br /&gt;
:: 6. [[#Selección de Dashboard en Vivait Supervisor|Selección de dashboard]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:menús_general_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de usuario de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el usuario logado en el portal. Pulsando sobre este área se despliega un espacio que permite cerrar la sesión y visualizar la versión de la aplicación&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:user_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de Configuración de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En este área se encuentra el icono que permite al usuario acceder a la gestión de los dahsborads. El estado de este icono es:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono habilitado''': el usuario tiene nivel de administrador de ''Vivait Supervisor'' en su perfil.&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono desactivado:''' el usuario solo puede utilizar dashboard previamente creados.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el icono está habilitado se pueden crear, borrar y modificar dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:configuración_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área del Logo del portal de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el logotipo de la aplicación ''Vivait Supervisor'' así como el de '''''MDT'''el''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:logo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Botón de acceso a filtro global de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El botón de filtro global [[File:filtro_botón_supervisor_V5.1.png|40px]] permite mostrar u ocultar el área desde la que se configuran los filtros globales de consulta de la monitorización de un dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsarlo, se despliega el panel de filtros:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_despliegue_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este panel contiene los campos disponibles para filtrar la información mostrada. Su contenido depende del dashboard seleccionado, por lo que puede variar en cada caso.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La descripción detallada de los filtros globales disponibles se incluye en la sección correspondiente a cada [[#Selección de Dashboard en Vivait Supervisor |dashboard]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Indicador de filtro global activo'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cuando se aplica un filtro y el panel se vuelve a ocultar (pulsando nuevamente el botón de filtro), el icono cambia para indicar que existe un filtro global activo.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El icono se complementa con un circulo verde indicativo de que hay un filtro global activo [[File:filtro_activo_supervisor_V5.1.png|80px]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para consultar qué campos están siendo utilizados como filtro, es necesario volver a desplegar el panel pulsando de nuevo el botón de filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de monitorización en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de monitorización aparece vacía cuando el usuario inicia sesión en la aplicación.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario selecciona un dashboard, este espacio se utiliza para mostrar la información correspondiente, ya sea en forma de tablas, gráficos o ambos, según la configuración del dashboard elegido.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_ejemplo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Selección de Dashboard en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este espacio permite la selección del dashboard que se desplegara en el área de monitorización vista anteriormente.&amp;lt;br&amp;gt;&lt;br /&gt;
Para ello se pulsa sobre la ventana ''Seleccione...'' se despliega la lista de dashboard configurados previamente en ''Vivait Supervisor''. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:selección_dashboard_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La selección se puede realizar de varias formas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tecleando el nombre del dashboard en la ventana superior de la lista mostrada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seleccionando directamente el dashboard pulsando sobre él en la lista desplegada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Desplazándose el sentido ascendente o descendente por la lista, bien mediante la rueda del ratón o con las flechas arriba/abajo del teclado.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | La incorporación de nuevos dashboard a la lista se realiza desde el Dpto. de Desarrollo de '''''MDT'''el''. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los dashboard entregados de serie con el sistema son:&lt;br /&gt;
: • [[#Dashboard Acumulado grupos de Vivait Supervisor 2.0 | Acumulado grupos]]&lt;br /&gt;
: • [[#Dashboard Detalle de llamadas de Vivait Supervisor 2.0 | Detalle de llamadas]]&lt;br /&gt;
: • [[#Dashboard Detalle extensiones de Vivait Supervisor 2.0 | Detalle extensiones]]&lt;br /&gt;
: • [[#Dashboard Llamadas a grupos de Vivait Supervisor 2.0 | Llamadas a grupos]]&lt;br /&gt;
: • [[#Dashboard Resumen extensiones de Vivait Supervisor 2.0 | Resumen extensiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cada uno de estos dashboard tiene asociado un filtro global determinado.&amp;lt;br&amp;gt;&lt;br /&gt;
Al describir cada dashboard se documentan los campos de estos filtros globales por defecto.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los campos por los que se puede filtrar en un dashboard se pueden ampliar o reducir según necesidades del usuario final. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los componentes de un dashboard disponen de un filtro que permite aplicar acciones sobre los datos que se mostrarán en las tablas y/o gráficos correspondientes.&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los usuarios que inicien sesión en ''Vivait Supervisor'' pueden gestionar este filtro, aunque no tengan acceso a la configuración del dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
El filtro de cada componente se encuentra en la esquina superior izquierda y está representado por el siguiente icono:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar sobre el icono, se despliega la ventana correspondiente, donde se puede realizar la configuración necesaria para obtener los resultados deseados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_campos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En la entrega inicial este filtro es el mismo para todos los componentes que conforman los distintos dashboard. [[#Campos del filtro de componente |Consulta de los campos del filtro de componente]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Adventencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Si un dashboard incluye varios componentes, cada uno tiene su propia configuración de filtros.&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar mostrar datos inconsistentes o inconexos, es necesario sincronizar estos filtros entre todos los componentes.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Utilización del filtro de componente'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Las acciones que se pueden realizar sobre el filtro del componente son:&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Editar''', se utiliza el icono   [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]]    en el componente en el que se desee realizar la acción.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Salvar''', se utiliza el icono  [[File:filtro_botón_salvar_supervisor_V5.1.png|20px]]    situado en la ventana del filtro una vez configurados los campos adecuadamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:: cuando se guardan los cambios realizados en el filtro de componente se indica el resultado con la correspondiente ventana.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_actualizado_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Cerrar''', al volver a pulsar el icono [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]], con la ventana de configuración abierta, se cierra la misma.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Aplicar''', al abrir (editar) o cerrar la ventana del filtro de componente este se aplica, pudiendo modificarse los resultados de la monitorización. Al salvar el filtro este no se aplica.&amp;lt;br&amp;gt;&lt;br /&gt;
::También se aplica el filtro de componente al modificar algunos campos o mediante el icono lupa que se encuentra en el centro del filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_lupa_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro de componente ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para la correcta comprensión de los campos de este filtro se deben conocer dos conceptos:&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Periodo''', es el intervalo de tiempo estático que se considera para la obtención de los datos. &amp;lt;br&amp;gt;&lt;br /&gt;
::Queda definido por una fecha y hora inicial y final. Es obligatorio definir ambos campos.&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Intervalo''', es el periodo de tiempo dinámico, desde el momento actual hasta la cantidad (''Nº repeticiones'') de periodos de tiempo (''Intervalo'') en que se realizará la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
::Ejemplo: si ''Nº repeticiones = 8'', ''Intervalo = Hora'', las consultas devolverán los datos de las últimas 8 horas. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | El que se realice una consulta por periodo o por intervalo depende del campo ''Tiempo real''.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se documentan los campos que constituyen el filtro de componente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none;&amp;quot;&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.3cm;color:#ffffff;&amp;quot; | '''''Campo''''' &lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Explicación'''''&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Valores posibles'''''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Título:&lt;br /&gt;
| | Es el título identificativo que se mostrará en el componente.&lt;br /&gt;
| | Valor alfanumérico.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Periodo:&lt;br /&gt;
| | Dos campos que definen fecha y hora inicial y final del periodo en el que se realizar la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
Estos campos se pueden configurar directamente o utilizando el calendario asociado a cada uno de ellos.&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar en el icono de calendario se despliega una ventana donde se puede:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_periodo_supervisor_V5.1.png|400px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la fecha de inicio/fin de la consulta, seleccionando el día.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La parte superior de esta ventana permite las siguientes opciones:&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la hora de inicio/fin de la consulta, mediante el icono reloj.&amp;lt;br&amp;gt;&lt;br /&gt;
- Borrar el contenido del campo, mediante el icono papelera.&amp;lt;br&amp;gt;&lt;br /&gt;
- Cerrar la ventana del calendario, mediante el icono cruz.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
| | Si se incorpora el valor manualmente &amp;lt;br&amp;gt;&lt;br /&gt;
se debe seguir el formato '''DD/MM/YYYY HH:mm'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Intervalo&lt;br /&gt;
| | Es el período de tiempo que la aplicación consulta en la base de datos,&amp;lt;br&amp;gt;&lt;br /&gt;
contado desde el momento actual.&lt;br /&gt;
| |Valor a elegir de una lista.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_intervalo_supervisor_V5.1.png|600px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la presente versión los valores posibles son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Minuto,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 5 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 10 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 30 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Hora,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Día,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Mes,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Año.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Igualar tiempo&lt;br /&gt;
| | Cumplimenta el campo del intervalo de refresco del componente, &amp;lt;br&amp;gt;&lt;br /&gt;
con el valor configurado en el intervalo. Se vera más adelante.&amp;lt;br&amp;gt;&lt;br /&gt;
Si el campo se marca, esta desaparece al guardar los cambios del filtro.&lt;br /&gt;
| |Campo marcado: se actualiza el valor de refresco de la consulta,&amp;lt;br&amp;gt;&lt;br /&gt;
:en segundos, con el valor del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: no se actualiza el valor de refresco del componente&amp;lt;br&amp;gt;&lt;br /&gt;
:con el valor del intervalo. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Nº repeticiones:&lt;br /&gt;
| | Cantidad de veces que se aplica la unidad de tiempo definida en el campo ''Intervalo''.&lt;br /&gt;
| |Valor numérico. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Tiempo real&lt;br /&gt;
| | Indica si la consulta para la obtención de datos se realiza&amp;lt;br&amp;gt;&lt;br /&gt;
según el intervalo o según el periodo.&amp;lt;br&amp;gt;&lt;br /&gt;
La modificación de estado de este campo realiza una consulta a la BBDD.&lt;br /&gt;
| |Campo marcado: la consulta se realiza según los parámetros del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: la consulta se realiza según los parámetros del periodo. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente vs filtro global =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La combinación de un filtro global y filtros específicos por componente &amp;lt;br&amp;gt;&lt;br /&gt;
puede generar configuraciones inconsistentes y causar interpretaciones incorrectas de los datos.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar estas inconsistencias, es necesario tener en cuenta los siguientes puntos:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
: • Los filtros son excluyentes:&lt;br /&gt;
:: - Si se activa un filtro de componente automáticamente se desactiva un posible filtro de dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
:: - Si se activa un filtro global de dashboard este es prioritario sobre el filtro que tiene el componente.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard se aplica automáticamente el filtro individual de los componentes que lo conforman.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard nunca tiene activo un filtro global. Es necesario activarlo manualmente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; |Siempre se tiene que tener claro que filtro es el que se está aplicando a la consulta.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Acumulado grupos de Vivait Supervisor 2.0  =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Icono en construccion.png|600px|miniaturadeimagen|center|marco|En construcción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle de llamadas de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle extensiones de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Llamadas a grupos de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard LLamadas a grupos se depliega la tabla de detalle que se muestra a continuación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_llamada_grupos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en esta tabla se pueden consultar en la sección [[#Campos del dashboard de Llamada a grupos en Vivait Supervisor |Campos del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a esta tabla se pueden consultar en la sección [[#Filtros del dashboard de Llamada a grupos en Vivait Supervisor |Filtros del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de Llamada a grupos en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Filtros del dashboard de Llamada a grupos en Vivait Supervisor======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard ''Resumen extensiones'' de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard ''Resumen extensiones'' se muestran dos tablas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Resumen''' presenta el número de llamadas asociadas a cada extensión que haya registrado al menos una llamada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Detalle''' muestra la información detallada de cada una de esas llamadas.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los nombres de las tablas se pueden cambiar por el usuario, independientemente de su perfil de acceso.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en estas tablas se pueden consultar en la sección [[#Campos del dashboard de Resumen extensiones en Vivait Supervisor |Campos del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de filtros de este dashboard presenta el siguiente aspecto:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtros_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a estas tablas y los botones asociados se pueden consultar en la sección [[#Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor|Campos del filtro del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de ''Resumen extensiones'' en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16043</id>
		<title>Manual de Usuario de Vivait Supervisor 2.0</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16043"/>
		<updated>2026-02-20T09:37:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Producto:  '''!! '''''VIVA'''''it Call&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&lt;br /&gt;
Versiones anteriores de [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor_versiones VIVAit Supervisor]&lt;br /&gt;
&lt;br /&gt;
[[VIVAit_Supervisor_versiones]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Introducción a Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;big&amp;gt;&lt;br /&gt;
Con la versión 5.1 de la plataforma '''''VIVA'''''it Call se ha lanzado la aplicación: ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los puntos claves de '''Vivait Supervisor''' son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seguimiento de las llamadas generadas en el sistema '''''VIVA'''''it Call.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Visualización de resultados mediante gráficos, tablas y otros formatos.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Exportación de datos para su posterior análisis.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0| Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definiciones en Vivait Supervisor 2.0 ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se definen los principales conceptos empleados en el supervisor:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Dashboard'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Panel de control que presenta de forma visual y resumida la información clave (datos, indicadores o métricas),&amp;lt;br&amp;gt;&lt;br /&gt;
:con el objetivo de facilitar la supervisión, el análisis y la toma de decisiones de manera rápida y eficiente.&amp;lt;br&amp;gt;&lt;br /&gt;
:Un dashboard está compuesto por uno o varios componentes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Componente'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Elemento individual que forma parte de un dashboard y cuya función es mostrar la información requerida.&amp;lt;br&amp;gt;&lt;br /&gt;
:Los componentes pueden adoptar distintos formatos, entre los más habituales:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Tablas:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se presenta en formato tabular. Las cabeceras y la estructura de la tabla se definen durante la creación de su lógica.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Gráficos:'''&amp;lt;br&amp;gt; &lt;br /&gt;
:::Los datos se muestran de forma visual mediante distintos tipos de gráficos, como: barras, líneas, circulares, entre otros.&amp;lt;br&amp;gt;&lt;br /&gt;
:Según el modo en que actualizan la información, los tipos de componentes se clasifican en:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Dinámicos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se actualiza de forma periódica, de acuerdo con un temporizador asociado al componente.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Estáticos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se carga al iniciar el dashboard y no se vuelve a actualizar hasta que el panel de control se invoca nuevamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Descripción de la interfaz de Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La aplicación de VIVAit-Supervisor tiene dos página web:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Inicio de sesión en Vivait Supervisor|validación]], donde se piden las credenciales al usuario,&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Interfaz de trabajo de Vivait Supervisor|trabajo]], donde se realizan todas las acciones referentes a la funcionalidad suministrada.&amp;lt;br&amp;gt;&lt;br /&gt;
:En este manual se describe el perfil consulta de del usuario ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inicio de sesión en Vivait Supervisor  ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El acceso a la aplicación '''''VIVA'''it Supervisor'' se hace a través de un navegador con un enlace de la siguiente forma: &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: https://host/Vivait-Supervisor/&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
: donde &amp;quot;host&amp;quot; será el nombre o dirección IP del servidor en el que está instalada la aplicación '''''VIVA'''it Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo:&lt;br /&gt;
:::''https://172.25.128.92/Vivait-Supervisor/''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación aparece una ventana donde es necesario autentificarse mediante las credenciales correspondientes:&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Usuario''': sera un usuario creado en el sistema con los permisos de acceso a la aplicación ''Call Center'',&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Contraseña''': el password asociado a este usuario.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Tener acceso a la aplicación ''Call Center'' no impide que el usuario tenga también otras funcionalidades, como movilidad corporativa o tracker.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al utilizar el botón [[File:entrar_V5.png|200px]] se pueden dar distintas situaciones posibles, con resultados diferentes, según se hayan cumplimentados los campos ''Usuario'' y ''Contraseña''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Inicio de sesión sin credenciales|Inicio de sesión sin credenciales]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 2. [[#Inicio de sesión con credenciales válidas|Inicio de sesión con credenciales válidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 3. [[#Inicio de sesión con credenciales inválidas|Inicio de sesión con credenciales inválidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 4. [[#Inicio de sesión sin permisos|Inicio de sesión sin permisos]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin credenciales  ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si no se han rellenado los campos '''Usuario''' y '''Contraseña''' aparece la siguiente ventana informando de la situación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_sin_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales válidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales introducidas son correctas se abre la ventana que permite el uso de la aplicación ''Supervisor''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:accesos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales inválidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales no son válidas aparece un mensaje informativo:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_mal1_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario realizar un nuevo intento introduciendo un usuario válido y una contraseña correcta.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin permisos ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el usuario no tiene configurado el acceso a la aplicación ''Call Center'' aparece una ventana informativa.&lt;br /&gt;
[[File:sin_permisos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario informar al administrador del sistema '''''VIVA'''it Call'' para que asigne al usuario los permisos adecuados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interfaz de trabajo de Vivait Supervisor ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario ha iniciado sesión con éxito la ventana que se muestra se divide en varías áreas:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Área de usuario de Vivait Supervisor|Usuario logado]]&lt;br /&gt;
:: 2. [[#Área de Configuración de Vivait Supervisor|Acceso a configuración de dashboards]]&lt;br /&gt;
:: 3. [[#Área del Logo del portal de Vivait Supervisor|Logo del portal]]&lt;br /&gt;
:: 4. [[#Botón de acceso a filtro global de Vivait Supervisor|Botón de filtro global]]&lt;br /&gt;
:: 5. [[#Área de monitorización en Vivait Supervisor|Información de supervisión]]&lt;br /&gt;
:: 6. [[#Selección de Dashboard en Vivait Supervisor|Selección de dashboard]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:menús_general_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de usuario de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el usuario logado en el portal. Pulsando sobre este área se despliega un espacio que permite cerrar la sesión y visualizar la versión de la aplicación&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:user_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de Configuración de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En este área se encuentra el icono que permite al usuario acceder a la gestión de los dahsborads. El estado de este icono es:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono habilitado''': el usuario tiene nivel de administrador de ''Vivait Supervisor'' en su perfil.&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono desactivado:''' el usuario solo puede utilizar dashboard previamente creados.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el icono está habilitado se pueden crear, borrar y modificar dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:configuración_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área del Logo del portal de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el logotipo de la aplicación ''Vivait Supervisor'' así como el de '''''MDT'''el''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:logo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Botón de acceso a filtro global de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El botón de filtro global [[File:filtro_botón_supervisor_V5.1.png|40px]] permite mostrar u ocultar el área desde la que se configuran los filtros globales de consulta de la monitorización de un dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsarlo, se despliega el panel de filtros:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_despliegue_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este panel contiene los campos disponibles para filtrar la información mostrada. Su contenido depende del dashboard seleccionado, por lo que puede variar en cada caso.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La descripción detallada de los filtros globales disponibles se incluye en la sección correspondiente a cada [[#Selección de Dashboard en Vivait Supervisor |dashboard]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Indicador de filtro global activo'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cuando se aplica un filtro y el panel se vuelve a ocultar (pulsando nuevamente el botón de filtro), el icono cambia para indicar que existe un filtro global activo.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El icono se complementa con un circulo verde indicativo de que hay un filtro global activo [[File:filtro_activo_supervisor_V5.1.png|80px]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para consultar qué campos están siendo utilizados como filtro, es necesario volver a desplegar el panel pulsando de nuevo el botón de filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de monitorización en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de monitorización aparece vacía cuando el usuario inicia sesión en la aplicación.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario selecciona un dashboard, este espacio se utiliza para mostrar la información correspondiente, ya sea en forma de tablas, gráficos o ambos, según la configuración del dashboard elegido.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_ejemplo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Selección de Dashboard en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este espacio permite la selección del dashboard que se desplegara en el área de monitorización vista anteriormente.&amp;lt;br&amp;gt;&lt;br /&gt;
Para ello se pulsa sobre la ventana ''Seleccione...'' se despliega la lista de dashboard configurados previamente en ''Vivait Supervisor''. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:selección_dashboard_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La selección se puede realizar de varias formas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tecleando el nombre del dashboard en la ventana superior de la lista mostrada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seleccionando directamente el dashboard pulsando sobre él en la lista desplegada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Desplazándose el sentido ascendente o descendente por la lista, bien mediante la rueda del ratón o con las flechas arriba/abajo del teclado.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | La incorporación de nuevos dashboard a la lista se realiza desde el Dpto. de Desarrollo de '''''MDT'''el''. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los dashboard entregados de serie con el sistema son:&lt;br /&gt;
: • [[#Dashboard Acumulado grupos de Vivait Supervisor 2.0 | Acumulado grupos]]&lt;br /&gt;
: • [[#Dashboard Detalle de llamadas de Vivait Supervisor 2.0 | Detalle de llamadas]]&lt;br /&gt;
: • [[#Dashboard Detalle extensiones de Vivait Supervisor 2.0 | Detalle extensiones]]&lt;br /&gt;
: • [[#Dashboard Llamadas a grupos de Vivait Supervisor 2.0 | Llamadas a grupos]]&lt;br /&gt;
: • [[#Dashboard Resumen extensiones de Vivait Supervisor 2.0 | Resumen extensiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cada uno de estos dashboard tiene asociado un filtro global determinado.&amp;lt;br&amp;gt;&lt;br /&gt;
Al describir cada dashboard se documentan los campos de estos filtros globales por defecto.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los campos por los que se puede filtrar en un dashboard se pueden ampliar o reducir según necesidades del usuario final. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los componentes de un dashboard disponen de un filtro que permite aplicar acciones sobre los datos que se mostrarán en las tablas y/o gráficos correspondientes.&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los usuarios que inicien sesión en ''Vivait Supervisor'' pueden gestionar este filtro, aunque no tengan acceso a la configuración del dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
El filtro de cada componente se encuentra en la esquina superior izquierda y está representado por el siguiente icono:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar sobre el icono, se despliega la ventana correspondiente, donde se puede realizar la configuración necesaria para obtener los resultados deseados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_campos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En la entrega inicial este filtro es el mismo para todos los componentes que conforman los distintos dashboard. [[#Campos del filtro de componente |Consulta de los campos del filtro de componente]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Adventencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Si un dashboard incluye varios componentes, cada uno tiene su propia configuración de filtros.&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar mostrar datos inconsistentes o inconexos, es necesario sincronizar estos filtros entre todos los componentes.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Utilización del filtro de componente'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Las acciones que se pueden realizar sobre el filtro del componente son:&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Editar''', se utiliza el icono   [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]]    en el componente en el que se desee realizar la acción.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Salvar''', se utiliza el icono  [[File:filtro_botón_salvar_supervisor_V5.1.png|20px]]    situado en la ventana del filtro una vez configurados los campos adecuadamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:: cuando se guardan los cambios realizados en el filtro de componente se indica el resultado con la correspondiente ventana.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_actualizado_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Cerrar''', al volver a pulsar el icono [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]], con la ventana de configuración abierta, se cierra la misma.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Aplicar''', al abrir (editar) o cerrar la ventana del filtro de componente este se aplica, pudiendo modificarse los resultados de la monitorización. Al salvar el filtro este no se aplica.&amp;lt;br&amp;gt;&lt;br /&gt;
::También se aplica el filtro de componente al modificar algunos campos o mediante el icono lupa que se encuentra en el centro del filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_lupa_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro de componente ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para la correcta comprensión de los campos de este filtro se deben conocer dos conceptos:&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Periodo''', es el intervalo de tiempo estático que se considera para la obtención de los datos. &amp;lt;br&amp;gt;&lt;br /&gt;
::Queda definido por una fecha y hora inicial y final. Es obligatorio definir ambos campos.&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Intervalo''', es el periodo de tiempo dinámico, desde el momento actual hasta la cantidad (''Nº repeticiones'') de periodos de tiempo (''Intervalo'') en que se realizará la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
::Ejemplo: si ''Nº repeticiones = 8'', ''Intervalo = Hora'', las consultas devolverán los datos de las últimas 8 horas. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | El que se realice una consulta por periodo o por intervalo depende del campo ''Tiempo real''.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se documentan los campos que constituyen el filtro de componente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none;&amp;quot;&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.3cm;color:#ffffff;&amp;quot; | '''''Campo''''' &lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Explicación'''''&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Valores posibles'''''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Título:&lt;br /&gt;
| | Es el título identificativo que se mostrará en el componente.&lt;br /&gt;
| | Valor alfanumérico.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Periodo:&lt;br /&gt;
| | Dos campos que definen fecha y hora inicial y final del periodo en el que se realizar la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
Estos campos se pueden configurar directamente o utilizando el calendario asociado a cada uno de ellos.&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar en el icono de calendario se despliega una ventana donde se puede:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_periodo_supervisor_V5.1.png|400px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la fecha de inicio/fin de la consulta, seleccionando el día.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La parte superior de esta ventana permite las siguientes opciones:&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la hora de inicio/fin de la consulta, mediante el icono reloj.&amp;lt;br&amp;gt;&lt;br /&gt;
- Borrar el contenido del campo, mediante el icono papelera.&amp;lt;br&amp;gt;&lt;br /&gt;
- Cerrar la ventana del calendario, mediante el icono cruz.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
| | Si se incorpora el valor manualmente &amp;lt;br&amp;gt;&lt;br /&gt;
se debe seguir el formato '''DD/MM/YYYY HH:mm'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Intervalo&lt;br /&gt;
| | Es el período de tiempo que la aplicación consulta en la base de datos,&amp;lt;br&amp;gt;&lt;br /&gt;
contado desde el momento actual.&lt;br /&gt;
| |Valor a elegir de una lista.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_intervalo_supervisor_V5.1.png|600px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la presente versión los valores posibles son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Minuto,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 5 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 10 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 30 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Hora,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Día,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Mes,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Año.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Igualar tiempo&lt;br /&gt;
| | Cumplimenta el campo del intervalo de refresco del componente, &amp;lt;br&amp;gt;&lt;br /&gt;
con el valor configurado en el intervalo. Se vera más adelante.&amp;lt;br&amp;gt;&lt;br /&gt;
Si el campo se marca, esta desaparece al guardar los cambios del filtro.&lt;br /&gt;
| |Campo marcado: se actualiza el valor de refresco de la consulta,&amp;lt;br&amp;gt;&lt;br /&gt;
:en segundos, con el valor del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: no se actualiza el valor de refresco del componente&amp;lt;br&amp;gt;&lt;br /&gt;
:con el valor del intervalo. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Nº repeticiones:&lt;br /&gt;
| | Cantidad de veces que se aplica la unidad de tiempo definida en el campo ''Intervalo''.&lt;br /&gt;
| |Valor numérico. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Tiempo real&lt;br /&gt;
| | Indica si la consulta para la obtención de datos se realiza&amp;lt;br&amp;gt;&lt;br /&gt;
según el intervalo o según el periodo.&amp;lt;br&amp;gt;&lt;br /&gt;
La modificación de estado de este campo realiza una consulta a la BBDD.&lt;br /&gt;
| |Campo marcado: la consulta se realiza según los parámetros del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: la consulta se realiza según los parámetros del periodo. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente vs filtro global =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La combinación de un filtro global y filtros específicos por componente &amp;lt;br&amp;gt;&lt;br /&gt;
puede generar configuraciones inconsistentes y causar interpretaciones incorrectas de los datos.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar estas inconsistencias, es necesario tener en cuenta los siguientes puntos:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
: • Los filtros son excluyentes:&lt;br /&gt;
:: - Si se activa un filtro de componente automáticamente se desactiva un posible filtro de dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
:: - Si se activa un filtro global de dashboard este es prioritario sobre el filtro que tiene el componente.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard se aplica automáticamente el filtro individual de los componentes que lo conforman.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard nunca tiene activo un filtro global. Es necesario activarlo manualmente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; |Siempre se tiene que tener claro que filtro es el que se está aplicando a la consulta.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Acumulado grupos de Vivait Supervisor 2.0  =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Icono en construccion.png|600px|miniaturadeimagen|center|marco|En construcción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle de llamadas de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle extensiones de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Llamadas a grupos de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard LLamadas a grupos se depliega la tabla de detalle que se muestra a continuación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_llamada_grupos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en esta tabla se pueden consultar en la sección [[#Campos del dashboard de Llamada a grupos en Vivait Supervisor |Campos del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a esta tabla se pueden consultar en la sección [[#Filtros del dashboard de Llamada a grupos en Vivait Supervisor |Filtros del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de Llamada a grupos en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Filtros del dashboard de Llamada a grupos en Vivait Supervisor======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard ''Resumen extensiones'' de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard ''Resumen extensiones'' se muestran dos tablas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Resumen''' presenta el número de llamadas asociadas a cada extensión que haya registrado al menos una llamada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Detalle''' muestra la información detallada de cada una de esas llamadas.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los nombres de las tablas se pueden cambiar por el usuario, independientemente de su perfil de acceso.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en estas tablas se pueden consultar en la sección [[#Campos del dashboard de Resumen extensiones en Vivait Supervisor |Campos del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de filtros de este dashboard presenta el siguiente aspecto:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtros_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a estas tablas y los botones asociados se pueden consultar en la sección [[#Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor|Campos del filtro del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de ''Resumen extensiones'' en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16042</id>
		<title>Manual de Usuario de Vivait Supervisor 2.0</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16042"/>
		<updated>2026-02-20T09:36:52Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Producto:  '''!! '''''VIVA'''''it Call&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&lt;br /&gt;
Versiones anteriores de [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor_versiones VIVAit Supervisor]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Introducción a Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;big&amp;gt;&lt;br /&gt;
Con la versión 5.1 de la plataforma '''''VIVA'''''it Call se ha lanzado la aplicación: ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los puntos claves de '''Vivait Supervisor''' son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seguimiento de las llamadas generadas en el sistema '''''VIVA'''''it Call.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Visualización de resultados mediante gráficos, tablas y otros formatos.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Exportación de datos para su posterior análisis.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0| Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definiciones en Vivait Supervisor 2.0 ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se definen los principales conceptos empleados en el supervisor:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Dashboard'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Panel de control que presenta de forma visual y resumida la información clave (datos, indicadores o métricas),&amp;lt;br&amp;gt;&lt;br /&gt;
:con el objetivo de facilitar la supervisión, el análisis y la toma de decisiones de manera rápida y eficiente.&amp;lt;br&amp;gt;&lt;br /&gt;
:Un dashboard está compuesto por uno o varios componentes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Componente'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Elemento individual que forma parte de un dashboard y cuya función es mostrar la información requerida.&amp;lt;br&amp;gt;&lt;br /&gt;
:Los componentes pueden adoptar distintos formatos, entre los más habituales:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Tablas:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se presenta en formato tabular. Las cabeceras y la estructura de la tabla se definen durante la creación de su lógica.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Gráficos:'''&amp;lt;br&amp;gt; &lt;br /&gt;
:::Los datos se muestran de forma visual mediante distintos tipos de gráficos, como: barras, líneas, circulares, entre otros.&amp;lt;br&amp;gt;&lt;br /&gt;
:Según el modo en que actualizan la información, los tipos de componentes se clasifican en:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Dinámicos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se actualiza de forma periódica, de acuerdo con un temporizador asociado al componente.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Estáticos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se carga al iniciar el dashboard y no se vuelve a actualizar hasta que el panel de control se invoca nuevamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Descripción de la interfaz de Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La aplicación de VIVAit-Supervisor tiene dos página web:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Inicio de sesión en Vivait Supervisor|validación]], donde se piden las credenciales al usuario,&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Interfaz de trabajo de Vivait Supervisor|trabajo]], donde se realizan todas las acciones referentes a la funcionalidad suministrada.&amp;lt;br&amp;gt;&lt;br /&gt;
:En este manual se describe el perfil consulta de del usuario ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inicio de sesión en Vivait Supervisor  ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El acceso a la aplicación '''''VIVA'''it Supervisor'' se hace a través de un navegador con un enlace de la siguiente forma: &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: https://host/Vivait-Supervisor/&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
: donde &amp;quot;host&amp;quot; será el nombre o dirección IP del servidor en el que está instalada la aplicación '''''VIVA'''it Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo:&lt;br /&gt;
:::''https://172.25.128.92/Vivait-Supervisor/''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación aparece una ventana donde es necesario autentificarse mediante las credenciales correspondientes:&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Usuario''': sera un usuario creado en el sistema con los permisos de acceso a la aplicación ''Call Center'',&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Contraseña''': el password asociado a este usuario.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Tener acceso a la aplicación ''Call Center'' no impide que el usuario tenga también otras funcionalidades, como movilidad corporativa o tracker.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al utilizar el botón [[File:entrar_V5.png|200px]] se pueden dar distintas situaciones posibles, con resultados diferentes, según se hayan cumplimentados los campos ''Usuario'' y ''Contraseña''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Inicio de sesión sin credenciales|Inicio de sesión sin credenciales]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 2. [[#Inicio de sesión con credenciales válidas|Inicio de sesión con credenciales válidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 3. [[#Inicio de sesión con credenciales inválidas|Inicio de sesión con credenciales inválidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 4. [[#Inicio de sesión sin permisos|Inicio de sesión sin permisos]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin credenciales  ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si no se han rellenado los campos '''Usuario''' y '''Contraseña''' aparece la siguiente ventana informando de la situación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_sin_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales válidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales introducidas son correctas se abre la ventana que permite el uso de la aplicación ''Supervisor''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:accesos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales inválidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales no son válidas aparece un mensaje informativo:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_mal1_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario realizar un nuevo intento introduciendo un usuario válido y una contraseña correcta.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin permisos ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el usuario no tiene configurado el acceso a la aplicación ''Call Center'' aparece una ventana informativa.&lt;br /&gt;
[[File:sin_permisos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario informar al administrador del sistema '''''VIVA'''it Call'' para que asigne al usuario los permisos adecuados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interfaz de trabajo de Vivait Supervisor ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario ha iniciado sesión con éxito la ventana que se muestra se divide en varías áreas:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Área de usuario de Vivait Supervisor|Usuario logado]]&lt;br /&gt;
:: 2. [[#Área de Configuración de Vivait Supervisor|Acceso a configuración de dashboards]]&lt;br /&gt;
:: 3. [[#Área del Logo del portal de Vivait Supervisor|Logo del portal]]&lt;br /&gt;
:: 4. [[#Botón de acceso a filtro global de Vivait Supervisor|Botón de filtro global]]&lt;br /&gt;
:: 5. [[#Área de monitorización en Vivait Supervisor|Información de supervisión]]&lt;br /&gt;
:: 6. [[#Selección de Dashboard en Vivait Supervisor|Selección de dashboard]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:menús_general_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de usuario de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el usuario logado en el portal. Pulsando sobre este área se despliega un espacio que permite cerrar la sesión y visualizar la versión de la aplicación&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:user_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de Configuración de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En este área se encuentra el icono que permite al usuario acceder a la gestión de los dahsborads. El estado de este icono es:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono habilitado''': el usuario tiene nivel de administrador de ''Vivait Supervisor'' en su perfil.&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono desactivado:''' el usuario solo puede utilizar dashboard previamente creados.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el icono está habilitado se pueden crear, borrar y modificar dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:configuración_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área del Logo del portal de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el logotipo de la aplicación ''Vivait Supervisor'' así como el de '''''MDT'''el''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:logo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Botón de acceso a filtro global de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El botón de filtro global [[File:filtro_botón_supervisor_V5.1.png|40px]] permite mostrar u ocultar el área desde la que se configuran los filtros globales de consulta de la monitorización de un dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsarlo, se despliega el panel de filtros:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_despliegue_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este panel contiene los campos disponibles para filtrar la información mostrada. Su contenido depende del dashboard seleccionado, por lo que puede variar en cada caso.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La descripción detallada de los filtros globales disponibles se incluye en la sección correspondiente a cada [[#Selección de Dashboard en Vivait Supervisor |dashboard]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Indicador de filtro global activo'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cuando se aplica un filtro y el panel se vuelve a ocultar (pulsando nuevamente el botón de filtro), el icono cambia para indicar que existe un filtro global activo.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El icono se complementa con un circulo verde indicativo de que hay un filtro global activo [[File:filtro_activo_supervisor_V5.1.png|80px]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para consultar qué campos están siendo utilizados como filtro, es necesario volver a desplegar el panel pulsando de nuevo el botón de filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de monitorización en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de monitorización aparece vacía cuando el usuario inicia sesión en la aplicación.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario selecciona un dashboard, este espacio se utiliza para mostrar la información correspondiente, ya sea en forma de tablas, gráficos o ambos, según la configuración del dashboard elegido.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_ejemplo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Selección de Dashboard en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este espacio permite la selección del dashboard que se desplegara en el área de monitorización vista anteriormente.&amp;lt;br&amp;gt;&lt;br /&gt;
Para ello se pulsa sobre la ventana ''Seleccione...'' se despliega la lista de dashboard configurados previamente en ''Vivait Supervisor''. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:selección_dashboard_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La selección se puede realizar de varias formas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tecleando el nombre del dashboard en la ventana superior de la lista mostrada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seleccionando directamente el dashboard pulsando sobre él en la lista desplegada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Desplazándose el sentido ascendente o descendente por la lista, bien mediante la rueda del ratón o con las flechas arriba/abajo del teclado.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | La incorporación de nuevos dashboard a la lista se realiza desde el Dpto. de Desarrollo de '''''MDT'''el''. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los dashboard entregados de serie con el sistema son:&lt;br /&gt;
: • [[#Dashboard Acumulado grupos de Vivait Supervisor 2.0 | Acumulado grupos]]&lt;br /&gt;
: • [[#Dashboard Detalle de llamadas de Vivait Supervisor 2.0 | Detalle de llamadas]]&lt;br /&gt;
: • [[#Dashboard Detalle extensiones de Vivait Supervisor 2.0 | Detalle extensiones]]&lt;br /&gt;
: • [[#Dashboard Llamadas a grupos de Vivait Supervisor 2.0 | Llamadas a grupos]]&lt;br /&gt;
: • [[#Dashboard Resumen extensiones de Vivait Supervisor 2.0 | Resumen extensiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cada uno de estos dashboard tiene asociado un filtro global determinado.&amp;lt;br&amp;gt;&lt;br /&gt;
Al describir cada dashboard se documentan los campos de estos filtros globales por defecto.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los campos por los que se puede filtrar en un dashboard se pueden ampliar o reducir según necesidades del usuario final. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los componentes de un dashboard disponen de un filtro que permite aplicar acciones sobre los datos que se mostrarán en las tablas y/o gráficos correspondientes.&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los usuarios que inicien sesión en ''Vivait Supervisor'' pueden gestionar este filtro, aunque no tengan acceso a la configuración del dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
El filtro de cada componente se encuentra en la esquina superior izquierda y está representado por el siguiente icono:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar sobre el icono, se despliega la ventana correspondiente, donde se puede realizar la configuración necesaria para obtener los resultados deseados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_campos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En la entrega inicial este filtro es el mismo para todos los componentes que conforman los distintos dashboard. [[#Campos del filtro de componente |Consulta de los campos del filtro de componente]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Adventencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Si un dashboard incluye varios componentes, cada uno tiene su propia configuración de filtros.&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar mostrar datos inconsistentes o inconexos, es necesario sincronizar estos filtros entre todos los componentes.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Utilización del filtro de componente'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Las acciones que se pueden realizar sobre el filtro del componente son:&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Editar''', se utiliza el icono   [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]]    en el componente en el que se desee realizar la acción.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Salvar''', se utiliza el icono  [[File:filtro_botón_salvar_supervisor_V5.1.png|20px]]    situado en la ventana del filtro una vez configurados los campos adecuadamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:: cuando se guardan los cambios realizados en el filtro de componente se indica el resultado con la correspondiente ventana.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_actualizado_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Cerrar''', al volver a pulsar el icono [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]], con la ventana de configuración abierta, se cierra la misma.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Aplicar''', al abrir (editar) o cerrar la ventana del filtro de componente este se aplica, pudiendo modificarse los resultados de la monitorización. Al salvar el filtro este no se aplica.&amp;lt;br&amp;gt;&lt;br /&gt;
::También se aplica el filtro de componente al modificar algunos campos o mediante el icono lupa que se encuentra en el centro del filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_lupa_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro de componente ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para la correcta comprensión de los campos de este filtro se deben conocer dos conceptos:&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Periodo''', es el intervalo de tiempo estático que se considera para la obtención de los datos. &amp;lt;br&amp;gt;&lt;br /&gt;
::Queda definido por una fecha y hora inicial y final. Es obligatorio definir ambos campos.&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Intervalo''', es el periodo de tiempo dinámico, desde el momento actual hasta la cantidad (''Nº repeticiones'') de periodos de tiempo (''Intervalo'') en que se realizará la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
::Ejemplo: si ''Nº repeticiones = 8'', ''Intervalo = Hora'', las consultas devolverán los datos de las últimas 8 horas. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | El que se realice una consulta por periodo o por intervalo depende del campo ''Tiempo real''.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se documentan los campos que constituyen el filtro de componente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none;&amp;quot;&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.3cm;color:#ffffff;&amp;quot; | '''''Campo''''' &lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Explicación'''''&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Valores posibles'''''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Título:&lt;br /&gt;
| | Es el título identificativo que se mostrará en el componente.&lt;br /&gt;
| | Valor alfanumérico.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Periodo:&lt;br /&gt;
| | Dos campos que definen fecha y hora inicial y final del periodo en el que se realizar la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
Estos campos se pueden configurar directamente o utilizando el calendario asociado a cada uno de ellos.&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar en el icono de calendario se despliega una ventana donde se puede:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_periodo_supervisor_V5.1.png|400px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la fecha de inicio/fin de la consulta, seleccionando el día.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La parte superior de esta ventana permite las siguientes opciones:&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la hora de inicio/fin de la consulta, mediante el icono reloj.&amp;lt;br&amp;gt;&lt;br /&gt;
- Borrar el contenido del campo, mediante el icono papelera.&amp;lt;br&amp;gt;&lt;br /&gt;
- Cerrar la ventana del calendario, mediante el icono cruz.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
| | Si se incorpora el valor manualmente &amp;lt;br&amp;gt;&lt;br /&gt;
se debe seguir el formato '''DD/MM/YYYY HH:mm'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Intervalo&lt;br /&gt;
| | Es el período de tiempo que la aplicación consulta en la base de datos,&amp;lt;br&amp;gt;&lt;br /&gt;
contado desde el momento actual.&lt;br /&gt;
| |Valor a elegir de una lista.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_intervalo_supervisor_V5.1.png|600px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la presente versión los valores posibles son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Minuto,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 5 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 10 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 30 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Hora,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Día,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Mes,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Año.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Igualar tiempo&lt;br /&gt;
| | Cumplimenta el campo del intervalo de refresco del componente, &amp;lt;br&amp;gt;&lt;br /&gt;
con el valor configurado en el intervalo. Se vera más adelante.&amp;lt;br&amp;gt;&lt;br /&gt;
Si el campo se marca, esta desaparece al guardar los cambios del filtro.&lt;br /&gt;
| |Campo marcado: se actualiza el valor de refresco de la consulta,&amp;lt;br&amp;gt;&lt;br /&gt;
:en segundos, con el valor del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: no se actualiza el valor de refresco del componente&amp;lt;br&amp;gt;&lt;br /&gt;
:con el valor del intervalo. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Nº repeticiones:&lt;br /&gt;
| | Cantidad de veces que se aplica la unidad de tiempo definida en el campo ''Intervalo''.&lt;br /&gt;
| |Valor numérico. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Tiempo real&lt;br /&gt;
| | Indica si la consulta para la obtención de datos se realiza&amp;lt;br&amp;gt;&lt;br /&gt;
según el intervalo o según el periodo.&amp;lt;br&amp;gt;&lt;br /&gt;
La modificación de estado de este campo realiza una consulta a la BBDD.&lt;br /&gt;
| |Campo marcado: la consulta se realiza según los parámetros del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: la consulta se realiza según los parámetros del periodo. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente vs filtro global =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La combinación de un filtro global y filtros específicos por componente &amp;lt;br&amp;gt;&lt;br /&gt;
puede generar configuraciones inconsistentes y causar interpretaciones incorrectas de los datos.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar estas inconsistencias, es necesario tener en cuenta los siguientes puntos:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
: • Los filtros son excluyentes:&lt;br /&gt;
:: - Si se activa un filtro de componente automáticamente se desactiva un posible filtro de dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
:: - Si se activa un filtro global de dashboard este es prioritario sobre el filtro que tiene el componente.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard se aplica automáticamente el filtro individual de los componentes que lo conforman.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard nunca tiene activo un filtro global. Es necesario activarlo manualmente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; |Siempre se tiene que tener claro que filtro es el que se está aplicando a la consulta.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Acumulado grupos de Vivait Supervisor 2.0  =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Icono en construccion.png|600px|miniaturadeimagen|center|marco|En construcción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle de llamadas de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle extensiones de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Llamadas a grupos de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard LLamadas a grupos se depliega la tabla de detalle que se muestra a continuación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_llamada_grupos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en esta tabla se pueden consultar en la sección [[#Campos del dashboard de Llamada a grupos en Vivait Supervisor |Campos del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a esta tabla se pueden consultar en la sección [[#Filtros del dashboard de Llamada a grupos en Vivait Supervisor |Filtros del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de Llamada a grupos en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Filtros del dashboard de Llamada a grupos en Vivait Supervisor======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard ''Resumen extensiones'' de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard ''Resumen extensiones'' se muestran dos tablas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Resumen''' presenta el número de llamadas asociadas a cada extensión que haya registrado al menos una llamada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Detalle''' muestra la información detallada de cada una de esas llamadas.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los nombres de las tablas se pueden cambiar por el usuario, independientemente de su perfil de acceso.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en estas tablas se pueden consultar en la sección [[#Campos del dashboard de Resumen extensiones en Vivait Supervisor |Campos del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de filtros de este dashboard presenta el siguiente aspecto:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtros_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a estas tablas y los botones asociados se pueden consultar en la sección [[#Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor|Campos del filtro del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de ''Resumen extensiones'' en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16041</id>
		<title>Manual de Usuario de Vivait Supervisor 2.0</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_Usuario_de_Vivait_Supervisor_2.0&amp;diff=16041"/>
		<updated>2026-02-20T09:36:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Producto:  '''!! '''''VIVA'''''it Call&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&lt;br /&gt;
Versiones anteriores de [[VIVAit_Supervisor_versiones VIVAit Supervisor]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Introducción a Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;big&amp;gt;&lt;br /&gt;
Con la versión 5.1 de la plataforma '''''VIVA'''''it Call se ha lanzado la aplicación: ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los puntos claves de '''Vivait Supervisor''' son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seguimiento de las llamadas generadas en el sistema '''''VIVA'''''it Call.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Visualización de resultados mediante gráficos, tablas y otros formatos.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Exportación de datos para su posterior análisis.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0| Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Definiciones en Vivait Supervisor 2.0 ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se definen los principales conceptos empleados en el supervisor:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Dashboard'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Panel de control que presenta de forma visual y resumida la información clave (datos, indicadores o métricas),&amp;lt;br&amp;gt;&lt;br /&gt;
:con el objetivo de facilitar la supervisión, el análisis y la toma de decisiones de manera rápida y eficiente.&amp;lt;br&amp;gt;&lt;br /&gt;
:Un dashboard está compuesto por uno o varios componentes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Componente'''&amp;lt;br&amp;gt;&lt;br /&gt;
:Elemento individual que forma parte de un dashboard y cuya función es mostrar la información requerida.&amp;lt;br&amp;gt;&lt;br /&gt;
:Los componentes pueden adoptar distintos formatos, entre los más habituales:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Tablas:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se presenta en formato tabular. Las cabeceras y la estructura de la tabla se definen durante la creación de su lógica.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Gráficos:'''&amp;lt;br&amp;gt; &lt;br /&gt;
:::Los datos se muestran de forma visual mediante distintos tipos de gráficos, como: barras, líneas, circulares, entre otros.&amp;lt;br&amp;gt;&lt;br /&gt;
:Según el modo en que actualizan la información, los tipos de componentes se clasifican en:&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Dinámicos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se actualiza de forma periódica, de acuerdo con un temporizador asociado al componente.&amp;lt;br&amp;gt;&lt;br /&gt;
::'''• Estáticos:'''&amp;lt;br&amp;gt;&lt;br /&gt;
:::La información se carga al iniciar el dashboard y no se vuelve a actualizar hasta que el panel de control se invoca nuevamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Introducción a Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/Manual_de_Usuario_de_Vivait_Supervisor_2.0 Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Descripción de la interfaz de Vivait Supervisor 2.0 ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La aplicación de VIVAit-Supervisor tiene dos página web:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Inicio de sesión en Vivait Supervisor|validación]], donde se piden las credenciales al usuario,&amp;lt;br&amp;gt;&lt;br /&gt;
- La página de [[#Interfaz de trabajo de Vivait Supervisor|trabajo]], donde se realizan todas las acciones referentes a la funcionalidad suministrada.&amp;lt;br&amp;gt;&lt;br /&gt;
:En este manual se describe el perfil consulta de del usuario ''Vivait Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Inicio de sesión en Vivait Supervisor  ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El acceso a la aplicación '''''VIVA'''it Supervisor'' se hace a través de un navegador con un enlace de la siguiente forma: &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: https://host/Vivait-Supervisor/&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
: donde &amp;quot;host&amp;quot; será el nombre o dirección IP del servidor en el que está instalada la aplicación '''''VIVA'''it Supervisor''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ejemplo:&lt;br /&gt;
:::''https://172.25.128.92/Vivait-Supervisor/''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación aparece una ventana donde es necesario autentificarse mediante las credenciales correspondientes:&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Usuario''': sera un usuario creado en el sistema con los permisos de acceso a la aplicación ''Call Center'',&amp;lt;br&amp;gt;&lt;br /&gt;
: - '''Contraseña''': el password asociado a este usuario.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Tener acceso a la aplicación ''Call Center'' no impide que el usuario tenga también otras funcionalidades, como movilidad corporativa o tracker.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al utilizar el botón [[File:entrar_V5.png|200px]] se pueden dar distintas situaciones posibles, con resultados diferentes, según se hayan cumplimentados los campos ''Usuario'' y ''Contraseña''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Inicio de sesión sin credenciales|Inicio de sesión sin credenciales]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 2. [[#Inicio de sesión con credenciales válidas|Inicio de sesión con credenciales válidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 3. [[#Inicio de sesión con credenciales inválidas|Inicio de sesión con credenciales inválidas]]&amp;lt;br&amp;gt;&lt;br /&gt;
:: 4. [[#Inicio de sesión sin permisos|Inicio de sesión sin permisos]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin credenciales  ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si no se han rellenado los campos '''Usuario''' y '''Contraseña''' aparece la siguiente ventana informando de la situación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_sin_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales válidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales introducidas son correctas se abre la ventana que permite el uso de la aplicación ''Supervisor''.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:accesos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión con credenciales inválidas ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si las credenciales no son válidas aparece un mensaje informativo:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:login_mal1_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario realizar un nuevo intento introduciendo un usuario válido y una contraseña correcta.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inicio de sesión sin permisos ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el usuario no tiene configurado el acceso a la aplicación ''Call Center'' aparece una ventana informativa.&lt;br /&gt;
[[File:sin_permisos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
Es necesario informar al administrador del sistema '''''VIVA'''it Call'' para que asigne al usuario los permisos adecuados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interfaz de trabajo de Vivait Supervisor ===&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario ha iniciado sesión con éxito la ventana que se muestra se divide en varías áreas:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:: 1. [[#Área de usuario de Vivait Supervisor|Usuario logado]]&lt;br /&gt;
:: 2. [[#Área de Configuración de Vivait Supervisor|Acceso a configuración de dashboards]]&lt;br /&gt;
:: 3. [[#Área del Logo del portal de Vivait Supervisor|Logo del portal]]&lt;br /&gt;
:: 4. [[#Botón de acceso a filtro global de Vivait Supervisor|Botón de filtro global]]&lt;br /&gt;
:: 5. [[#Área de monitorización en Vivait Supervisor|Información de supervisión]]&lt;br /&gt;
:: 6. [[#Selección de Dashboard en Vivait Supervisor|Selección de dashboard]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:menús_general_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Descripción de la interfaz de Vivait Supervisor 2.0 | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de usuario de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el usuario logado en el portal. Pulsando sobre este área se despliega un espacio que permite cerrar la sesión y visualizar la versión de la aplicación&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:user_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de Configuración de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En este área se encuentra el icono que permite al usuario acceder a la gestión de los dahsborads. El estado de este icono es:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono habilitado''': el usuario tiene nivel de administrador de ''Vivait Supervisor'' en su perfil.&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Icono desactivado:''' el usuario solo puede utilizar dashboard previamente creados.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Si el icono está habilitado se pueden crear, borrar y modificar dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:configuración_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área del Logo del portal de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Muestra el logotipo de la aplicación ''Vivait Supervisor'' así como el de '''''MDT'''el''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:logo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Botón de acceso a filtro global de Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El botón de filtro global [[File:filtro_botón_supervisor_V5.1.png|40px]] permite mostrar u ocultar el área desde la que se configuran los filtros globales de consulta de la monitorización de un dashboard.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsarlo, se despliega el panel de filtros:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_despliegue_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este panel contiene los campos disponibles para filtrar la información mostrada. Su contenido depende del dashboard seleccionado, por lo que puede variar en cada caso.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La descripción detallada de los filtros globales disponibles se incluye en la sección correspondiente a cada [[#Selección de Dashboard en Vivait Supervisor |dashboard]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Indicador de filtro global activo'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cuando se aplica un filtro y el panel se vuelve a ocultar (pulsando nuevamente el botón de filtro), el icono cambia para indicar que existe un filtro global activo.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El icono se complementa con un circulo verde indicativo de que hay un filtro global activo [[File:filtro_activo_supervisor_V5.1.png|80px]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para consultar qué campos están siendo utilizados como filtro, es necesario volver a desplegar el panel pulsando de nuevo el botón de filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Área de monitorización en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de monitorización aparece vacía cuando el usuario inicia sesión en la aplicación.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Una vez que el usuario selecciona un dashboard, este espacio se utiliza para mostrar la información correspondiente, ya sea en forma de tablas, gráficos o ambos, según la configuración del dashboard elegido.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monitorización_ejemplo_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Selección de Dashboard en Vivait Supervisor ====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Este espacio permite la selección del dashboard que se desplegara en el área de monitorización vista anteriormente.&amp;lt;br&amp;gt;&lt;br /&gt;
Para ello se pulsa sobre la ventana ''Seleccione...'' se despliega la lista de dashboard configurados previamente en ''Vivait Supervisor''. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:selección_dashboard_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La selección se puede realizar de varias formas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tecleando el nombre del dashboard en la ventana superior de la lista mostrada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Seleccionando directamente el dashboard pulsando sobre él en la lista desplegada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Desplazándose el sentido ascendente o descendente por la lista, bien mediante la rueda del ratón o con las flechas arriba/abajo del teclado.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | La incorporación de nuevos dashboard a la lista se realiza desde el Dpto. de Desarrollo de '''''MDT'''el''. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los dashboard entregados de serie con el sistema son:&lt;br /&gt;
: • [[#Dashboard Acumulado grupos de Vivait Supervisor 2.0 | Acumulado grupos]]&lt;br /&gt;
: • [[#Dashboard Detalle de llamadas de Vivait Supervisor 2.0 | Detalle de llamadas]]&lt;br /&gt;
: • [[#Dashboard Detalle extensiones de Vivait Supervisor 2.0 | Detalle extensiones]]&lt;br /&gt;
: • [[#Dashboard Llamadas a grupos de Vivait Supervisor 2.0 | Llamadas a grupos]]&lt;br /&gt;
: • [[#Dashboard Resumen extensiones de Vivait Supervisor 2.0 | Resumen extensiones]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Cada uno de estos dashboard tiene asociado un filtro global determinado.&amp;lt;br&amp;gt;&lt;br /&gt;
Al describir cada dashboard se documentan los campos de estos filtros globales por defecto.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los campos por los que se puede filtrar en un dashboard se pueden ampliar o reducir según necesidades del usuario final. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los componentes de un dashboard disponen de un filtro que permite aplicar acciones sobre los datos que se mostrarán en las tablas y/o gráficos correspondientes.&amp;lt;br&amp;gt;&lt;br /&gt;
Todos los usuarios que inicien sesión en ''Vivait Supervisor'' pueden gestionar este filtro, aunque no tengan acceso a la configuración del dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
El filtro de cada componente se encuentra en la esquina superior izquierda y está representado por el siguiente icono:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar sobre el icono, se despliega la ventana correspondiente, donde se puede realizar la configuración necesaria para obtener los resultados deseados.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_campos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
En la entrega inicial este filtro es el mismo para todos los componentes que conforman los distintos dashboard. [[#Campos del filtro de componente |Consulta de los campos del filtro de componente]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Adventencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Si un dashboard incluye varios componentes, cada uno tiene su propia configuración de filtros.&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar mostrar datos inconsistentes o inconexos, es necesario sincronizar estos filtros entre todos los componentes.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Utilización del filtro de componente'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Las acciones que se pueden realizar sobre el filtro del componente son:&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Editar''', se utiliza el icono   [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]]    en el componente en el que se desee realizar la acción.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Salvar''', se utiliza el icono  [[File:filtro_botón_salvar_supervisor_V5.1.png|20px]]    situado en la ventana del filtro una vez configurados los campos adecuadamente.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:: cuando se guardan los cambios realizados en el filtro de componente se indica el resultado con la correspondiente ventana.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_actualizado_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Cerrar''', al volver a pulsar el icono [[File:filtro_componente_supervisor_V5.1.png|100pxthumb]], con la ventana de configuración abierta, se cierra la misma.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:• '''Aplicar''', al abrir (editar) o cerrar la ventana del filtro de componente este se aplica, pudiendo modificarse los resultados de la monitorización. Al salvar el filtro este no se aplica.&amp;lt;br&amp;gt;&lt;br /&gt;
::También se aplica el filtro de componente al modificar algunos campos o mediante el icono lupa que se encuentra en el centro del filtro.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_lupa_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro de componente ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para la correcta comprensión de los campos de este filtro se deben conocer dos conceptos:&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Periodo''', es el intervalo de tiempo estático que se considera para la obtención de los datos. &amp;lt;br&amp;gt;&lt;br /&gt;
::Queda definido por una fecha y hora inicial y final. Es obligatorio definir ambos campos.&amp;lt;br&amp;gt;&lt;br /&gt;
:- '''Intervalo''', es el periodo de tiempo dinámico, desde el momento actual hasta la cantidad (''Nº repeticiones'') de periodos de tiempo (''Intervalo'') en que se realizará la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
::Ejemplo: si ''Nº repeticiones = 8'', ''Intervalo = Hora'', las consultas devolverán los datos de las últimas 8 horas. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Advertencia'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | El que se realice una consulta por periodo o por intervalo depende del campo ''Tiempo real''.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se documentan los campos que constituyen el filtro de componente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; border: none;&amp;quot;&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.3cm;color:#ffffff;&amp;quot; | '''''Campo''''' &lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Explicación'''''&lt;br /&gt;
! align=center style=&amp;quot;background-color:#0099ff;border:0.05pt solid #000000;padding:0cm;color:#ffffff;&amp;quot; | '''''Valores posibles'''''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Título:&lt;br /&gt;
| | Es el título identificativo que se mostrará en el componente.&lt;br /&gt;
| | Valor alfanumérico.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Periodo:&lt;br /&gt;
| | Dos campos que definen fecha y hora inicial y final del periodo en el que se realizar la consulta.&amp;lt;br&amp;gt;&lt;br /&gt;
Estos campos se pueden configurar directamente o utilizando el calendario asociado a cada uno de ellos.&amp;lt;br&amp;gt;&lt;br /&gt;
Al pulsar en el icono de calendario se despliega una ventana donde se puede:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_periodo_supervisor_V5.1.png|400px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la fecha de inicio/fin de la consulta, seleccionando el día.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La parte superior de esta ventana permite las siguientes opciones:&amp;lt;br&amp;gt;&lt;br /&gt;
- Seleccionar la hora de inicio/fin de la consulta, mediante el icono reloj.&amp;lt;br&amp;gt;&lt;br /&gt;
- Borrar el contenido del campo, mediante el icono papelera.&amp;lt;br&amp;gt;&lt;br /&gt;
- Cerrar la ventana del calendario, mediante el icono cruz.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
| | Si se incorpora el valor manualmente &amp;lt;br&amp;gt;&lt;br /&gt;
se debe seguir el formato '''DD/MM/YYYY HH:mm'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Intervalo&lt;br /&gt;
| | Es el período de tiempo que la aplicación consulta en la base de datos,&amp;lt;br&amp;gt;&lt;br /&gt;
contado desde el momento actual.&lt;br /&gt;
| |Valor a elegir de una lista.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtro_componente_intervalo_supervisor_V5.1.png|600px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la presente versión los valores posibles son:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Minuto,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 5 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 10 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • 30 minutos,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Hora,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Día,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Mes,&amp;lt;br&amp;gt;&lt;br /&gt;
: • Año.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Igualar tiempo&lt;br /&gt;
| | Cumplimenta el campo del intervalo de refresco del componente, &amp;lt;br&amp;gt;&lt;br /&gt;
con el valor configurado en el intervalo. Se vera más adelante.&amp;lt;br&amp;gt;&lt;br /&gt;
Si el campo se marca, esta desaparece al guardar los cambios del filtro.&lt;br /&gt;
| |Campo marcado: se actualiza el valor de refresco de la consulta,&amp;lt;br&amp;gt;&lt;br /&gt;
:en segundos, con el valor del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: no se actualiza el valor de refresco del componente&amp;lt;br&amp;gt;&lt;br /&gt;
:con el valor del intervalo. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Nº repeticiones:&lt;br /&gt;
| | Cantidad de veces que se aplica la unidad de tiempo definida en el campo ''Intervalo''.&lt;br /&gt;
| |Valor numérico. &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; font-weight: bold;padding:0.3cm;&amp;quot; |Tiempo real&lt;br /&gt;
| | Indica si la consulta para la obtención de datos se realiza&amp;lt;br&amp;gt;&lt;br /&gt;
según el intervalo o según el periodo.&amp;lt;br&amp;gt;&lt;br /&gt;
La modificación de estado de este campo realiza una consulta a la BBDD.&lt;br /&gt;
| |Campo marcado: la consulta se realiza según los parámetros del intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Campo desmarcado: la consulta se realiza según los parámetros del periodo. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Filtro de componente vs filtro global =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La combinación de un filtro global y filtros específicos por componente &amp;lt;br&amp;gt;&lt;br /&gt;
puede generar configuraciones inconsistentes y causar interpretaciones incorrectas de los datos.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Para evitar estas inconsistencias, es necesario tener en cuenta los siguientes puntos:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
: • Los filtros son excluyentes:&lt;br /&gt;
:: - Si se activa un filtro de componente automáticamente se desactiva un posible filtro de dashboard.&amp;lt;br&amp;gt;&lt;br /&gt;
:: - Si se activa un filtro global de dashboard este es prioritario sobre el filtro que tiene el componente.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard se aplica automáticamente el filtro individual de los componentes que lo conforman.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Cuando se inicia un dashboard nunca tiene activo un filtro global. Es necesario activarlo manualmente.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; |Siempre se tiene que tener claro que filtro es el que se está aplicando a la consulta.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Interfaz de trabajo de Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Acumulado grupos de Vivait Supervisor 2.0  =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:Icono en construccion.png|600px|miniaturadeimagen|center|marco|En construcción]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle de llamadas de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Detalle extensiones de Vivait Supervisor 2.0 =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard Llamadas a grupos de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard LLamadas a grupos se depliega la tabla de detalle que se muestra a continuación:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_llamada_grupos_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en esta tabla se pueden consultar en la sección [[#Campos del dashboard de Llamada a grupos en Vivait Supervisor |Campos del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a esta tabla se pueden consultar en la sección [[#Filtros del dashboard de Llamada a grupos en Vivait Supervisor |Filtros del dashboard de ''Llamada a grupos'']]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de Llamada a grupos en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Filtros del dashboard de Llamada a grupos en Vivait Supervisor======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Dashboard ''Resumen extensiones'' de Vivait Supervisor 2.0 =====&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Al seleccionar el dashboard ''Resumen extensiones'' se muestran dos tablas:&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Resumen''' presenta el número de llamadas asociadas a cada extensión que haya registrado al menos una llamada.&amp;lt;br&amp;gt;&lt;br /&gt;
: • Tabla '''Detalle''' muestra la información detallada de cada una de esas llamadas.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: 0 auto; padding: 0.3cm; &amp;quot;&lt;br /&gt;
! style = &amp;quot;background-color:#0099ff; color:#ffffff&amp;quot; | &amp;lt;big&amp;gt;&amp;lt;center&amp;gt;'''''Nota'''''&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;margin: 0 auto; padding: 0.3cm;&amp;quot; | Los nombres de las tablas se pueden cambiar por el usuario, independientemente de su perfil de acceso.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los campos que se muestran en estas tablas se pueden consultar en la sección [[#Campos del dashboard de Resumen extensiones en Vivait Supervisor |Campos del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
El área de filtros de este dashboard presenta el siguiente aspecto:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:filtros_resumen_extensiones_supervisor_V5.1.png|1500px|center|thumb]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Los filtros de visualización que se pueden aplicar a estas tablas y los botones asociados se pueden consultar en la sección [[#Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor|Campos del filtro del dashboard ''Resumen extensiones'']]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del dashboard de ''Resumen extensiones'' en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Campos del filtro del dashboard de Resumen extensiones en Vivait Supervisor ======&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[#Selección de Dashboard en Vivait Supervisor | Volver arriba]] / [https://vivait-wiki.mdnova.local/wiki/vivait/index.php/VIVAit_Supervisor Volver al índice]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=P%C3%A1gina_principal&amp;diff=16040</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=P%C3%A1gina_principal&amp;diff=16040"/>
		<updated>2026-02-20T09:35:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Producto:  '''!! VIVAit Call&lt;br /&gt;
VIVAit Suite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VIVAit Fax&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Esta wiki contiene la documentación relativa a toda la plataforma VIVait, compuesta actualmente de tres productos diferenciados pero integrados:&lt;br /&gt;
* ''VIVA''it Call&lt;br /&gt;
* ''VIVA''it Suite&lt;br /&gt;
* ''VIVA''it Fax&lt;br /&gt;
&lt;br /&gt;
'''Nota 03/11/2015''': ''VIVA''it Fax actualmente no comparte arquitectura con los otros dos productos (''VIVA''it Call y ''VIVA''it Suite), pero se considera a efectos dentro de la plataforma. Toda información que en esta wiki se refiera a la plataforma excluirá el producto ''VIVA''it Fax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Existirán elementos de documentación que afectarán a cualquier producto (elementos comunes a la plataforma) y elementos de la documentación que afectarán a un solo producto; se ha organizado la documentación de manera que siempre sea distinguible&lt;br /&gt;
&lt;br /&gt;
== Documentación de 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 VIVAit ==&lt;br /&gt;
* [[Arquitectura VIVAit|Arquitectura]]&lt;br /&gt;
* [[Release Notes|Release Notes]]&lt;br /&gt;
* [[Funcionalidades|Funcionalidades]]&lt;br /&gt;
* [[Portal de administración VIVAit|Portal de administración]]&lt;br /&gt;
* [[Preguntas frecuentes administración | FAQ's]]&lt;br /&gt;
&lt;br /&gt;
== Servicio técnico ==&lt;br /&gt;
* [[Manuales_de_instalación|Instalación]]&lt;br /&gt;
* [[Actualización|Documentación de actualización VIVAit 3.1]]&lt;br /&gt;
* [[Manuales de operación plataforma VIVAit|Manuales de operación]]&lt;br /&gt;
* [[Manual de operación plataforma VIVAit|Manual de operación]]&lt;br /&gt;
* [[Manual de operación plataforma VIVAit 5.0|Manual de operación plataforma VIVAit 5.0]]&lt;br /&gt;
* [[Homologación de Terminales | Terminales]]&lt;br /&gt;
* [[Hylafax + IAXmodem en VIVAit Call| Solución de fax para VIVAit Call]]&lt;br /&gt;
* [[Howto's| Howto's]]&lt;br /&gt;
* [[Píldoras formativas| Formación]]&lt;br /&gt;
* [[Incidencias| Incidencias]]&lt;br /&gt;
* [[Base de datos| Base de datos]]&lt;br /&gt;
* [[Pago asistido| Pago asistido]]&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;
&amp;lt;!-- == VIVAit Fax ==&lt;br /&gt;
* [[Documentación de usuario VIVAit Fax| Usuario]]&lt;br /&gt;
*[[Arquitctura VIVAit Fax| Arquitectura]]&lt;br /&gt;
*[[Instalación VIVAit Fax| Instalación]]&lt;br /&gt;
*[[Documentacion técnica| Servicio Técnico]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:tecnico]]&lt;br /&gt;
[[Category:usuario]]&lt;br /&gt;
[[Category:administrador]]&lt;br /&gt;
[[Category:desarrollador]]&lt;br /&gt;
[[Category:VIVAit Call]]&lt;br /&gt;
[[Category:VIVAit Suite]]&lt;br /&gt;
[[Category:VIVAit Fax]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15360</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=15360"/>
		<updated>2026-02-05T12:33:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Descripción general 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 el orquestadores&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|1024px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&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;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&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/vFlow 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;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15359</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=15359"/>
		<updated>2026-02-05T12:28:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* logs útiles */&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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&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;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&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/vFlow 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;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15358</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=15358"/>
		<updated>2026-02-05T12:28:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* logs útiles */&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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&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;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
::En nodo vFlowProxy&lt;br /&gt;
::para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
::en nodo Omnisuite&lt;br /&gt;
::para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&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/vFlow 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;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15357</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=15357"/>
		<updated>2026-02-05T12:28:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&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;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15356</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=15356"/>
		<updated>2026-02-05T12:27:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
::&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&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;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15355</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=15355"/>
		<updated>2026-02-05T12:27:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&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;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15354</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=15354"/>
		<updated>2026-02-05T12:27:10Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
:&amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
(la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15353</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=15353"/>
		<updated>2026-02-05T12:26:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
    &amp;lt;small&amp;gt;salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
(la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15352</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=15352"/>
		<updated>2026-02-05T12:26:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
(salida del comando almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot; para su posterior uso en cally square)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
(la voz se ha transcrito con OpenAI, por eso se usa como parámetro {OPENAI_WHISPER_TRANSCRIPT})&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15351</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=15351"/>
		<updated>2026-02-05T12:25:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voice.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
(almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
(la voz se ha transcrito con OpenAI)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15350</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=15350"/>
		<updated>2026-02-05T12:25:14Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
(almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
(la voz se ha transcrito con OpenAI)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15349</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=15349"/>
		<updated>2026-02-05T12:24:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
(almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
(la voz se ha transcrito con OpenAI)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15347</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=15347"/>
		<updated>2026-02-05T12:23:54Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
(almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
(la voz se ha transcrito con OpenAI)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15345</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=15345"/>
		<updated>2026-02-05T12:23:19Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
(almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
        (la voz se ha transcrito con OpenAI)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15342</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=15342"/>
		<updated>2026-02-05T12:22:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session' &amp;lt;/pre&amp;gt;&lt;br /&gt;
        (almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
        (la voz se ha transcrito con OpenAI)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15340</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=15340"/>
		<updated>2026-02-05T12:21:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session'&lt;br /&gt;
        (almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
        (la voz se ha transcrito con OpenAI)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15339</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=15339"/>
		<updated>2026-02-05T12:21:10Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Ejemplos para 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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{message.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session'&lt;br /&gt;
        (almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
        (la voz se ha transcrito con OpenAI)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15338</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=15338"/>
		<updated>2026-02-05T12:20:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &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 el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Ejemplos para omnisuite ==&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de chat'''&lt;br /&gt;
&lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_chat.ini&amp;quot; &amp;quot;omnisuiteText&amp;quot; &amp;quot;{{interaction.id}}&amp;quot; &amp;quot;{{account.id}}&amp;quot; &amp;quot;{{interaction.createdAt}}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;{{m&lt;br /&gt;
essage.body}}&amp;quot; | jq -r '.response'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de voz'''&lt;br /&gt;
&lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_voICE.ini&amp;quot; &amp;quot;sessionOpen&amp;quot; &amp;quot;{UNIQUEID}&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; |  jq -r '.session'&lt;br /&gt;
        (almacenado en variable &amp;quot;vflow_sessionopen_response&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;textRequest&amp;quot; &amp;quot;{vflow_sessionopen_response}&amp;quot; &amp;quot;{OPENAI_WHISPER_TRANSCRIPT}&amp;quot; | jq -r '.response'&lt;br /&gt;
        (la voz se ha transcrito con OpenAI)&lt;br /&gt;
 &lt;br /&gt;
   /usr/local/sbin/vFlowOmnisuite &amp;quot;/etc/MDtel/vFlow/service_desa_voz.ini&amp;quot; &amp;quot;sessionClose&amp;quot; &amp;quot;{{vflow_sessionopen_response}}&amp;quot; &amp;quot;normal&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== logs útiles ==&lt;br /&gt;
 tail -f /var/log/vFlowProxy/vFlowProxy.log&lt;br /&gt;
                En nodo vFlowProxy&lt;br /&gt;
                para cualquier canal&lt;br /&gt;
&lt;br /&gt;
 asterisk -rv | grep callsquare_name&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/agi-combined.yyyy-mm-dd.log&lt;br /&gt;
                en nodo Omnisuite&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
 tail -f /var/log/xcally/routing-combined.yyyy-mm-dd.log&lt;br /&gt;
                para canal voz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15336</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=15336"/>
		<updated>2026-02-05T12:16:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Enviar texto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
vFlow es un módulo de conexión a sistemas de inteligencia artifical para sistemas de comunicaciones unificadas, ya sean sistemas corporativos o contact center&lt;br /&gt;
Gracias a vFlow, las plataformas de UC dispondrán de una solución para comunicarse con sistemas IA utilizando un mismo mecanismo independientemente de la solución de inteligencia artificial que se utilice&lt;br /&gt;
&lt;br /&gt;
Para proporcionar el servicio de manera completa, vFlow (en concreto el orquestador) se conectará a sistemas de inteligencia artificial (LLM) que permitirán desarrollar los agentes definidos en los orquestadores&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15335</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=15335"/>
		<updated>2026-02-05T12:15:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Cerrar sesión */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
vFlow es un módulo de conexión a sistemas de inteligencia artifical para sistemas de comunicaciones unificadas, ya sean sistemas corporativos o contact center&lt;br /&gt;
Gracias a vFlow, las plataformas de UC dispondrán de una solución para comunicarse con sistemas IA utilizando un mismo mecanismo independientemente de la solución de inteligencia artificial que se utilice&lt;br /&gt;
&lt;br /&gt;
Para proporcionar el servicio de manera completa, vFlow (en concreto el orquestador) se conectará a sistemas de inteligencia artificial (LLM) que permitirán desarrollar los agentes definidos en los orquestadores&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15334</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=15334"/>
		<updated>2026-02-05T12:15:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Enviar texto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
vFlow es un módulo de conexión a sistemas de inteligencia artifical para sistemas de comunicaciones unificadas, ya sean sistemas corporativos o contact center&lt;br /&gt;
Gracias a vFlow, las plataformas de UC dispondrán de una solución para comunicarse con sistemas IA utilizando un mismo mecanismo independientemente de la solución de inteligencia artificial que se utilice&lt;br /&gt;
&lt;br /&gt;
Para proporcionar el servicio de manera completa, vFlow (en concreto el orquestador) se conectará a sistemas de inteligencia artificial (LLM) que permitirán desarrollar los agentes definidos en los orquestadores&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;
 {&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;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros&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;
 {&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15333</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=15333"/>
		<updated>2026-02-05T12:14:50Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Para canales de voz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
vFlow es un módulo de conexión a sistemas de inteligencia artifical para sistemas de comunicaciones unificadas, ya sean sistemas corporativos o contact center&lt;br /&gt;
Gracias a vFlow, las plataformas de UC dispondrán de una solución para comunicarse con sistemas IA utilizando un mismo mecanismo independientemente de la solución de inteligencia artificial que se utilice&lt;br /&gt;
&lt;br /&gt;
Para proporcionar el servicio de manera completa, vFlow (en concreto el orquestador) se conectará a sistemas de inteligencia artificial (LLM) que permitirán desarrollar los agentes definidos en los orquestadores&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
 {&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;
&lt;br /&gt;
&lt;br /&gt;
===== Cerrar sesión=====&lt;br /&gt;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Parámetros&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;
 {&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Para probar desde vFlow ==&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15332</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=15332"/>
		<updated>2026-02-05T12:11:33Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* 'Abrir sesión */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
vFlow es un módulo de conexión a sistemas de inteligencia artifical para sistemas de comunicaciones unificadas, ya sean sistemas corporativos o contact center&lt;br /&gt;
Gracias a vFlow, las plataformas de UC dispondrán de una solución para comunicarse con sistemas IA utilizando un mismo mecanismo independientemente de la solución de inteligencia artificial que se utilice&lt;br /&gt;
&lt;br /&gt;
Para proporcionar el servicio de manera completa, vFlow (en concreto el orquestador) se conectará a sistemas de inteligencia artificial (LLM) que permitirán desarrollar los agentes definidos en los orquestadores&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
	/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;config_arch&amp;gt;			--&amp;gt; OBLIGATORIO	--&amp;gt; &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
		&amp;lt;vflow_session_uuid&amp;gt;	--&amp;gt; OBLIGATORIO	--&amp;gt; Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
		&amp;lt;question&amp;gt;				--&amp;gt; OBLIGATORIO	--&amp;gt;	Texto a enviar al orquestado (p. ej Flowise) (normal, abandoned, other)&lt;br /&gt;
&lt;br /&gt;
		Ejemplo de respuesta JSON&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;
&lt;br /&gt;
&lt;br /&gt;
	/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;config_arch&amp;gt;			--&amp;gt; OBLIGATORIO	--&amp;gt; &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
		&amp;lt;vflow_session_uuid&amp;gt;	--&amp;gt; OBLIGATORIO	--&amp;gt; Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
		&amp;lt;vflow_cause&amp;gt;			--&amp;gt; OPCIONAL	--&amp;gt; (normal, abandoned, expired, other)&lt;br /&gt;
&lt;br /&gt;
		Ejemplo de respuesta JSON&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARA PROBAR DESDE vFlow&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>https://vivait-wiki.mdnova.local/wiki/vivait/index.php?title=Manual_de_operaci%C3%B3n_de_vFlow&amp;diff=15331</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=15331"/>
		<updated>2026-02-05T12:11:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Para canales de voz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Descripción general vFlow ==&lt;br /&gt;
&lt;br /&gt;
vFlow es un módulo de conexión a sistemas de inteligencia artifical para sistemas de comunicaciones unificadas, ya sean sistemas corporativos o contact center&lt;br /&gt;
Gracias a vFlow, las plataformas de UC dispondrán de una solución para comunicarse con sistemas IA utilizando un mismo mecanismo independientemente de la solución de inteligencia artificial que se utilice&lt;br /&gt;
&lt;br /&gt;
Para proporcionar el servicio de manera completa, vFlow (en concreto el orquestador) se conectará a sistemas de inteligencia artificial (LLM) que permitirán desarrollar los agentes definidos en los orquestadores&lt;br /&gt;
&lt;br /&gt;
'''Conceptos:'''&lt;br /&gt;
* Plataforma&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma de comunicaciones unificadas; por ejemplo Omnisuite o VIVAit Call&lt;br /&gt;
* Orquestador&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Plataforma agéntica de IA (por ejemplo Flowise)&lt;br /&gt;
* vFlowProxy&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Módulo VIVAit que conecta multiples plataformas con múltiples orquestadores&lt;br /&gt;
* LLM&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Modelo de lenguaje natural que usará un orquestadores&lt;br /&gt;
* Agente&amp;lt;span style=&amp;quot;margin-left: 3em;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;--&amp;gt; Cada uno de los flujos creados en el orquestadores&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|800px|none|Arquitecura de vFlow]]&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
== Integración de vFlow desde Omnisuite ==&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;
&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite (OPCIÓN PREFERENTE)&lt;br /&gt;
    /usr/local/sbin/vFlowOmnisuite.py (LEGACY)&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 /etc/MDtel/vFlow/platform.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE PLATAFORMA&lt;br /&gt;
    [uuids]&lt;br /&gt;
    platform=1d111530-e22d-11f0-b0f2-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/agent_loop_01.ini&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE AGENTE&lt;br /&gt;
    [uuids]&lt;br /&gt;
    agent=1a3a1020-ea1d-11f0-b4a5-5254008bef96&lt;br /&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 /etc/MDtel/vFlow/service.ini&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;
&lt;br /&gt;
 EJEMPLO &amp;quot;.INI&amp;quot; DE SERVICIO&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;
&lt;br /&gt;
=== Invocación ===&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; omnisuiteText &amp;lt;omnisuite_id&amp;gt; &amp;lt;omnisuite_websiteId&amp;gt; &amp;lt;omnisuite_createdAt&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&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;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;
&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;
&lt;br /&gt;
 /usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionOpen &amp;lt;omnisuite_UniqueId&amp;gt; &amp;lt;vflow_client_id&amp;gt; &amp;lt;vflow_client_phone_number&amp;gt; &amp;lt;vflow_client_email&amp;gt;&lt;br /&gt;
&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;
 {&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;
&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;
&lt;br /&gt;
	/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; textRequest &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;question&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;config_arch&amp;gt;			--&amp;gt; OBLIGATORIO	--&amp;gt; &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
		&amp;lt;vflow_session_uuid&amp;gt;	--&amp;gt; OBLIGATORIO	--&amp;gt; Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
		&amp;lt;question&amp;gt;				--&amp;gt; OBLIGATORIO	--&amp;gt;	Texto a enviar al orquestado (p. ej Flowise) (normal, abandoned, other)&lt;br /&gt;
&lt;br /&gt;
		Ejemplo de respuesta JSON&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;
&lt;br /&gt;
&lt;br /&gt;
	/usr/local/sbin/vFlowOmnisuite &amp;lt;config_arch&amp;gt; sessionClose &amp;lt;vflow_session_uuid&amp;gt; &amp;lt;vflow_cause&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;config_arch&amp;gt;			--&amp;gt; OBLIGATORIO	--&amp;gt; &amp;quot;.ini&amp;quot; del servicio&lt;br /&gt;
		&amp;lt;vflow_session_uuid&amp;gt;	--&amp;gt; OBLIGATORIO	--&amp;gt; Variable &amp;quot;session&amp;quot; almacenada en el &amp;quot;sessionOpen&amp;quot;&lt;br /&gt;
		&amp;lt;vflow_cause&amp;gt;			--&amp;gt; OPCIONAL	--&amp;gt; (normal, abandoned, expired, other)&lt;br /&gt;
&lt;br /&gt;
		Ejemplo de respuesta JSON&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PARA PROBAR DESDE vFlow&lt;br /&gt;
&lt;br /&gt;
En /home/sat/vFlow hay scripts de prueba (se configuran en el vars.sh); para usar los scripts de prueba tendremos que tener también &amp;quot;.ini&amp;quot; en vFlow&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>