En este vídeo te voy a enseñar cómo hacer una demo para una inmobiliaria.
00:04
Te voy a enseñar cómo hacer una infraestructura, un chatbot un poquito más avanzado, dos chatbots un poquito más avanzados para que entiendas los más potentes.
00:13
Vamos a empezar por una demo.
00:14
¿Cómo vamos a hacer una demo?
00:16
Tenemos aquí el negocio, por ejemplo, vamos a hacerlo con Don Piso.
00:19
Lo importante de aquí primero es que tenemos que scrapear absolutamente toda la información que saquemos de Don Piso.
00:26
Entonces para esto yo, yo sinceramente te recomiendo mucho Manus.
00:30
Si no te puedes permitir Manus, tienes una prueba de 7 días gratuitas, gratuita, cuesta aproximadamente 40 euros al mes.
00:39
Si no puedes hacerlo con ChatGPT directamente, vamos a hacerlo por ejemplo con Don Piso.
00:42
Con este ejemplo volvemos directamente a lo que habíamos construido hasta ahora.
00:46
No quiero irme mucho de las ramas.
00:48
Entonces, ¿Qué es lo que vamos a hacer?
00:51
Vale, vamos a ir a Don Piso primero y lo primero que tenemos que saber es cuál es el objetivo de un piso.
00:56
Entonces vamos a ir a la Manus y vamos a quiero que me scrapees todas las webs y me las pongas en un PDF para copiar directamente todas las posibles subpáginas.
01:13
Y Albanos lo que va a hacer va a ser de Don Piso va a scrapearme todas las que haya, vale, Con toda la información que haya en Internet de Don Piso.
01:23
Esto recordemos que es una demo muy sencilla, luego se puede crear una inteligencia artificial que se encargue de hacer estos procesos de manera automática.
01:29
Pero a ti te interesa ahora crear una demo personalizada y luego después puedes crear una automatización para que te haga las demos también.
01:36
Que nosotros por ejemplo teníamos una que se encarga de hacer todo este proceso directamente, automáticamente.
01:42
Vamos a darle a continuar.
01:44
Aquí vemos que tiene muchísimas, muchísimos lugares.
01:48
Entonces la inteligencia artificial va a hacer todo por nosotros.
01:51
Entonces por esa parte ni te preocupes.
01:53
Vamos a esperar continuar después de tu respuesta.
01:57
¿Cuál es el propósito específico?
01:59
Necesito añadirlo a mi agente de IA, Necesito todas las que haya.
02:10
Si, lo que pasa, tenemos permiso principalmente porque todas las páginas son públicas.
02:16
Simplemente le estoy diciendo que me scrapee las subpáginas para tenerlas directamente.
02:22
Entonces vamos a esperar a que Manus haga su curro.
02:27
Mientras Manus hace su curro, lo que vamos a ir haciendo es montando el agente.
02:32
Más o menos era lo que habíamos comentado anteriormente, simplemente le podemos enseñar una demo con nuestro propio Evolution API.
02:39
Entonces vamos a coger todo este System Prompt, realmente está prácticamente todo, después te voy a enseñar a cómo utilizar memoria temporal, cómo crear una infraestructura y un chatbot un poquito más avanzado con audios, etc.
02:53
Un poquito más complejo, pero para demos esto está espectacular.
03:00
Voy a pausar el vídeo mientras espero a que finalice esto, Vale, entonces después de todo esto hemos visto que nos ha generado aquí un PDF, nos lo ha generado un poquito rarillo porque no se lo he puesto tan bien, pero fíjate que me ha dado absolutamente todo.
03:13
Entonces lo bueno es que el chat ya tiene todo el contexto, entonces ¿Qué le vamos a decir?
03:16
Quiero que me hagas un scraping de todas las páginas webs con la información del negocio básica.
03:20
Un segundo, quito esto de Don Piso, quiero que me mandes un PDF, No, quiero que tomes todo ese contexto y después a hagas un agente de chatbot para NN, es decir, el System Prompt con el correcto formato perfecto para NN haciendo un agente eficaz capaz de resolver dudas.
04:03
Entonces vamos a esperar a que ejecute esto y nos va a hacer directamente el prompt que vamos a tener que añadir aquí en el agente y ya tendremos directamente la demo hecha.
04:14
En la demo después te enseñaré, porque esto es una demo muy personalizada, te enseñaré cómo utilizar el audio, cómo utilizar ciertas cosas como puede ser la memoria temporal para que parezca una demo un poquito más interesante.
04:29
Ya después de ahí tú puedes generar la demo que tú quieras más o menos vale, o que se tenga que presentar a la persona.
04:36
Tú tienes que entender que el objetivo de las demos sobre todo es no hacer una locura, sino hacer algo para que aumente un poquito la confianza.
04:44
Después ya desarrollas un agente completo y bueno vale, porque si te centras en hacer una demo demasiado, demasiado personalizada y luego no se acaba vendiendo, has perdido mucho tiempo, ¿Me explico?
04:57
Entonces incluso la propia reunión se le puede hacer el análisis y si la persona es correcta y la persona o el negocio tira para adelante y es positivo, entonces ahí puedes permitirte hacer una demo un poquito más personalizada para incluso asegurar ese cliente.
05:13
Entonces vamos a esperar a que haga esto, voy a pausar.
05:18
Entonces ya ha finalizado esto, aquí vemos que nos ha creado absolutamente todo hasta el JSON dn que esto no es necesario, pero bueno aquí tenemos el chatbot, aquí lo que vamos a hacer va a ser descargarlo como markdown, vamos a pasarlo aquí.
05:40
Y aquí es importante que no ha hecho el prompt don't piso system prompt don't piso system prompt.
05:55
Vamos aquí a la gente, vamos a ir a system message, vamos a copiar esto, lo que sí vamos a eliminar es a partir de.
06:22
Información de don piso eres un asistente de atención al cliente, esto lo vamos a eliminar y aquí ya lo tenemos, eres un asistente atención al cliente de un piso, una agencia inmobiliaria, etcétera, etcétera, etcétera de ejemplo.
06:33
Entonces si nosotros venimos aquí a save execute workflow y nosotros le escribimos hola buenas nos va a ejecutar a la gente hola buenas, un segundito, un segundito, ¿Por qué está haciendo esto así?
06:59
Vale, por la memoria OK, mira ya de paso te voy a enseñar a cómo crear una memoria postgres.
07:04
Para crear una memoria postgres lo que vamos a hacer va a ser ir directamente, vamos a ir a easypanel lo que te voy a enseñar aquí es básicamente cómo crear una memoria correcta, cómo se crea una memoria correctamente para un chatbot.
07:19
Vamos a ir a easypanel, vamos a seleccionar servicios, vamos a darle a postgres y vamos a darle por ejemplo denise nombre de base de datos denise usuario postgres por determinado y una contraseña, vamos a poner denise por ejemplo, le damos a crear y nos estará creando básicamente una base de datos, yo te recomiendo que habilites el div gate que aparece aquí para poder verlo todo visualmente, vamos a esperar.
08:00
Y el pgweb también si quieres, le damos aquí abrir, vamos a reiniciar y se nos ha creado la base de datos completamente de manera automática, vamos a conectarla, damos aquí clic a conectar y aquí ya tenemos el database, aquí vamos a seleccionar la que queramos, yo seleccionar por ejemplo denis y ya tenemos una base de datos creada, así de sencillo, es espectacular esto.
08:27
¿Qué es lo que vamos a hacer ahora?
08:27
Muy sencillo, vamos a sacar las credenciales de la base de datos que son estas de aquí, vamos a ir a n, vamos a darle a memory y vamos a seleccionar postgres chat memory, seleccionar credencial, seleccionar credencial y aquí vamos a añadir simplemente lo que tenemos aquí, usuario user, contraseña contraseña, nombre de la base de datos, denis, host, localhost, puerto interno 5432.
09:06
Ya está puesto ese, le damos a Save y aunque parezca que no nos hemos conectado realmente si nos hemos conectado, como ves aquí.
09:14
Entonces ahora mismo, si nosotros venimos aquí a Postgres, lo que hay que hacer también es cambiar el Session ID de nuevo, le damos a definir, lo mismo que antes, pero esta vez tenemos una memoria real en una base de datos real, con mucha más capacidad y más versatilidad.
09:29
Entonces metemos aquí el identificador, aquí metimos el nombre de la tabla, es decir, podemos poner el que queramos realmente, le damos aquí a new Table, vamos a ponerle por ejemplo, Vamos a poner por ejemplo prueba.
09:58
Create table, OK, creamos la tabla y ya tenemos la tabla prueba, ponemos aquí prueba y vamos a seleccionar aquí 20 teóricamente se tiene que conectar, si no después haré un módulo que bueno, ya lo verás con el tema de las bases de datos y cómo funcionan.
10:18
Vale, no funciona.
10:19
Bueno, vamos a reiniciar, así se crea una base de datos, pero después te voy a enseñar cómo crear una por ejemplo en Supabase, que eso es interesante, es cómo lo vamos a hacer, pero ahora mismo no quiero liarte mucho porque quiero hacerlo estructurado y que sea sencillo de entender.
10:34
Así es como se crea una base de datos Postgres.
10:36
Ya has aprendido a hacer una base de datos Postgres muy sencilla, pero vamos a utilizar Supavis que va a ser mucho más sencillo también.
10:41
Simplemente ponemos la memoria, vale, lo mismo de siempre, identificador, vamos a poner 20 OK, le damos a guardar y vamos a poner Hola, Fíjate que ya el output me lo devuelve.
10:54
Hola buenas, ¿Buscas comprar, vender o alquilar una propiedad?
10:56
Estoy aquí para ayudarte.
10:57
Si vamos aquí, Hola, me está devolviendo, me lo está devolviendo mal, me gustaría saber por qué.
11:10
Vale, porque aquí en mensaje hemos puesto el de organizar información, hemos puesto el que llega directamente aquí lo que queremos es recibir el mensaje que está mandando el agente, por lo tanto vamos a ir Agent y aquí en output vamos a poner esto de aquí.
11:26
Y ahora sí, ahora, importante también el organizar información, el delay ya no lo vamos a calcular aquí, esto lo vamos a quitar, sino que lo vamos a calcular del output que manda.
11:39
Vamos a poner otro edit fill y lo vamos a calcular del output que manda la gente.
11:46
Aquí ponemos Conversation, ponemos directamente output, esto lo quitamos y esto también y aquí vamos a poner 30 mejor.
12:04
¿Luego aquí en enviar texto vamos a ejecutar este de aquí, marcamos como conversación leído el mensaje y en enviar texto aquí en delay vamos a añadir el nuevo que hemos creado, escritura y ahora sí, si yo ejecuto el workflow le digo hola buenas, me debería enviar ya y debería tener la demo de Don piso?
12:35
¿Vamos a ver si ha pasado algo, no envío el texto, un segundito, vale, lo mismo hay que añadirlo, disculpadme que voy un poquillo rápido aquí vamos a ponerlo en number, ahí está, ahora sí, hola buenas, se ejecuta el workflow, esperamos hacer la animación de escribir Hola, quieres que te ayude a vender comprar?
13:00
Estoy aquí, me gustaría saber cómo agendo una cita, por ejemplo, La intención es que sea lo más humano posible, pero para que veáis que es una demo muy sencilla, vale, Claro, no le da ejecute workflow, perdón, Hola, me gustaría saber cómo agendo una cita ahora sí se ejecuta.
13:49
Para agendar una cita necesito saber si quieres vender, comprar o alquilar una propiedad y en qué zona estás interesado si te puedo conectar con la gente especialista adecuado, me cuentas un poco más, ves, entonces ya tenemos un chatbot muy sencillo y funcional.
14:00
Lo que sí es importante también es que para no tener que depender de ir dándole clic aquí todo el rato, vamos a ponerlo en producción, OK, Vamos a activar esto de aquí simplemente muy importante una cosa, una vez activemos esto, recordar que en el webhook lo teníamos puesto en test URL, aquí hay que cambiarlo a producción y hay que copiar este enlace y en evolution, donde íbamos antes a webhook hay que cambiar el que teníamos por este de aquí y guardamos aquí.
14:26
Entonces ahora si vamos aquí a executions y yo escribo directamente, ahora no tengo que darle directamente a execute workflow, fíjate que me lo ejecuta de manera automática.
14:40
Me gustaría comprar, comprar, por ejemplo, vamos a decirle directamente, si te fijas se ejecuta automáticamente y ya tenemos un chatbot funcional, vale, vamos a esperar, ¿En qué zona estás interesado comprar?
15:01
En Barcelona, la verdad, fíjate que va recortando absolutamente todo y va guardando absolutamente todo la memoria, Perfecto, ¿Qué tipo de propiedad buscas en Barcelona?
15:17
¿Un piso, una casa, otro tipo?
15:18
Bueno, esto es un ejemplo, entonces Aquí tenemos una demo muy sencilla que lo que voy a hacer yo ahora, voy a enseñarte a cómo poner memoria temporal, a cómo realizar una infraestructura un poquito más compleja a nivel de chatbot y te voy a enseñar también en el siguiente módulo a cómo hacer una demo de un agente de voz también.
15:37
Entonces vamos a.
15:38
Vamos a ello.
15:40
Muy bien, lo que estás viendo por aquí es una estructura de chatbot un poquito más avanzada y te voy a ir explicando paso por paso para que lo entiendas, ¿Vale?
15:45
Que vamos a estar un ratito.
15:46
Esto es un poquito más avanzado, una vez le pides el truco, todo lo demás es mucho más sencillo, escopear y pegar para las demos.
15:52
Entonces, demo, prueba, tutorial, no te asustes, te voy a enseñar paso a paso y te voy a explicar paso a paso.
16:03
Para empezar, estamos partiendo de aquí, esto es un agente normal que se puede hacer, etc.
16:07
Ahora lo que vamos a hacer va a ser implementar que la persona pueda enviar mensajes de voz y la gente de inteligencia artificial pueda interpretarlos y luego responderle también en base a eso.
16:18
También lo que vamos a hacer va a ser añadir un sistema de memoria temporal con Redis que comentaba anteriormente, para que la gente pueda interpretar todo lo que comenta la persona en caso de que le escriba así.
16:28
Buenas tardes, ¿Cómo estás?
16:31
Soy Denise, porque fíjate qué pasa si no hacemos esto.
16:34
Fíjate lo que empieza a hacer el agente.
16:37
Pum, pum, pum, pum,-Pum.
16:39
Empieza a responder en base a lo que va recibiendo.
16:43
Entonces lo que queremos es, si la persona escribe en Pilar, sea un tipo de persona que escribe en Pilar, pueda tomar todo esto y escribir únicamente un mensaje, no responder únicamente por ejecución a cada mensaje, que eso es muy importante.
16:56
Entonces vamos a recibir el webhook de siempre.
17:00
Este agente lo vamos a dejar aquí apartado, no lo queremos.
17:03
Ahora vamos a coger, vamos a eliminar a la gente que tenemos aquí, ¿Vale?
17:15
De prueba.
17:17
Y aquí vamos a conectar nuestra gente que teníamos previamente.
17:19
Simplemente arrastramos, andamos, Esto se puede eliminar porque ya lo tenemos aquí, Organizar.
17:40
Y ahora vamos a volver aquí, vamos a pinear esto para poder trabajar correctamente nuestro desarrollo como te comentaba previamente.
17:47
Entonces, ¿Qué es lo que vamos a hacer?
17:49
Primero, en Edit Fields, te fijas, lo que hacemos directamente primero es sacar la información que necesitamos.
17:55
Ahora te explico por qué.
17:57
Si nosotros ejecutamos eso, sacamos información necesaria que necesitamos después como el misage, OK, Si te das cuenta el DateTime, sacamos el Remote ID, sacamos la conversación et.
18:13
Esto está un poquito bugueado.
18:14
Aquí vamos a usar el mismo que usamos antes, que es este de aquí de organizar información.
18:22
Vamos a duplicar esto, vamos a arrastrar esto por aquí y vamos a adaptarlo a nuestro agente.
18:35
Un segundo, Aquí hemos sacado delivery pack conversation.
18:47
Me gustaría saber cómo agenda una cita.
18:49
Vale, no saca nada más.
18:50
Cierto, no nos saca nada más.
18:51
Vale, pues nada, entonces sí, efectivamente vamos a añadir el nuestro, vale, Si vemos que después nos falta algo más, simplemente lo añadimos de nuevo sin ningún tipo de problema.
19:05
Lo pasamos aquí, Ejecutamos, ejecutamos.
19:14
¿Qué es lo que hacemos primero?
19:15
Organizamos la información, como habíamos comentado anteriormente, organizamos la información y sacamos las variables correctamente aquí en split out, aquí lo que hacemos es ponerlo todo en un mismo array, esto es interesante para organizar más la información, lo ponemos todo estructuralmente, esto a nivel de desarrollo queda más bonito, no hace prácticamente nada, pero queda muchísimo más bonito.
19:34
Lo pone en un solo Message JSON parser.
19:38
¿Qué hacemos aquí?
19:39
Parsear todo lo que llega de aquí.
19:41
¿Qué es lo que ocurre?
19:42
Que claro, no tenemos ningún missage ahora mismo que parsear.
19:47
Split out, claro, porque esto viene después de redis push, getMessage, sacamos todos los message.
19:59
Vale, vale, ya sé lo que está pasando aquí, ya te lo voy a explicar.
20:05
Vamos a utilizar este edit fill.
20:08
Lo que vamos a hacer ahora, porque no lo ha añadido aún, lo que vamos a hacer ahora va a ser todo el tema de la memoria temporal.
20:13
Esto es muy necesario para guardar los identificadores y si nos vamos aquí por ejemplo, donde pone message, lo guardamos de esta manera para que podamos adjuntar todos los mensajes que lleguen en pilar básicamente.
20:25
Entonces lo vamos a poner de la siguiente manera, puedes copiarlo, pegarlo directamente, de todas maneras te voy a dejar aquí abajo el flujo directamente para que tú puedas copiar y pegarlo en n.
20:36
¿Cómo se pega y se copia un flujo en n?
20:38
Muy sencillo, tú recibirás un JSON de esta manera y cuando tú te descargues el archivo que te doy, si le das clic aquí a los tres puntitos, le das a importar desde archivo, pones el JSON y ves, pum, se te importa ya directamente, lo único que tienes que hacer tú, muy importante, es añadir tus propias credenciales y tu información, obviamente que eso dependerá de tu agente y de tu chatbot.
21:00
Entonces ejecutamos esto y en split it out ponemos todo esto y luego lo parseamos.
21:05
¿Qué es lo que hacemos aquí?
21:07
Primero adjuntamos todo, porque aquí recibiremos absolutamente todos los mensajes en pilar que se hayan mandado y aquí en output tenemos separado, hacemos el split out para separarlo el message y luego aquí en JSON parser metemos todo otra vez en objeto switch.
21:29
¿Qué hacemos aquí en switch?
21:30
¿Aquí en switch lo que hacemos básicamente es detectar, OK?
21:34
Detectar qué tipo de mensaje es.
21:38
Si nos vamos aquí, hemos tomado nosotros una variable que es el message step conversation, cuando nosotros enviamos un mensaje nos aparecerá conversation, si enviamos un audio nos aparecerá como.
21:51
Como no conversation, sino como audio message.
21:54
Entonces aquí añadimos un switch, si no sabes añadir un switch, muy sencillo, pones aquí switch.
22:00
Este switch nos sirve para saber por dónde guiar a la gente.
22:03
Si queremos un audio lo mandaremos por aquí, si es un texto lo mandaremos por aquí, en este caso es un texto, lo manda por aquí y el merge lo meta directamente en el input.
22:15
Aquí es importante entender, vale, claro, ahora mismo porque estamos de testing, pero bueno, ahora lo que queremos es el tema de los audios, entonces básicamente en texto sería lo mismo, lo pasaría por aquí, la memoria temporal lo mete la gente y envía el mensaje.
22:30
Nosotros queremos ahora el audio, ¿Qué vamos a hacer?
22:32
Vamos a poner un HTTP protocol, ¿Vale?
22:35
¿HTTP request, OK?
22:39
Se nos va a abrir esta ventanita y vamos a configurarlo de esta manera, vamos a añadirlo en método post y aquí vamos a ponerlo absolutamente así.
22:47
¿Qué es lo importante aquí?
22:48
Aquí tenemos que sacar el server URL de nuestra instancia, es decir, es este de aquí, pero lo tenemos que sacar directamente desde nn, se recomienda mucho más, en cambio de que luego, para que luego cuando cambies el nn no tengas problemas, etc.
23:03
Vamos abajo donde pone recibe mensaje y vamos a buscar server.
23:10
Podemos buscarlo aquí, server URL, aquí lo tenemos, lo sacamos de recibe mensaje.
23:17
Esto vamos a quitarlo, que viene de un webhook anterior y esto lo vamos a pegar aquí al principio, Host chat, aquí falta un segundo, sí, efectivamente, nos falta una barra aquí, fíjate cómo va quedando.
23:36
Y luego aquí tenemos que poner el nombre de la instancia, simplemente venimos aquí y ponemos instance.
23:46
Y ponemos el nombre de la instancia tenistutorial Ahora un segundito, Prefiero añadirlo directamente desde el webhook, sinceramente.
23:59
Entonces venimos aquí, instancia, luego autenticación, nada, luego vamos a darle que nos dé el.
24:09
Vamos a activar el send headers y vamos a poner using fields below y aquí vamos a poner únicamente API Key que es para sacar la API Key que tenemos nosotros.
24:19
¿Cómo sacamos la API Key?
24:21
Lo mismo, venimos clic aquí, le damos a recibir mensaje, buscamos aquí apk y en recibe mensaje, fíjate que aquí la tenemos, la añadimos, vamos a sendbody y aquí en sendbody vamos a activarlo, vamos a poner using fields below en JSON y vamos a poner messagekey id, Esto es muy importante, ¿Por qué?
24:44
Porque esto de aquí es exactamente, si nos venimos aquí en data key y luego id, esto es el identificador de este mensaje en concreto, tenemos que guardar el identificador de este mensaje en concreto porque queremos sacar el audio de este mensaje en concreto.
24:58
Entonces añadimos eso y en convert to mp hay que añadirlo simplemente y lo pones en false, Booleano false, ponlo y muy importante, en booleano pones el boolean false, Listo, más propiedades no es necesario.
25:13
¿Entonces voy a toser un segundo?
25:21
¿Vale?
25:21
Disculpa, me he muteado el micrófono por si acaso, para no petearte el oído.
25:25
Entonces, ¿Qué es lo que vamos a hacer ahora?
25:27
¿Vamos a empinear esto y vamos a mandar un audio de ejemplo, vale?
25:32
Hay errores, dame un segundito primero, bueno, vamos a conectar, dame un segundito, voy a desactivar esto, voy a desactivar esto para que no dé error, esto para que no dé error y esto para que no dé error y ya está, ya puedo guardarlo.
25:45
Ejecutamos workflow y yo ahora voy a venir aquí, iba a decirle hola, buenas tardes, buenas noches, me llamo Denisse, Vamos a esperar y no estamos recibiendo nada, estamos en test o en Post listening for test event, vale, sí, sí lo estamos recibiendo, solamente que no como test, Venimos aquí executions y veremos por aquí que se nos ha ejecutado o obviamente va a dar error, vale, Venimos aquí execution, porque recordemos que lo hemos puesto en producción, vamos a darle clic aquí donde pone debug in editor vale, No me deja, no sé por qué.
26:24
vale, porque no tengo la license key Vale, un segundito Vale, básicamente me lo he movido a mi infraestructura directamente para que no me dé errores, vale, Porque yo anteriormente a ti te dejará activar la license key que hablábamos al principio pero a mí en este caso no porque ya tengo una vale, entonces ya estoy aquí sin problema lo que vamos a hacer va a ser darle executions y aquí vamos a mandarle un audio Hola, buenas tardes, buenas noches, me llamo Denise, ha sido un placer Se ejecuta y obviamente da error, no hay problema, obviamente tiene que dar error porque no lo hemos configurado Entonces vamos a ir aquí donde pone Debug in editor y lo que va a hacer esto va a ser automáticamente pinearnos el audio que acaba de enviar si te fijas aquí hemos sacado el audio y lo hemos guardado y lo hemos mandado para Evolution API Aquí lo que hacemos es subir el audio en los servidores de Evolution API luego vamos a añadir un download audio, vamos a tener que descargar ese audio para que NN lo pueda interpretar Es tan sencillo como darle aquí a Move, poner aquí seleccionáis convert to file move string to file y aquí directamente como ves aquí hemos puesto data cuando descargamos esto, OK, fíjate el pedazo de dash que tenemos aquí descargamos la tabla que nos llega como data entonces simplemente pones base 64 que es todo este archivo de aquí y aquí en output aquí el nombre del archivo como quieres llamarle, yo le llamo Data, no importa cómo quieras llamarle Luego importante aquí en opciones te va a aparecer esta opción que es de mimetype, es muy importante que añades el mismo mimetype, le das aquí opciones mimetype y añades el mimetype que aparece aquí que te devuelve Evolution API entonces tú descargas el audio Después de descargar el audio lo que queremos hacer es transcribirlo tenemos varias opciones, puedes utilizar Gemini, puedes utilizar chat GPT o puedes utilizar elevelabs yo recomiendo para estos casos elevelabs porque levellabs es una aplicación que puede detectar mucho más el sentimiento y es interesante que detecte también el sentimiento si lo dice enfadado, si lo dice triste.
28:24
Entonces vamos a darle a elevenlabs y vamos a darle a transcribe audio vídeo este vamos a eliminarlo Ahora lo que hay que hacer es ir a elevelabs y vamos a crearnos una cuenta te vas a ir a tu Elevel Labs, vas a meterte en esta página, te vas a crear una cuenta, te registras, etc, etc.
28:45
Esta es una cuenta de prueba que tengo y lo que vas a hacer cuando te crees la cuenta va a ser Los planes de Level Labs son muy sencillos, son estos.
28:58
Puedes empezar por 0€, literalmente, y tienes API Access también, o sea que no hay problema.
29:02
Si No te gusta eLevelAps, puedes utilizar ChatGPT directamente.
29:06
Yo te recomiendo eLevelAbs.
29:08
Entonces, desarrolladores, le vamos a dar a claves API, crear app, crear clave, vamos a decirle prueba tutorial y vamos a clicar esto para que no la restrinja.
29:20
Copiamos al portapapeles, volvemos a nuestro flujo, creamos una nueva credencial, tutorial, prueba para yo no liarme luego añadimos el Level Labs API, le damos a Save, ya tenemos la credencial conectada.
29:38
Vamos a seleccionar Speech, Speech to text, porque queremos mandar un audio a texto y el nombre del archivo que le hemos dado antes, en este caso Data.
29:47
Si por ejemplo es una conversación con varias personas, lo que se puede hacer aquí, que es bastante interesante, es poner el número de speakers y te lo divide.
29:54
Si son dos personas hablando, lo detecta y te manda el output con esos dos speakers, con esas dos personas.
30:00
En este caso no es necesario, se lo podemos indicar también directamente, pero no es necesario.
30:04
¿Ahora le vamos a dar clic a ejecutar y que nos ha devuelto?
30:09
Y si te fijas, nos ha devuelto directamente lo que hemos dicho en el audio.
30:14
Hola, buenas tardes, buenas noches, me llamo Denisse, ha sido un placer.
30:16
Si escuchamos el audio.
30:18
Hola, buenas tardes, buenas noches, me llamo Denis, ha sido un placer, lo hice correctamente.
30:23
Entonces ya tenemos el audio aquí transcrito.
30:25
Ahora lo que vamos a hacer va a ser guardarlo en esta variable de aquí, con el contenido interesante que pongas estas barras de audio.
30:32
No es necesario, pero podrías ponerlo para que la gente sepa interprete que se lo ha mandado como audio también.
30:42
Y listo.
30:42
Ahora simplemente ejecutar.
30:46
Importante el merge, en este caso el input, el merge no es necesario realmente, el merge lo podemos quitar, Bueno, claro, no, porque puede recibir dos tipos de outputs, entonces, número inputs 2.
31:00
Cuando se ejecute todo de manera correcta va a funcionar de todas maneras, Vale, si yo vengo aquí, always output data no lo manda, me está pidiendo obligatoriamente que hayan dos outputs, cierto, sí, cuando tú ejecutas el workflow en producción no hay error aquí, pero el merge en este caso nos lo está pidiendo directamente, entonces no pasa nada, lo que vamos a hacer va a ser eliminar el merge y aquí vamos a meterlo directamente en el aggregate.
31:33
Aquí en el aggregate ya tenemos todos los mensajes, aquí aparece uno, pero si ha enviado varios en pilar te aparecerán varios en pilar.
31:42
¿Volvemos a organizar la información, bien, en este caso hay que añadir el número otra vez aquí, vamos aquí a recibe mensaje, añadimos por aquí remoteid, aquí tenemos todo mensaje, por ejemplo en este caso si, en ese caso da este error, simplemente hay que poner, en realidad se puede cambiar así también, ves, poner recibe mensaje y luego aquí en transcribe a recording, aquí hay que poner el transcribe que hemos sacado aquí, por qué da error?
32:16
A ver un segundito, Lo que hay que hacer aquí, aquí queremos meter los mensajes, vale, entonces hay que poner ítem, body, data, message, conversation, en este caso no es claro, es esto, esto está bien, o lo que hacemos aquí es ponerle or, ¿Por qué?
32:45
¿Porque aquí hay dos casos, que el mensaje venga de la conversación o que el mensaje venga del audio, entonces aquí ponemos que venga de esto o estos simbolitos, estas dos barras, que significa?
32:54
Es un condicional, o que venga del audio, en este caso vamos a poner aquí el texto que viene directamente del audio, Nos da invariante syntax por alguna razón, a ver un segundito, vale, ya he visto el error y es que aquí hay estos corchetes, hay que quitarlos, ahí está, vale, listo, ya tenemos el edit fill, entonces ahora ejecutamos y ya tenemos toda la información organizada aquí, tanto si lo manda como audio como si lo manda por texto, ya la tenemos toda recibida aquí que lo que vamos a hacer ahora conectar la memoria Redis, eso es muy importante, ¿Por qué?
33:36
Porque como comentábamos, esto lo que va a hacer que se guarden memorias temporales y se pueda ejecutar en pilares, en este caso ya tengo una cuenta de Redis, pero te voy a enseñar a cómo hacerlo desde cero, vamos a ir directamente aquí donde pone Evolution Manager, perdón, vamos a ir aquí a evolución API, vamos a ir a Evolución API, Redis, credenciales y estas credenciales básicamente vamos aquí a Redis, vamos a darle crear credencial, tutorial, prueba demo y vamos a ir poniendo las cositas en este caso usuario default, la contraseña, vamos a poner la que se ha generado aquí, el host, perdón, el que nos comente, host interno, pues hay que poner este.
34:31
Y a mí no me va a funcionar porque esto lo tengo conectado en mi OVH, entonces no es host interno, pero tú básicamente pones los datos que te aparezcan aquí, a mi me va a dar error a mí porque no está conectado en la misma base, pero yo en mi caso tengo esta que sí está conectada, esta sí que está conectada con mi base, entonces ya simplemente se te conectará, no hay ningún problema, ya lo verás.
34:53
Y aquí en Operation vamos a seleccionar Push, aquí en List vamos a añadir el número telefónico que hayamos sacado de Edit Fields y aquí el mensaje completo, vamos a darle a Push Wait, este wait es el más importante, si no sabéis añadir todo esto, Redis, etcétera, simplemente si añadís de aquí, pones aquí Redis, puedes seleccionar cualquiera, luego puedes modificarlo aquí en Operation.
35:23
Y el Wait más de lo mismo, desde aquí, este wait es el más importante, esto lo que hace es esperar, simplemente esperar.
35:29
¿Por qué queremos esperar?
35:30
Queremos esperar el tiempo que la persona puede tardar en poner los mensajes de pilar, por ejemplo, si la persona pone hola buenas, se espera, soy Denise, sabes, ha tardado unos 10 segundos más o menos, tú puedes poner el tiempo que quieras, yo recomiendo 30-50 segundos, vale, en este caso para el tutorial vamos a ponerlo nada de 10 segundos, vamos a ponerlo de 15 segundos para que no esperemos tanto.
36:01
Después vamos a activar en redis el getMessage, aquí queremos sacar los mensajes que se guarda la memoria temporal en los anteriores workflows, le ponemos Get, lo juntamos en Message mismo y aquí en Key básicamente vamos a poner número que me está pidiendo que ejecute los anteriores nodos, entonces ejecutamos, vamos a ejecutar el Wait, bueno, vamos a esperar 15 segundos, vale, hemos esperado 15 segundos y ahora lo que hace es coger los mensajes, los saca directamente y aquí añadimos un condicional que es el If.
36:37
En este condicional lo que vamos a hacer va a ser de todos los mensajes que sacamos, fíjate, todos los mensajes que hemos sacado porque le hemos escrito Hola buenas tardes, soy Denise, lo que queremos es que nos saque last, entonces ponemos jsonMessage last, queremos que nos saque el último, en este caso es este.
36:58
Lo que hacemos en este if es detectar si es igual.
37:05
Al primer mensaje.
37:08
Entonces lo que hacemos aquí básicamente es comparar, poner el if en edit fields aquí directamente comparamos al mensaje que tenemos antes de pasarlo por la memoria temporal, este mensaje de aquí con el último mensaje que sacamos de la memoria temporal y vemos si es exactamente igual.
37:26
Si es igual lo que vamos a hacer es ir para arriba y responderle, si no es igual no vamos a hacer nada porque simplemente queremos que ese mensaje se guarde la memoria temporal, ejecutamos y en este caso pues no es igual, por lo tanto volvemos para atrás.
37:45
Pero si por ejemplo unpineamos esto, nos vamos al último mensaje, la última ejecución, que en este caso es esta, si no me equivoco no está aquí, 58, copiamos al editor y ejecutamos esta, un segundo, no, que no sea de testing, 56, ¿A qué hora envía el mensaje?
38:11
Hay 56, vale, pues entonces tiene que ser esta de aquí.
38:14
Le damos a debug in editor, un pin y ahora ejecutamos.
38:24
Perfecto, vamos a ejecutar, vamos a esperar, Nos haga el if y aquí efectivamente ya va true, ¿Por qué?
38:41
Porque significa que es el último mensaje en este tiempo, lo mandamos por un edit fields otra vez.
38:45
Para organizar la información lo que vamos a hacer aquí básicamente es concatenar toda la información está en un solo mensaje, concatenar toda esta información en un simple mensaje, ponemos una variable de userMessage y aquí en el if redis getMessage aquí en realidad podemos hacerlo aquí seleccionamos todos los ítems, ponemos ítem JSON message que es todo el mensaje y podemos join para poner en join todos estos mensajes en la propia variable para que se junte aquí en Redis.
39:22
¿Lo que hacemos ahora es eliminar esos mensajes porque ya no los vamos a utilizar después, es una memoria temporal para guardarlo en pilar, porque luego se guarda la memoria general, vamos aquí a organizar información, aquí en este caso hay que seleccionar lo que nos llega, vale?
39:43
En este caso organizar información ya no es, ya no es necesario, ¿Vale?
39:48
Porque era el anterior agente, entonces ya hemos eliminado la memoria temporal y ya no está la memoria temporal, pero aún lo tenemos aquí en nuestro flujo de nn.
39:54
Entonces vamos aquí a la gente y lo que vamos a hacer va a ser ponerle aquí el userMessage que hemos sacado aquí, que acabamos de borrar y el tiempo en el que se mandó este mensaje, que esto lo puede sacar directamente, esto debería estar bien, si no me equivoco lo sacas directamente de aquí, Datetime, Entonces el agente ahora se va a ejecutar, no cada vez que ejecutas un mensaje de estos, sino va a coger tú del pilar y lo va a ejecutar, entonces le damos a ejecutar a la gente, un segundito, hay un error en la memoria, la key hay que añadirla aquí, importante recordar, añadimos por aquí la remote key, conectamos, Vamos a edit fields, aquí ya organizamos directamente el tiempo de escritura que tarda con el output, aquí marcamos la conversación como leída, el contacto, organizar identificador, aquí lo mismo, añadimos el identificador, lo mismo de nuevo, Marcamos la conversación como leída y aquí en enviar texto exactamente lo mismo, recibir mensaje, remote ID, el mensaje que hemos sacado de la gente, importante que ya está añadido y el delay que generamos, entonces ya si venimos aquí un segundito, enviar texto, tenis tutorial instance doesn't exist vale, aquí vamos a poner tenis videoprueba, perdón, ejecutamos.
41:53
Y ya nos habrá mandado simplemente un mensaje, fíjate la diferencia entre que antes nos enviaba todo y nos respondía y ahora ya directamente nos responde en base a 1 vale, esto es maravilloso, le da un toque profesional brutal a nuestra gente, fíjate lo que acabamos de hacer.
42:08
Entonces ¿Cómo hacemos demos muy sencillas, muy sencilla, cuando cada vez que nosotros queramos hacer una demo, por ejemplo de chatbot, cogemos este system message, lo mandamos aquí a manus y decimos quiero que me hagas un bot similar o igual, vale, para la inmobiliaria X y le das toda la información de la inmobiliaria, inmobiliaria España, por ejemplo, vamos a fotocasa, pues queremos que lo haga con fotocasa, le mandamos toda la información para que la scrapee de fotocasa, entonces ahora nos va a hacer exactamente lo mismo, simplemente que nos va a scrapear la información de fotocrasa y nos lo va a mandar, simplemente tendremos que copiar el system prompt, para que veas cómo lo hace, simplemente voy a reiniciar la memoria?
43:04
Define below, vamos a poner de nuevo el identificador, Vamos a esperar a que nos escape toda la información de fotocasa, ya vemos por aquí que nos está entregando finalmente el archivo, si vamos por aquí a system prompt de fotocasa, copiamos puedes utilizar manos como puedes utilizar chatgpt, ya te digo, ejecutamos el step y si ejecutamos ahora todo veremos que nos responderá en vez de down piso, nos responderá como fotocasa, ¿Soy de fotocasa?
43:44
Entonces ya es una demo un poquito más personalizada si le mandamos un audio, incluso si le mandamos dos audios, Hola, buenas tardes, sí mira, me gustaría un piso para Barcelona, vale, Y lo voy a decir por ejemplo en otro audio, de presupuesto máximo tengo como 20, 20.000 y por cierto me llamo Juan, por ejemplo, vale, entonces ahora nos está ejecutando absolutamente todo, pero espera, lo tenemos pineado un segundito, lo tenemos, tengo que quitar esto un segundito, no va a responder, igual puede ser que no responda muy rarillo.
44:30
O igual no responde bien, veremos a ver, pero creo que me toma otra vez estos datos si no me equivoco.
44:40
pues no, mira, fíjate, le hemos respondido, ¿Qué le hemos dicho?
44:42
Le hemos dicho hola buenas tardes, mira me gustaría un piso para Barcelona, un piso para Barcelona de presupuesto máximo tengo como 20.000 y por cierto me llamo Juan, me llamo Juan, Hola Juan, buenas tardes, gracias por contactarnos para ayudarte a encontrar un piso en Barcelona, como lo hemos dicho, podrías confirmar si buscas un piso para comprar o alquilar con un presupuesto de 20.000, podemos revisar opciones, asesorarte sobre las mejores alternativas y posibles ayudas hipotecarias, estoy aquí para ayudarte, es impresionante, vale, se puede personalizar, darle un toque más humano, etc, etc, etc, Pero esto es para presentar una demo.
45:17
¿Cómo presentamos la demo?
45:18
Básicamente en la llamada que tengamos de ventas, en la llamada que tengamos, perdón, de demo de analítica con la persona, le enseñamos un poquito eso y que él mismo por ejemplo pueda hablar, le mandamos el número de WhatsApp y que él mismo pueda hablar con él, con el bot, por ejemplo.
45:33
Entonces lo dicho, espero que te haya gustado este vídeo, luego ya en un futuro pues iremos agentes más avanzados, esto es para la demo y después de finalizar con este vídeo te voy a enseñar en el siguiente a cómo hacer demos de agentes de voz de manera completamente sencilla en 10 minutitos entonces nos vemos en el siguiente.