3, 2, 1 ¡ACCIÓN! Saca las palomitas y programa un Bot experto en cine – Parte I

By 16/06/2017

Irene Marquet - Chat bot

Irene Marquet
IT Specialist Mobile en IBM España, Portugal, Grecia e Israel

En la actualidad es esencial disponer de herramientas que permitan construir, ejecutar y gestionar aplicaciones de forma ágil, y de ese modo, poder entregar en el menor intervalo de tiempo posible una versión funcional de la aplicación.

Durante mi experiencia como desarrolladora de aplicaciones en IBM, Bluemix ha sido una de las tecnologías que más me ha ayudado a seguir los principios de Agile y DevOps, al permitir desplegar de forma sencilla y rápida las aplicaciones y conectarlas a un amplio abanico de servicios, garantizando una alta frecuencia de entregas funcionales.

Para demostrar la potencia de Bluemix como plataforma como servicio, voy a desarrollar de una aplicación de un bot experto en cine para slack, que desplegaré en Bluemix en un entorno de ejecución Node.js y conectaré al servicio Conversation.

Bot experto en cine para slack

En su primera versión el usuario podrá interactuar con el bot de cine y preguntarle información acerca de una película concreta y este le devolverá la información requerida (i.e. Título original, año, duración, calificación, director, sinopsis, guión, género, etc).

chat bot

La arquitectura del sistema es la siguiente:

  • El usuario interactúa con la aplicación del bot a través de un chat de slack
  • La aplicación, desarrollada en Node.js y desplegada en Bluemix, envía la consulta al servicio Conversation de Bluemix.
  • El servicio Conversation interpreta la consulta del usuario, dirige el flujo de la conversación e intenta buscar la información referente a la consulta del usuario.
  • La aplicación busca la información necesaria en Filmaffinity a partir la interpretación del servicio Conversation.
  • La aplicación devuelve la respuesta al usuario a través de la interfaz de slack

Como primera parte de la solución, he desollado dos APIs en Node.js encargadas de consultar información de películas en Filmaffinity a partir de unos parámetros de entrada.

GET /api/film/byTitle

Devuelve la lista de películas que coinciden con la consulta. Además devuelve el identificador específico de cada película, que utilizaremos como campo de búsqueda para la segunda API.

Ejemplo:

  • Parámetro de entrada: “El padrino”
  • Resultado:

GET /api/film/byId

Devuelve la información de una película a partir del identificador específico.

Ejemplo:

  • Parámetro de entrada: /es/film730528.html
  • Resultado:

He desplegado las APIs en Bluemix, por lo que podéis acceder a ellas utilizando Swagger en https://filmaffinity-api.mybluemix.net/

Además, he dejado disponible el código en GitHub para que podáis contribuir a su mejora o utilizarlo para aprender a desplegar una aplicación en Bluemix: https://github.com/IreneMarquet/FilmAffinity-API

Despliegue de la aplicación en Bluemix

Vosotros mismos podéis desplegar una aplicación en Bluemix de forma rápida y sencilla, como yo he desplegado el bot de cine, a través de estos pasos:

1. Crear una aplicación desde Bluemix (Menu->Dashboard->Create App)

En cualquier lenguaje: Node.js, PHP, swift, Ruby, Python, Java, etc.

2. Descarga el código ejemplo (Getting Started) que contiene el esqueleto de la aplicación. A partir de este esqueleto podrás comenzar a construir tu aplicación.

3. Sustituye los ficheros del código ejemplo (i.e. carpeta public, app.js, package.json) por los de tu aplicación. El único fichero que debes mantener es el manifest.yml ya que contiene los detalles de tu aplicación en Bluemix y es necesario para el despliegue.

4. Sitúate en la carpeta de tu proyecto desde la línea de comandos, y sigue la documentación de Bluemix para desplegar la aplicación: https://console.ng.bluemix.net/docs/starters/install_cli.html

En el próximo post…

Utilizaré el servicio de Watson conversation para poner en funcionamiento mi bot. Veréis lo fácil que es conectar un servicio en Bluemix. Y se integra con slack.

¿Quieres ver más casos? ¡Echa un vistazo a la web para desarrolladores!

[autopilot_shortcode]