Ejemplo: Habilidad tiempo
Para continuar expandiendo nuestros conocimimentos sobre las habilidades de diálogo, vamos a crear una habilidad que permita a nuestros bots responder sobre las condiciones climáticas de una ciudad que desee un usuario.
Esto lo podemos conseguir integrando en nuestro flujo de pasos una llamada HTTP a un servicio externo que nos proporcione dicha información y posteriormente proporcionando la respuesta al usuario.
Crear la habilidad
Lo primero que debemos hacer es crear la habilidad. Proporcionaremos los siguientes datos en la ventana de creación:
Campo | Descripción | Valor |
---|---|---|
Título | Nombre de la habilidad. Preferiblemente en minúsculas y sin espacios. | weather |
Descripción | Breve descripción de la habilidad. Debe ser proporcionada en cada uno de los idiomas soportados. | Usa esta función cuando te piden que des el tiempo de una ciudad. |
Tipo | Tipo de habilidad. Búsqueda o diálogo. | Diálogo |
Idiomas | Lista de idiomas soportados por la habilidad. | Inglés y español |
Etiquetas | Lista de etiquetas relacionadas con la habilidad. | |
Modo de acceso | Selecciona el modo de acceso a la habilidad. Acceso público o lo miembros. | Acceso público |
Miembros | Lista de miembros que tienen acceso a la habilidad y sus privilegios asociados. |
Podemos ver mas información de como crear una habilidad en éste enlace: Como crear una habilidad.
Configurar las intenciones
Ahora debemos proporcionar una lista de frases para indentificar la intención del usuario de conocer el clima de una ciudad.
Para ello iremos a la tarjeta de Intenciones de arranque en la barra lateral y agregaremos algunas frases que pueda escribir el usuario y que podremos asociar con nuestra intención. Cuantas mas frases diferentes agregemos mejor podrá nuestro bot identificar la intención. Debemos proporcionar frases en todos los idiomas que tengamos habilitados.
En nuestro caso hemos agregado las siguientes intenciones:
Tienes más información sobre la barra lateral en el siguiente enlace: Barra lateral.
Definir parámetros
En nuestra habilidad de información del tiempo vamos a definir un parámetro para saber sobre qué ciudad debemos obtener la información del clima. Los parámetros son muy utiles ya que permiten a nuestros bots conocer que información necesitan para utilizar las habilidades de que disponen.
Si nuestros bots son de tipo LLM, definiendo correctamente la descripción de la habilidad y proporcionando información sobre los parámetros necesarios podremos hacer que dicho bot entienda lo que se le está pidiendo y busque en su catálogo de funciones cuál es la habilidad que necesita para responder.
En la pestaña Parámetros crearemos un nuevo parámetro para obtener el nombre de la ciudad que deseamos consultar. Seleccionaremos que es de tipo Cadena y que es obligatorio. Escribiremos la descripción del parámetro en los diferentes idiomas disponibles.
Disponemos de más información sobre parámetros en el siguiente enlace: Parámetros.
Definir los pasos
Vayamos ahora a definir los pasos que necesitamos para proporcionar información sobre el clima de una ciudad solicitada. En este ejemplo, primero mostraremos información al usuario indicando que vamos a buscar la información, a continuación obtendremos los datos mediante una llamada HTTP y por último mostremos dicha información usuario.
Por tanto necesitaremos los siguientes pasos:
- Escribir un mensaje diciendo que vamos a buscar el tiempo de la ciudad indicada.
- Hacer una llamada HTTP a un servicio externo para obtener la información.
- Responder al usuario con la información solicitada.
Toda la información sobre como crear los diferentes pasos está en el siguiente enlace: Pasos.
Agregaremos dichos pasos en la pestaña Conversación de la siguiente manera:
1. Mensaje de información
Creamos un paso de tipo Decir para indicar que vamos a buscar la información del clima de la ciudad que nos ha proporcionado como parámetro. Esto ayudará al usuario a saber si ha proporcionado bien la ciudad que desea consultar. Obtenemos el valor del parámetro utilizando la siguiente sintaxis: {{@parameters:city.value}}
. Debemos proporcionar este mensaje en todos los idiomas diponibles.
También podemos añadir un paso de tipo Evento para informar que vamos a proceder a hacer la consulta sobre la información.
Estos dos pasos realmente son opcionales, podríamos pasar directamente a hacer la consulta sobre la información del clima de la ciudad pero es una buena práctica mantener al usuario informado de qué se está haciendo en cada momento.
2. Hacer la petición al servicio externo
Ahora es el momento de realizar la llamada HTTP a nuestro servicio externo que nos proporcione la información del clima de la ciudad indicada por el usuario. Podemos usar multitud de servicios externos para obtener esta información y después procesar su respuesta y obtener los datos que nos interese mostrar al usuario.
En este ejemplo hemos usado un servicio llamado wttr.in que con una simple llamada GET y unos pocos parámetros podemos obtener en texto plano información sobre la ciudad.
Añadimos un paso de tipo Llamar API e indicamos que la petición es de tipo GET. Proporcionamos la url del servicio y añadimos la ciudad y el idioma como parámetros. En este caso no necesitamos agregar ninguna cabecera adicional.
https://wttr.in/{{@parameters:city.value}}?lang={{language}}&format=%l:+%c+%C+%t+%w+%m+%p+%P
El parámetro format en la url nos servirá para indicar al servicio externo qué información nos debe proporcionar, en nuestro caso, le hemos pedido que nos proporcione información sobre la temperatura, el viento, la fase lunar y si ha precipitaciones.
Indicamos por último que el resultado de la petición lo almacene en una entidad llamada response.
Toda la información sobre este servicio la podrás encontrar en el siguiente enlace: wttr.in
3. Mensaje de respuesta
Con la información de respuesta del servicio ya podemos contestar al usuario sobre la información del clima que nos ha pedido.
En nuestro caso vamos a añadir dos pasos mas. El primer paso es de tipo Decir para mostrar al usuario directamente la respuesta que nos ha proporcionado el servicio externo. Esto lo podemos hacer porque éste servicio provee la respuesta directamente en texto pero si la respuesta fuese un json, deberiamos de procesar dicha respuestas y quedarnos solo con los campos que necesitemos.
Agregamos a nuestro campo decir la respuesta del servicio mediante la entidad que guardamos previamente de la siguiente manera: {{@response:body.value}}
.
Por último, podemos pasarle dicha información a nuestro bot para que interprete los resultados y se los exponga al usuario de la mejor manera. Esto lo haremos añadiendo un paso de tipo Asignar y asignamos la respuesta del servicio externo {{@response:body.value}}
a la variable Output.
Asegúrate que has guardado tus cambios haciendo click en el botón Guardar.
Probar habilidad
Puedes realizar pruebas sobre la habilidad recién creada mediante la pestaña Probar habilidad.
Toda la información sobre la pestaña de Probar habilidad está en el siguiente enlace: Probar habilidad.
También podemos probar la habilidad asignandola a uno de nuestros bots y usar la pestaña Probar bot o directamente utilizando el chat de nuestro bot.
Y ya tendriamos listo una potente función en nuestros bots para que nos proporcione información del clima de cualquier ciudad que deseemos. 🌤️