Crear Bot_15

Crear la tarea de conversión de moneda con Twilio CLI. Pte. 5

Un poco más de teoría: Pasar los datos recopilados

Hablemos ahora de cómo interactuó nuestro bot con la API externa que realizó la conversión de moneda.

El objeto JSON “Memory “define cómo las respuestas recopiladas se pasan a la API “rates”.

Recordemos la definición de nuestra tarea de conversión de moneda, observa los números y mira la descripción:

  1. cur_from: estamos definiendo un nuevo campo a recolectar. El tipo de este campo es Twilio.CURRENCYel cual le informa a nuestro bot que las respuestas sean probablmente nombres de moneda y debe intentar normalizarlas automáticamente en símbolos de moneda. “Currency” es solo uno de los muchos tipos de campos integrados de autopilot.
  2. cur_to: estamos definiendo un segundo campo de moneda que será recopilado: “cur_to”.
  3. uri: recordar que el “Uniform Resource Identifier” nos ayuda a identificar recursos en internet y en nuestro caso estamos definiendo una URI a la que se deben enviar los resultados.

Cuando se invoca la tarea “convert_currencies”, nuestro bot consultará la definición de esta tarea que le indica que realice la acción de recopilación, en este punto recopilará las respuestas a las dos preguntas del usuario. Cuando nuestro bot haga esto, almacenará las respuestas en su memoria.

Puedes ver esto muy bien en el simulador web si repites la simulación que hicimos en el capítulo anterior y abres la pestaña Memoria:

Este objeto JSON de memoria es lo que luego se pasa (entre otras cosas) a la aplicación externa especificada en el uri on_complete.

El uri que estamos usando apunta a una función Twilio que, como ya hemos visto, se ve así:

const got = require('got');
exports.handler = function (context, event, callback) {
  const answers = JSON.parse(event.Memory).twilio.collected_data.convert_currencies.answers;
  const cur_from = answers.cur_from.answer.toUpperCase();
  const cur_to = answers.cur_to.answer.toUpperCase();
  got(`https://api.ratesapi.io/api/latest?symbols=${cur_to}&base=${cur_from}`,
    { json: true }).then(response => {
      const rate = response.body.rates[cur_to];
      callback(null, {
        "actions": [
          { say: `The current conversion rate from ${cur_from} to ${cur_to} is ${rate.toFixed(2)}.` }
        ]
      });
    }).catch(error => {
      callback(null, {
        "actions": [
          { say: `Sorry, a problem occurred: ${error.response.body.error}` }
        ]
      });
    });
};

La explicación a continuación:

La línea 3 es donde ocurre el análisis del objeto de memoria recibido. Primero analizamos el JSON recibido a través de event.Memory y luego obtenemos el objeto twilio.collected_data.

Luego accedemos a su objeto convert_currencies (el nombre de la acción de recopilación según la definición de la tarea) y su objeto de respuestas.

Las líneas 4 a 5 recuperan los campos cur_from y cur_to y normalizan sus valores a mayúsculas (esto es para manejar casos en los que el usuario especifica el código de moneda directamente, pero en minúsculas, por ejemplo, “usd”, ya que la API las necesita en mayúsculas.

Las líneas 6 a 8 usan la API de tarifas para recuperar el tipo de cambio entre esas dos monedas.

Las líneas 9-13 componen la respuesta y la devuelven como una acción “say” de autopilot. Esta respuesta se envía de vuelta a nuestro bot donde se ejecutará la acción.

Canales

Puedes configurar Autopilot desde el primero momento con los siguientes canales:

  • Programmable Voice
  • Programmable SMS
  • Programmable Chat
  • Whatsapp
  • Facebook Messenger
  • Slack
  • Alexa
  • Google Assistant

En nuestro caso, vamos a configurar el canal de voz y de SMS. Para ello dirígete a la sección Canales de tu asistente y elige “Programmable Voice” y “Programmable Messaging”:

Anota la URL de “Programmable Voice”:

Anota la URL de “Programmable Messaging”:

Después nos vamos a pone number ->active pone numbers y pegamos la URL de voz en la sección “A CALL COMES IN”:

Y repetimos la misma operación para SMS dando clic en “SAVE”:

Estás listo. Ahora intenta enviar mensajes de texto o llamar a su número de teléfono de Twilio y tu bot debería responder.

Eso ha sido todo el viaje que hemos realizado para construir nuestro chatbot, espero que les haya gustado y no olviden comentar.

¡Hasta la próxima!

Leave a Reply