Cómo conectar tu chatbot a una api externa

En esta guía te mostraremos cómo conectar tu chatbot chatcompose a una api externa.

La api que usaremos para conectar nuestro chatbot es la api de wikipedia para pedir extractos de artículos.
Puedes ver la documentación de la api de wikipedia aquí


Pasos para conectar tu chatbot a una API externa

1. Crear un componente de conexión api

Ingresa a tu cuenta chatcompose y navega hacia la sección Componentes (o Guiones)>Conexión Externa. Verás lo siguiente:

Aquí podrás seleccionar el tipo de api que implementarás. Para conectar con la api de wikipedia, vamos a elegir la api get.

Haces clic en crear y te llevará al asistente de creación del componente api. Para empezar, deberás darle un nombre identificador a tu componente, luego usaremos este identificador para instalar la conexión api en nuestro chatbot.

Vamos a llamar nuestro identificador "wikiextracto". Presionamos continuar. La nueva pantalla nos permitirá configurar las llamadas a la api.

La api de wikipedia nos permite hacer búsquedas dínamicas cambiando parámetros en la url, los cuáles debemos saber de antemano antes de hacer la llamada a la api

Por Ej:

https://es.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&exchars=175&redirects=1&formatversion=2&titles=TUPREGUNTAAQUÍ&origin=*

Hacemos la consulta en el placeholder TUPREGUNTAAQUÍ. Este parametro se lo podemos preguntar al usuario y luego lo usamos para hacer la llamada a la api.

Llenamos la configuración con los datos:

El campo "Pregunta que vas a hacer para obtener los datos que necesita la api {val1}" sirve para hacerle una pregunta al usuario acerca de lo que quiere buscar para ingresarlo en la api. Este valor luego lo ingresamos a la ruta de la api:

https://es.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&exchars=175&redirects=1&formatversion=2&titles={val1}&origin=*

De esta manera lo que el usuario escriba como respuesta será lo que se ingresa en la api, dentro del espacio {val1}.

Más de un parámetro

Si te das cuenta puedes ver, que ponemos la pregunta 2 (opcional) en blanco. Esta api no la requiere así que no la usaremos. La pregunta 2 puede servir para pedirle un segundo parámetro al usuario y usarlo en la api.

Algunas apis pueden ser configuradas con más de un parámetro, por ej en:

https://es.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&exchars=ELLARGOAQUÍ&redirects=1&formatversion=2&titles=TUPREGUNTAAQUÍ&origin=*

se le puede pedir también que tan largo quiere el extracto el usuario.

Una vez configurada la api, presionamos Próximo. La nueva pantalla te mostrará las opciones de Respuesta.

En este caso, vamos a agregar un mensaje adicional en la respuesta de la api. Este campo es opcional, así que lo puedes dejar en blanco.

Respuestas JSON

En caso que la respuesta de la api sea en json (la mayoría usa json) hacemos clic en "Es json". Algunas api responden en texto simple, en esos casos se puede dejar este checkbox desmarcado y se mostrará la respuesta de la api sin problemas.

Al hacer clic en "Es json" aparecerá la opción de definir la ruta json. El formato json es estructurado, por lo que podemos definir exactamente que valor de la respuesta en json queremos.


Una consulta a la api de wikipedia en

https://es.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&exchars=175&redirects=1&formatversion=2&titles=chatbot&origin=*
nos devolverá lo siguiente:

  {  
   "batchcomplete":true,
   "query":{  
      "normalized":[  
         {  
            "fromencoded":false,
            "from":"chatbot",
            "to":"Chatbot"
         }
      ],
      "redirects":[  
         {  
            "from":"Chatbot",
            "to":"Bot conversacional"
         }
      ],
      "pages":[  
         {  
            "pageid":369053,
            "ns":0,
            "title":"Bot conversacional",
            "extract":"Un bot de charla o bot conversacional es un programa que simula mantener una conversación con una persona al proveer respuestas automáticas a entradas hechas por el usuario. Habitualmente…"
         }
      ]
   }
}
  

Si es que te resulta díficil de ver, puedes navegar las respuestas json con esta herramienta http://jsonviewer.stack.hu/

De esta respuesta sólo queremos el campo "extract", así que escribimos la ruta hacia ese campo en json. Para este caso la ruta sería query.pages.0.extract. El cero se debe a que extract se encuentra dentro de un arreglo en la posición cero.

Después de completar la ruta, apretamos guardar. El asistente nos devolverá "LISTO!! El id de tu componente es: wikiextracto".

Ahora hemos creado nuestro primer componente api con ChatCompose.

IMPORTANTE: Algunas APIs no aceptarán llamadas desde un origen externo. Para habilitar cross origin configura tus response headers a "Access-Control-Allow-Origin: *".

2. Instalación del componente

Para instalar el componente en nuestro chatbot, puedes asignar el componene de con tu id (wikiextracto en este caso) para que aparezca al comienzo de la conversación con el chatbot en Configuración>General, en una página específica en Configuración>Páginas. Recuerda seleccionar "wikiextracto" de la lista como componente inicial.

También puedes asignar el componente de conexión api en la sección de Base de Datos. Allí puedes ponerlo como respuesta a una pregunta o comando específico, por ejemplo "búsqueda wikipedia".

Si ya sabes como crear guiones con componentes, también puedes asignar un componente api como parte de un guión más elaborado.

Puedes probar el componente haciendo clic en el chatbot a tu derecha

Servicio web

También puede llamar a servicios web sencillos mediante el componente de servicio web. Este componente llamará a una url y mostrará la respuesta en el formato apropiado (texto, archivo o url).

Para crear un componente de servicio web, seleccione Más> Servicio web dentro de la interfaz de creación de su script.

Esto abrirá la configuración del componente. Ingrese la url, el tipo de respuesta que desea mostrar (imagen, texto, url) y la ruta json, si corresponde.

Esta alternativa solo mostrará la respuesta de la url, el usuario no necesita ingresar ningún dato.

¿Te gustaría saber más?

Obtén más información