Step-by-step
-
Crear Workspace
 Crear un nuevo workspace y nombrarlo ropademoda.mx Asegurarse de seleccionar el idioma Español.
-
Utilizar intenciones pre-entrenadas
Las intenciones consisten en acciones que el usuario desea llevar a cabo. Crear una nueva intención dando clic en Browse content catalog. Watson Assistant cuenta con intenciones previamente entrenadas para temas genéricos. En este caso vamos a aprovechar el paquete de intenciones General, para contar con las intenciones de saludar y conocer las capacidades del bot.
-
Eliminar las intenciones no utilizadas
El paquete de intenciones que acabamos de incorporar a nuestro workspace cuenta con varias que no vamos a utilizar en el ejercicio. Si seleccionamos las casillas de las intenciones se habilitará el botón Eliminar. Únicamente utilizaremos las intenciones #General_Agent_Capabilities, #General_Greetings y #General_Human_or_Bot
Â
-
Crear una intención nueva
En este paso se entrena a Watson con una intención desde 0. Para ello hay que dar un nombre descriptivo a la intención, describir brevemente en qué consiste y dar ejemplos de usuario. Mientras más ejemplos de usuario mucho mejor será la confianza con la que Watson clasificará las preguntas del usuario.
Â
-
Entidades de sistema
Para facilitarnos más aún el entrenamiento, Watson Assistant también cuenta con entidades preentrenadas (llamadas System Entities), sin embargo están desactivadas por default. Vamos a activar el uso de las entidades sys-date y sys-number que permitirán al bot entender fechas y números respectivamente.
Â
-
Entrenar a Watson con Entidades
Siempre es posible crear entidades de manera individual a través de la interfaz visual, sin embargo, resulta muy cómodo hacerlo de forma masiva a través de un archivo CSV, el archivo tiene que estar codificado bajo UTF-8. Importar las entidades que permitirán al bot entender las categorÃas de ropa que vende nuestra empresa, utilizar el archivo de ejemplo previamente preparado. Nótese que al momento de importar entidades, se describe la estructura que debe tener un CSV para poder ser utilizado.
-
Agregar un Nodo al Diálogo
Un nodo consiste en un conjunto formado por una condición, una respuesta (ya sea en texto o en variables de contexto que se describen más adelante) y una acción (esperar a que el usuario escriba de nuevo, saltar a otro nodo y evaluar la condición, ó, saltar a otro nodo y enviar la respuesta que tenga configurada dicho nodo).
Agregar un nodo debajo del nodo Bienvenida, y utilizar como condición la intención #General_Greetings. Agregar las respuestas apropiadas para cuando el usuario salude a nuestro asistente
Vamos a agregar también nodos para enseñarle a Watson cómo comportarse cuando el usuario pregunte si es un robot #General_Human_or_Bot y para cuando el usuario pregunte qué puede hacer nuestro asistente #General_Agent_Capabilities
-
Responder con Variables de Contexto
Vamos a crear un nuevo nodo con la intención #precio_producto (esta te toca entrenarla por tu cuenta) para que cuando el usuario pregunte por precios, nuestro bot se conecte a una base de datos y le muestre promociones especÃficas para la categorÃa de productos que está buscando.Â
Nótese que estamos creando dos nodos: Cotizar e Identifica CategorÃa que es un nodo hijo de Cotizar. En el segundo estamos haciendo uso de dos funcionalidades nuevas:
- Múltiples condiciones: (@bottom or @exteriores or @joyerÃa or @top) lo que significa que este nodo se activa si el asistente detecta que el usuario está hablando de cualquiera de nuestras categorÃas de productos
- Múltiples respuestas: lo que vamos a hacer es configurar variables de contexto para decirle a nuestra aplicación qué está buscando el usuario. Vamos a configurar 2 variables de contexto para cada categorÃa: bandera_cotizar activada en true para decirle a nuestra app que estamos buscando precios y categoria_producto para que nuestra app pueda ir a la base de datos a buscar las promociones para esa categorÃa. Para configurar el contexto de cada una de las 4 lÃneas de respuesta, dar clic en el Ãcono de configuración representado por un Engrane
En la imagen anterior pueden encontrar que hay dos formas de configurar las variables de context, utilizando el editor en JSON o manipulando directamente la respuesta de Watson, ó a traves del editor de contexto que nos proporciona una forma visual de hacerlo
-
Recibir información a través de una variable de contexto
Una vez que Watson indicó a nuestra aplicación que necesita ir a buscar una promoción para una categorÃa determinada, nuestra app deberá llamar a Watson y enviarle la respuesta a través de una variable de contexto. Más adelante se mostrará el código para conseguirlo. Nuestra aplicación contará entonces con un nodo adicional llamado Mostrar Promociones, que será un nodo hijo de Identifica CategorÃa, en el cual, Watson tomará el valor que nuestra aplicación le mande como promoción, y la enviará al usuario.
Nótese que en el texto de respuesta, se incluyen las variables de contexto $categoria_producto (cuyo valor se configuró en el nodo Identifica Categoria) y $promociones cuyo valor será configurado por la aplicación al llamar a Watson
-
Agregar contenido a la conversación de nuestro Asistente
Con el fin de mostrar cómo agregar contenidos a través de la conversación entre nuestro asistente y el usuario, vamos a agregar un nodo adicional que a través de una variable de contexto le indique a nuestra aplicación que debe mostrar un mapa, cuando el usuario pregunte por la intención #ubicacion_tiendas
-
Configurar web app
Los servicios de Watson se encuentran protegidos para evitar el uso por alguien no autorizado, por lo cual, en nuestra app vamos a configurar las credenciales (usuario, contrasea e identificador del workspace) para que podamos invocar desde nuestra web app a nuestro asistente entrenado.Â
Â
Estas credenciales las colocaremos en el archivo app.js en la lÃnea 13
Â
Â
-
Publicar o ejecutar localmente
Para ejecutar localmente, abrir la terminal de comandos, entrar a la carpeta donde se encuentra la aplicación a través de un comando cd <direccion de la carpeta>, instalar las dependencias utilizando npm install y posteriormente ejecutar npm start
Para publicar la app en IBM Cloud, se puede editar el archivo manifest.yml para cambiar el nombre que tendrá la app en IBM Cloud. Posterormente, en la terminal de comandos, iniciar sesión en la CLI de Cloud Foundry con el comando ibmcloud login -a api.ng.bluemix.net, posteriormente ibmcloud target –cf. Entrar a la carpeta donde se encuentra la aplicació a través de un comando cd <direccion de la carpeta>, y posteriormente ejecutar ibmcloud cf push.Â
Al preguntarle a Watson por la dirección o ubicación de oficinas mostrará un mapa en el chat y cuando le preguntemos por cotización para pantalones, nos mostrará el texto que configuramos en la API que simulamos en el código de nuestra aplicación.
-
Código del mapa y API
A continuación se muestra el código con el cual se embebe el mapa, asà como la simulación de una llamada a una API con un parámetro de búsqueda (en este caso es externa, pero la funcionalidad es similar a si la API fuera externa)
-
Desplegar en FB Messenger, Twilio y Slack
En el midleware botkit encontrarán un kit ya armado para desplegar su asistente virtual en messegner, twilio (sms) y slack.
Para FB messenger, les recomiendo echar un vistazo a la carpeta samples/multibot y en particular revisar el archivo bot-facebook.js, donde podrán gestionar la respuesta que manda Watson a los usuarios de Messenger, de tal manera que puedan agregar contenidos como botones, imágenes y más.
En esta liga encuentran la documentación de la API de FB Messenger donde se explica todos los contenidos que se pueden incluir https://developers.facebook.com/docs/messenger-platform/send-messages/buttonsÂ
Tengo duda con la parte de precios, al momento de probar la parte de preguntarle sobre precios, el asistente regresa respuesta de que no sabe que le preguntas.
Congratulations!!