Botpress + Make: Simplificando Flujos Complejos en Bots

Plataformas 13 de ago. de 2024

Quiero compartir ustedes un ejemplo de cómo la integración de Make con Botpress puede facilitar la manera en que los bots pueden manejar flujos complejos, haciendo posible que las tareas rutinarias se realicen con mayor rapidez y menos errores.

¿Por qué Botpress?

Botpress es una poderosa herramienta para construir para bots que permite a los desarrolladores construir y manejar bots de manera eficiente. Su capacidad para integrarse con otras herramientas amplía sus funcionalidades, haciendo que sea una opción preferida para quienes buscan personalizar experiencias de usuario a gran escala.

¿Por qué Make?

Make es una plataforma muy fácil de usar, que permite automatizar procesos conectando aplicaciones y servicios sin necesidad de escribir código. Cuando se combina con Botpress, permite a los bots ejecutar flujos de trabajo complejos y manejar datos en tiempo real con facilidad.

Ejemplo Práctico: Manejo de Reclamos y Sucursales

Veremos a continuación como utilizar Make y Botpress en un bot que nos permite ingresar un reclamo o consultar un listado de nuestras sucursales, ambas funcionalidades serán resueltas en flujos que utilizan Make. Puedes descargar aquí la plantilla de este bot en Botpress. El objetivo de este ejemplo es que aprendas a utilizar Make para resolver flujos desde Botpress.

Flujo Botpress + Make, en un ejemplo para resolver información de sucurales y reclamos.

En la imagen podemos ver el flujo implementado en Botpress, tanto el flujo RECLAMO como el flujo SUCURSALES, son resueltos enviando un webhook desde Botpress a Make. En el caso de RECLAMO, simulamos el ingreso de un reclamo enviando un correo al usuario, en el caso de SUCURSALES consultamos una hoja en Google Sheets con la información de las sucursales.

Flujo en Make que resuelve las integraciones solicitadas desde Botpress

Veamos el detalle de estos flujos:

  1. Flujo de Reclamos:
    • El usuario ingresa un reclamo a través del bot en Botpress.
    • El bot envía los datos (nombre, email, y reclamo) a Make usando un webhook.
    • Make procesa esta información y automáticamente puede generar un email para confirmar la recepción del reclamo o incluso agregar el reclamo a un sistema de seguimiento de tickets.
  2. Visualización de Sucursales:
    • Un usuario solicita información sobre las sucursales.
    • El bot consulta a Make, que a su vez recupera información de un Google Sheet.
    • La información es devuelta al bot y presentada al usuario, mostrando ubicaciones y horarios de forma dinámica.

A continuación les comparto el código que utilizo en Botpress para realizar la integración a Make:

Este primer código me permite enviar la información a make, el webhook de make se configura en la variable de ambiente env.MakeWebhook, a esta función enviamos dos variables: data es un objeto (json) que puede tener varias variables que necesitamos en nuestro flujo, y flowIdenfier, una variable que envío a Make para que sepa resolver que función necesita llamar:

/**
 * Envía la solicitud a Make y obtiene la respuesta.
 * @param {Object|string} data - El objeto que contiene los datos a enviar o la pregunta como string.
 * @param {string} flowIdentifier - El identificador del flujo.
 * @returns {Promise<string>} - Retorna la respuesta obtenida del webhook.
 */
async function sendToMake(data, flowIdentifier) {
  try {
    // Si data es un string, lo convierte en un objeto
    const payload = typeof data === 'string' ? { question: data } : data
    payload.flowIdentifier = flowIdentifier

    const response = await fetch(`${env.MakeWebhook}`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(payload)
    })

    if (response.ok) {
      const responseBody = await response.text() // Asumiendo que la respuesta es un texto plano
      return responseBody
    } else {
      console.error('Error enviando a Make:', response.status, response.statusText)
      return 'Hubo un error al enviar la solicitud. Por favor, intenta nuevamente más tarde.'
    }
  } catch (error) {
    console.error('Error enviando a Make:', error)
    return 'Hubo un error al enviar la solicitud. Por favor, intenta nuevamente más tarde.'
  }
}

Luego utilizamos esta función para enviar la información a Make del flujo que necesitamos activar, SUCURSALES o RECLAMO:

/**
 * Solicita la lista de sucursales a Make
 * @returns {Promise<Object>} - Promesa que resuelve la lista de sucursales
 */

async function verSucursales() {
  // Estructura el objeto data con los datos necesarios
  const data = {
  }

  try {
    // Llama a la función sendToMake con el objeto data y el identificador de flujo "verSucursales"
    const respuesta = await sendToMake(data, 'verSucursales')
    return respuesta
  } catch (error) {
    return { error: 'Hubo un error al obtemer el listado de sucursales. Por favor, intenta nuevamente más tarde.' }
  }
}

workflow.sucursales = await verSucursales();

Código Flujo SUCURSALES

/**
 * Envía un reclamo a Make
 * @param {string} reclamo - reclamo a enviar a Make dentro del objeto data.
 * @param {string} nombre - nombre de quien genera el reclamo, a enviar a Make dentro del objeto data.
 * @param {string} email - email de quien genera el reclamo, a enviar a Make dentro del objeto data.
 * @returns {Promise<Object>} - Promesa que resuelve el reclamo
 */
 
async function generarReclamo(reclamo, nombre, email) {
  // Estructura el objeto data con los datos necesarios
  const data = {
    reclamo,
    nombre,
    email
  }

  try {
    // Llama a la función sendToMake con el objeto data y el identificador de flujo "generarReclamo"
    const respuesta = await sendToMake(data, 'generarReclamo')
    return { respuesta }
  } catch (error) {
    console.error('Error generando el reclamo:', error)
    return { error: 'Hubo un error al generar el reclamo. Por favor, intenta nuevamente más tarde.' }
  }
}

generarReclamo(workflow.reclamo, user.Name.first + " " + user.Name.last, user.Email) 

Código Flujo RECLAMO

Podemos visualizar en el código que se llama al webhook en Make con la variable flowIdenfier con el valor del flujo que corresponda, y en data podemos ingresar todas las variables que necesitaremos en Make para resolver la información. En Make el flujo parte con un Router que consulta por el valor de la variable y luego vienen las integraciones necesarias para resolver el flujo:

En Make vemos el valor de flowIdentifier para ver que camino seguimos.

Beneficios de esta Integración

  • Automatización de Flujos e Integraciones: Reduce la necesidad de intervención manual, ya que no necesitamos tocar el código del bot para resolver o mejorar/cambiar integraciones.
  • Flexibilidad: Una vez resuelto el flujo del bot no necesitamos programar y resolver las integraciones con código en Botpress, enviamos estos flujos a Make donde resolvemos con sus capacidades flujos que pueden ser muy complejos.
  • Escalabilidad: Maneja un alto volumen de interacciones y datos sin afectar el rendimiento del bot.

Conclusión

La integración de Make con Botpress es un claro ejemplo de cómo las herramientas correctas pueden facilitar la gestión de flujos complejos en bots. Esta sinergia no solo mejora la experiencia del usuario final sino que también potencia las capacidades operativas de cualquier negocio.

¡En Mente Digital, seguimos comprometidos con la búsqueda de soluciones innovadoras que transformen la interacción digital! Para más detalles sobre cómo implementar soluciones similares, no dudes en visitar nuestro sitio y suscribirte a nuestra newsletter.

Etiquetas

Juan Pablo Traverso

Profesional con más de 25 años de experiencias en diseño, creación y crecimiento de plataformas digitales, principalmente en el área de servicios financieros & ecommerce.