CHATBOT-ZAPIER

Zapier es una de las maneras más fáciles de automatizar tus procesos internos. Zapier te permite enlazar varias aplicaciones de forma que puedas pasar información de una a la otra cuando se produza un cierto evento. Por ejemplo, puedes usar Zapier para enviar un tweet cada vez que publicas un nuevo post en tu web WordPress.

Los eventos y acciones que Zapier ofrece para cada plataforma individual son limitados con lo que, siempre que podamos, es mejor utilizar un soporte más “nativo” a las plataformas. Pero lo que sí que tiene Zapier es que tiene más conectores que nadie con lo que siempre es buena idea tenerlo disponible para llegar donde uno no puede.

Y así lo hacemos nosotros, hemos creado un conector entre Xatkit, nuestra plataforma de desarrollo de chatbots, y Zapier. Esto nos permite crear chatbots para cualquier plataforma que forme parte del catálogo Zapier (más de 1500 por ahora) y que todavía no tengamos en nuestro propio catálogo.

Para hacerlo nos aprovechamos del mecanismo interno de Zapier para crear flujos automatizados. En Zapier, los usuarios crean Zaps que són, simplificando, enlaces entre secuencias de herramientas. Estos Zaps los podemos disparar / lanzar externamente. Por ejemplo, como respuesta a una intención que exprese el usuario dentro de una conversación que esté teniendo con nuestro chatbot. Gracias a nuestra integración las más de 1000 plataformas de Zapier se pueden poner a hablar con los clientes.

Veamos como funciona esta integración con un ejemplo. Vamos a crear un SlackTrelloBot, un chatbot que escucha los canales de Slack y que bajo demanda crea automáticamente un apunte en Trello que sirva para recordar la conversación antes de que se pierda. Este bot se puede usar tanto como parte de conversaciones privadas como en canales publicos. En nuestro equipo lo usamos habitualmente para no olvidarnos de temas importantes que tendremos que procesar con más calma posteriormente.

Para seguir el tutorial necesitarás una cuenta en Zapier pero la versión gratis te servirá (Trello entra en el plan gratuïto de Zapier). También conviene que estés familiarizado con la creación de chatbots en Xatkit aunque si quieres usar otras plataformas, las ideas básicas seran las mismas.

En Xatkit, el chatbot estará en el directorio SlackTrelloBot (si lo prefieres, tienes el código completo en este repositorio) y estará compuesto por los siguientes tres ficheros:

  • SlackTrelloBot-Lib.intent: la librería con los posibles intents que tiene que reconocer el bot
  • SlackTrelloBot-Ex.execution: el modelo de ejecución que contiene la lógica conversacional. Aquí es donde nos encargaremos de llamar a Zapier en función de los intents que el chatbot identifique en la conversación.
  • SlackTrelloBot.properties: el archivo de propiedades con las credenciales y opciones de despliegue

Tabla de contenidos

Configuración de Zapier

Para crear la entrada en Trello, el bot SlackTrelloBot utilizará la integración de Zapier con Trello. Tenemos que crear un nuevo Zap que se encargará de interactuar con Trello y crear la Card ahí con los parámetros que le indiquemos.

Veamos como podemos crear este Zap desde el dashboard de Zapier. Primero de todo, clcia en Make a Zap!. A continuación cuando pregunte el “cuando debería ejecutarse el Zap”, en la ventana When this happens, selecciona Webhook by Zapie y luego Catch Hook en el menúChoose Trigger Event. Esto es lo que nos permitirá llamar a Zapier vía una petición REST que lanzaremos desde el chatbot.

Configuración para llamar a Zapier desde una aplicación externa

Dale a Continue, y toma nota del contenido del campo Custom Webhook URL, que usaremos luego en la configuración the Xatkit. Clica de nuevo en Continue. Ya estamos en el último paso donde simplemente Zapier te muestra ejemplos de como llamar al Zap que acabas decrear. Ignóralos víaSkip Test.

El siguiente paso es definir qué tiene exactamante que realizar el Zap, es decir qué acción tiene que ejecutar una vez lo llamemos vía el webhook que acabamos de definir. En la ventanaDo this ... busca Trello y escoge Create Card en el desplegable Choose Action Event . Zapier te preguntará en ese momento por tu datos de conexión con Trello para cargar los boards que tengas ya creados.

