Integración con APIs de terceros

Este artículo presenta un ejemplo de creación de un bot que trabaja con la API interna de Wilfire (envía y recibe información)

Puedes crear bots que interactúen con otros recursos mediante API. Por ejemplo, los bots pueden responder a solicitudes con la capacidad de comprobar si es posible crear una cita para una fecha determinada, o encontrar un producto en una tienda en línea.

Cómo manejar una API de terceros usando como ejemplo DaData

Tomemos consejos de API de https://dadata.ru/api/suggest/address arrow-up-rightcomo ejemplo

circle-info

Lee atentamente la documentación de las APIs de terceros

Abre tu proyecto en Salebot y abre la configuración avanzada en la configuración de un bloque; allí debes cambiar el tipo de solicitud a POST-json.

En el campo “Solicitud URL” introduce la siguiente URL: https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/addressarrow-up-right

En el campo “Encabezado de la solicitud” escribe el encabezado en formato JSON:

{ "Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + token }

En el campo “Parámetros JSON” coloca en la propia solicitud - { "query": "#{CurrencyType}" }

Para obtener los resultados también necesitarás completar la pestaña “Valores almacenados”.

A continuación se muestra un ejemplo de la solicitud:

Cómo guardar valores de variables

No todos lo entienden al instante, hasta que lo intentas tú mismo.

Para empezar, escribe #{custom_answer} en el campo de respuesta. (La variable #{custom_answer} contiene la respuesta obtenida del servidor que se mencionó en el campo “URL para una respuesta del servidor”)

Lanza el bloque con la solicitud para enviar la solicitud y obtener una respuesta. Debes analizar la respuesta y configurar el acceso a las variables en ella. Para ello, necesitas trabajar con la pestaña “Valores almacenados”.

Veamos un ejemplo para entender mejor el proceso.

Como resultado de nuestra solicitud #{custom_answer} llegó una respuesta con el formato:

{"suggestions": [{"value": "Libra esterlina", "unrestricted_value": "Libra esterlina", "data": {"code": "826", "strcode": "GBP", "name": "Libra esterlina", "country": "Reino Unido"}}]}

Ahora escribamos en el campo “Valores almacenados” nuestro VALOR->VARIABLE

suggestions|0|value->CurrencyType; suggestions|0|data|code->CurrencyDigCode; suggestions|0|data|strcode->CurrencyStrCode; suggestions|0|data|country->CurrencyCountry

suggestions - la clave del array [{"value": "Libra esterlina", "unrestricted_value": "Libra esterlina", "data": {"code": "826", "strcode": "GBP", "name": "Libra esterlina", "country": "Reino Unido"}}]

suggestions|0 - la clave del primer elemento del array {"value": "Libra esterlina", "unrestricted_value": "Libra esterlina", "data": {"code": "826", "strcode": "GBP", "name": "Libra esterlina", "country": "Reino Unido"}}

suggestions|0|value - la clave del valor “Libra esterlina”

La clave más larga en este JSON:

suggestions|0|data|strcode - la clave del valor “GBP”

circle-check
circle-info

Es necesario repetir toda la anidación. Para mayor comodidad puedes visualizar JSON en una aplicación JSON-viewer.

Los niveles de anidación se separan con líneas verticales. Así que necesitas enumerar todas las claves separadas por la línea para llegar al valor.

circle-info

Si hay un array en JSON, entonces en lugar de la clave necesitas indicar el número del elemento empezando desde 0.

Separa las frases de obtención de variables con el símbolo de punto y coma (;). Las frases constan del enlace a los datos en la respuesta y del nombre de la variable en la que guardarlos, que se separan con los símbolos -> (guion + signo mayor que).

La consulta de búsqueda es, en cierto modo, una ruta en JSON hacia el valor necesario.

Desarrollar API para bots

Para desarrollar una API, necesitarás un hosting en el que se base. Si no tienes uno o no eres un experto en programación, entonces puedes ponerte en contacto con nosotros y desarrollaremos la API para tu bot y la alojaremos en la nuestra. El hosting en sí es gratuito, solo pagarás por el desarrollo.

Pero por ahora, un poco de teoría.

El bot admite las GET y POST solicitudes, estos son los principales tipos que se utilizan en la mayoría de las APIs públicas.

GET es una solicitud que ocurre al hacer clic en el enlace o al abrir el enlace en el navegador. Los parámetros en una solicitud de este tipo se transfieren a las solicitudes URL.

La sintaxis de los parámetros transferidos: después de la URL hay un signo de interrogación (?) y luego cada parámetro se separa con el símbolo ampersand (&). Un parámetro consta del nombre y su valor después del signo igual (=). Un ejemplo de una URL con un parámetro:

Aquí puedes ver que se comparte un parámetro llamado “search_query” y que su valor es “queen live aid”. El ‘+’ aquí representa el espacio entre las palabras; cuando trabajes con el software de edición puedes simplemente dejar los espacios: el bot lo cambiará por sí mismo.

POST es un tipo de solicitud que se envía al completar un formulario en un sitio web, la mayoría de las veces. La solicitud transfiere los parámetros en el cuerpo; por supuesto, pueden compartirse de la misma manera que GET, pero rara vez se hace así. El parámetro en el cuerpo puede estar en formato JSON o como clave-valor. Como clave-valor, los parámetros se comparten en formularios; el formato JSON es el que se usa con más frecuencia para API.

Encabezado de la solicitud. Cada solicitud puede tener un encabezado/título añadido. En él se escriben con mayor frecuencia el formato de los datos compartidos y las claves de acceso. Normalmente dejamos esta pestaña vacía, pero en ocasiones raras es necesario introducir el Token de la API o el tipo de solicitud “Content-type”: “application/json”.

JSON - (Notación de Objetos de JavaScript) es un formato abierto de archivo y un formato de intercambio de datos que utiliza texto legible por humanos para almacenar y transmitir objetos de datos que consisten en pares atributo-valor y matrices. Para trabajar con la API en bots tienes que conocer este formato; todo se basa en él.

Antes de continuar, lee los siguientes artículos:

https://www.json.org/json-en.html arrow-up-right https://developer.mozilla.org/en-US/docs/learn/javascript/objects/jsonarrow-up-right

Y también intenta crear tu propio archivo JSON en este sitio:

https://jsoneditoronline.orgarrow-up-right

Práctica

Los bloques y las condiciones pueden responder a solicitudes. Las solicitudes de condición se crean para entender en el sitio si el diálogo puede seguir un determinado camino o no. La solicitud en este caso ocurre cada vez que se comprueba la condición del camino. Las solicitudes de los bloques, por el contrario, solo se ejecutan cuando ocurre el paso al bloque.

Antes de crear una solicitud necesitas elegir su tipo:

POST-data y POST-json se diferencian por el método de transferencia de parámetros mencionado anteriormente (formato JSON o como clave-valor). Si eliges JSON, entonces los parámetros solo pueden transferirse en la solicitud. Se abre un campo adicional para el post: parámetros POST-JSON. ¡Importante! Los parámetros deben escribirse únicamente en formato JSON; el bot solo funciona así.

La respuesta del servidor puede analizarse y guardarse en las variables.

circle-info

Solo puedes procesar la respuesta si está en formato JSON.

Las variables guardadas se escriben en el último envío no completado; si el envío se transfiere a través de un bloque rojo, las variables se anulan. Así que si necesitas guardar los datos, debes transferir las variables a través del bloque amarillo.

Por cierto, puedes ver lo que el bot ha escrito en las variables en la sección Leads:

Transferencia de datos no como una línea

Por defecto, el valor de la variable viene en formato #{} pero luego viene como una línea. Para que la variable se transfiera como un número, necesitas desactivar la comprobación del formato de los parámetros post-json.

Entonces puedes simplemente indicar el nombre de la variable, como {"key": #{variable_name}}, variable_name es la variable, así que sin usar corchetes.

circle-exclamation

Última actualización