Resumen

Construir un chatbot inteligente que haga cálculos en tiempo real y consuma servicios externos como un traductor automático es más accesible de lo que parece. Watson Assistant permite crear cotizaciones dinámicas, enviar imágenes como respuesta y conectar webhooks para integrar APIs externas, todo desde el flujo de diálogo sin necesidad de un backend independiente.

¿Cómo crear cotizaciones dinámicas con variables en Watson Assistant?

Dentro del nodo de diálogo, es posible realizar operaciones matemáticas directamente en la respuesta del asistente. Para lograrlo se utilizan las llaves angulares y signos de expresión <? ?>, que permiten ejecutar cálculos y manipular variables dentro del flujo conversacional [0:30].

El proceso es sencillo:

  • Se define una variable, por ejemplo número, que almacena la cantidad que el usuario solicita.
  • Dentro de la respuesta, se multiplica esa variable por el precio unitario del servicio.
  • El resultado se muestra de forma dinámica junto con la unidad monetaria.

Por ejemplo, si un usuario escribe "Quiero cuatro tours a Chichén Itzá", el asistente calcula automáticamente 4 × 1000 y responde: "La cotización es de 4000 pesos" [1:15]. Esta multiplicación dinámica se resuelve sin código externo, aprovechando las expresiones integradas de Watson Assistant.

¿Se pueden enviar imágenes como respuesta del asistente?

Sí. En las opciones de personalización de la respuesta, además de texto, opciones y pausas, existe la opción de enviar imágenes [1:40]. Solo se necesita la URL de la imagen, que puede obtenerse desde cualquier fuente pública. Al guardarla en el nodo correspondiente, el asistente la envía cuando el usuario activa esa intención.

¿Qué es un webhook y cómo se configura en Watson Assistant?

Un webhook es un mecanismo que permite llamar a elementos externos al ambiente del asistente, basándose en eventos internos [2:30]. Cuando el flujo de diálogo llega a un nodo específico, se dispara una petición HTTP hacia un endpoint externo.

Para configurarlo se necesitan tres elementos:

  • La URL del servicio al que se hará la llamada.
  • Los headers requeridos por el servicio, como el content type (application/json) y parámetros específicos como el model ID.
  • La autorización, generalmente un API key que se obtiene desde las credenciales del servicio en IBM Cloud.

La configuración se realiza desde la sección de Options en el panel izquierdo del diálogo, dentro del apartado Webhooks [2:50].

¿Cómo conectar Watson Language Translator como servicio externo?

El ejemplo práctico utiliza el servicio Language Translator de IBM Cloud [3:20]. Después de crearlo desde el catálogo con el plan Lite, se copian las credenciales y la URL base, a la cual se le agrega la versión del API (/v3/translate) y el parámetro de versión.

Dentro del flujo de diálogo, el nodo de traducción funciona así:

  • Un nodo padre detecta la intención "traducir" y pregunta: "¿Qué texto quieres traducir?".
  • Un nodo hijo con condición true se ejecuta siempre después de recibir la respuesta del usuario.
  • En ese nodo hijo se activa el webhook y se envían los parámetros necesarios.

El parámetro clave es text, cuyo valor se obtiene con la expresión input.text [6:15], que captura exactamente lo que el usuario escribió. El model ID (es-en para español a inglés) se envía como parámetro adicional en el body de la petición, no en los headers.

¿Cómo acceder a la respuesta del webhook y mostrar solo la traducción?

El resultado del webhook se almacena en la variable de contexto webhook_result_1 [7:30]. Esta variable contiene un objeto JSON completo. Para extraer únicamente el texto traducido, se debe recorrer la estructura del objeto usando notación de punto y acceso a arreglos:

<? $webhook_result_1.translations[0].translation ?>
  • translations es el arreglo que contiene los resultados.
  • [0] accede a la primera posición del arreglo.
  • translation es la propiedad con el texto final traducido.

Al probarlo con la frase "Me gusta viajar", el asistente responde correctamente: "I like to travel" [8:20].

¿Qué elementos componen un flujo completo en Watson Assistant?

Los componentes fundamentales que se han trabajado son:

  • Entidades: representan los datos específicos que el usuario menciona.
  • Intenciones: identifican la acción que el usuario desea realizar.
  • Nodos de diálogo: estructuran el flujo con condicionales basadas en entidades e intenciones.
  • Respuestas personalizadas: incluyen texto dinámico con cálculos, imágenes y llamadas a servicios externos mediante webhooks.

Ahora es tu turno de replicar esta implementación con tu propio caso de uso. Puedes conectar el webhook no solo con Language Translator, sino con cualquier API que necesites. ¿Qué servicio externo integrarías a tu asistente?