Navega al tab Customize Card, y rellena los campos Board y List dependiendo de donde quiereas que se cree la nueva tarjeta. Para el campo Name pon: {{name}}, que es la forma de decir a Zapier que el nombre vendrá dado como parámetro en el JSON que le pasemos durante la llamada.

Al final de este proceso deberías ver algo parecido a lo que te mostramos a continuación:

Dalea continuar y sáltate el test de Send Data. ¡Ya tenemos el Zap listo!

Configuración de Slack

Podríamos llamar el Zap anterior desde cualquier tipo de chatbot, pero en este ejemplo queremos poder hacerlo desde un chatbot que esté desplegado en Slack, con lo cuál hay que configurar también el bot SlackTrelloBot para que esté escuchando en tu workspace de Slack. Puedes ver como configurar Slack en este artículo. Cuando lo tengas, rellena el archivo SlackTrelloBot.properties con la información siguiente:

xatkit.slack.token = <Your Slack app token>
xatkit.slack.listen_mentions_on_group_channel = true

Elxatkit.slack.token corresponde al token que usará Xatkit para enviar y recibir mensajes de Slack. La propiedad xatkit.slack.listen_mentions_on_group_channel permite que el bot sólo actúe cuando se le menciona explícitamente en un canal (usando el comando @bot) para evitar lanzarlo accidentalmente.

Crea el chatbot que sabe “hablar” con Zapier

Si has llegado hasta aquí, ya has hecho lo más difícil. Con nuestra plataforma Zapier, interactuar con Zapier desde tu chatbot no tiene ningún secreto.

Veamos el código de un bot que tenga un único Intent “Crear Card” y que se encargue de llamar al Zap anterior cada vez que detecta que el usuario está expresando esa intención.

Empecemos creando el intent que recojerá también el título que queremos dar a la nueva card en Trello.

Library SlackTrelloBotLibrary   intent NewCard {   inputs {   "Create a card CardName"   "Create a card named CardName"   "Create a card with title CardName"   }   creates context Card {   sets parameter name from fragment "CardName" (entity any)   }   }

Y luego la definición de la acción a ejecutar en respuesta al intent anterior

import library "SlackTrelloBot/SlackTrelloBot-Lib.xmi"   import platform "ZapierPlatform"   import platform "SlackPlatform" use provider SlackPlatform.SlackIntentProvider on intent NewCard do  action ZapierPlatform.PostAction(zapierEndpoint: <Your Zapier Endpoint> , jsonBody: "{ 'name' : ' " + context(Card).get("name") + " '}") action SlackPlatform.Reply(message : "Done!")

Fijaros que lo único que hacemos es llamar al Zap anterior pasando como parámetro un documento JSON con el parámetro name rellenado con el valor que el chatbot ha recogido en la conversación con el usuario. Donde pone “Your Zapier Endpoint” tenéis que poner el valor Custom Webhook URL que os hemos pedido que os guardarais antes (mirad en el dashboard si os habéis olvidado😉 ).

Prueba el chatbot

Puedes lanzar el bot utilizando Xatkit en modo local con estas instrucciones.

Una vez Xatkit esté ejecutándose, escribe un mensaje directo al bot con el siguiente mensaje: Create a card Test, y comprueba que una nueva tarjeta con nombre Test se ha creado en el board de trello que habías elegido durante la creación del Zap.

También puedes invitar al bot a un canal de Slack y escribir el mensaje: @<Your Bot Name> Create a card Test, donde <Your Bot Name> es el nombre de tu bot.

¡Crea tu propio bot!

Una vez visto como puedes interactuar con Zapier desde un chatbot, eres libre de imaginar qué tipo de integraciones con plataformas externas te gustaría poder ejecutar como parte de tu nuevo proyecto de chatbots. ¡Sorpréndenos!

Por Jordi Cabot

Soy Profesor de Investigación ICREA en la Universitat Oberta de Catalunya (UOC) y co-fundador de Xatkit una plataforma open source para la creación de chatbots especializada en chatbots para eCommerce.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *