Saltar a contenido

Ejemplo Didáctico

El siguiente tutorial le permite la construcción de un chatbot basado en el contexto de un establecimiento de pizza:

Definición del Contexto

Un establecimiento de pizza desea implementar un chatbot que realice las siguientes especificaciones:

  • Consultar un pedido realizado
  • Ofrecer un Menú de Promociones de Pizzas y Sánduches
  • Ofrecer adicionales como Gaseosa, Queso Extra.
  • Generar Pedido

Acciones Generales

Es necesario la definición de todos aquellas habilidades (skills) que complementan al contexto.

  • Saludos
  • Agradecimiento
  • Salir
  • Insultos

Canales de implementación

  • Facebook-Messenger
  • WhatsApp

Implementación en Yanibot

La solución a los requerimientos es la siguiente:

  • La respuesta a la primera iteración con el bot es mostrar el menú con los principales servicios de la empresa: Ver pedido y Promociones.
  • En Ver pedido, se solicitará un número de pedido para verificar el estado del mismo.
  • En Promociones, se muestra las dos opciones: pizza y sánduches.
    • Si el usuario selecciona alguno de los dos, se le preguntará si desea adicionales.
    • Independientemente si selecciona adicionales (Gaseosa/ Queso extra) o no los selecciona, el siguiente paso será solicitar la dirección, nombre y cédula para generar un pedido.
    • En la generación de pedido deberá especificarse el pedido realizado y los datos ingresados del usuario.
    • Con todos estos datos ingresados, se le envía el usuario el link de la plataforma de pago.

flujo

General

  1. Dentro el menú Bots , seleccionamos en Nuevo Bot
  2. Ingresar un nombre al Bot: pizza
  3. Duración inactividad: 30 (30 min que el bot esperará para recibir una interacción con el usuario. Excedido este tiempo el bot, "olvidará" la conversación actual, y deberá iniciar una nueva conversación)
  4. Bot principal: activado (Es el bot principal)
  5. Descripción: "bot para un establecimiento de pizza."
  6. Guardar

Flujo

Una vez guardado se habilita el cuadro del diagrama del flujo donde empezaremos creando los skills. Teniendo en cuenta el flujo conversacional requerido, se inicia creando el skill Saludo.

Skill Saludo

  1. +Skill
  2. En Nombre asignamos el nombre del skill, en este caso Saludo
  3. Tipo: Fallback, pues siempre que el bot identifique alguna expresión relacionada a este bot el skill saludo se mostrará.
  4. Yanibot tiene precargadas expresiones para este tipo de skill. En Frases de entrenamiento seleccionamos saludos para cargar estas expresiones.
Acciones

En acciones definiremos la respuesta a este skill. acciones

  1. En este caso, se enviará directamente un menú con los dos requerimientos principales en forma de Botón.
  2. Texto: Se especifica ${name!} para tomar el nombre del cliente
  3. Los dos botones serán tipo postback, pues dependiendo de la selección se redirige al identificador asociado #ver# o #promos#. El mismo identificador deberá ser incluido en la lista de expresiones de un nuevo skill para que Yanibot lo asocie.
  4. Marcaremos los canales en los que se implementará. En este caso Facebook y WhatsApp.

Info

Se debe tener presente que WhatsApp muestra solo texto; es decir si en las acciones del skill la conforman botones, carrousel, card, las opciones se mostrará en forma de lista numerada.

Resultado

Resultado de la interacción en Facebook. resultado_saludo

Skill Promociones

  • Tipo: Fallback
  • Expresiones: se incluye las siguientes:

    • #promos#: identificador incluido en el skill saludo. Con esto Yanibot conoce que debe dirigir a este skill al seleccionar promociones.

    • Ver promociones:texto que identifica a esta opción.

Acciones

Como respuesta a este skill debe devolver las opciones que el establecimiento ofrece dentro de promociones: pizza y sanduches.

Estas opciones serán devueltas en forma de botones.

  1. Acción tipo botón.
  2. Texto que específica la acción que debe realizarse
  3. Agregamos dos botones:
    • El primero con título Pizza, tipo Postback con identificador pizza
    • El segundo con título Sánduches, tipo Postback con identificador sanduches seleccion
Resultado

resultado_promociones

Skill Pizza

  • Tipo: Business, pues el bot permitirá el acceso a este skill solo si se ingreso anteriormente al menú promociones.
  • Expresiones:
    pizza, identificador asociado en el skill promociones para identificar la asociación hacia este skill.
Acciones

Las opciones que se devuelven será en forma de carrousel, donde en cada card se especificará los tipos de pizzas: Hawaina y Jamón.

  1. Tipo de respuesta: carrousel.
  2. Agregar Card para cada opción.

    1. Asignamos la url de una imagen(no es obligatorio, pero si en el primer card se asigna los siguientes también deberán contener)
    2. Título que representa la imagen.
    3. Agregar un botón tipo postback.

    pizza

    Memoria

    Al final de la orden se requiere mostrar al cliente la opción seleccionada.

Para ello se debe guardar el texto ingresado en memoria, para el bot lo recuerde.

  1. Crearemos una nueva entidad llamada all, la cual nos va a permitir guardar el texto ingresado por el cliente.
    • Marcamos Usar Regex para ingresar la Expresión regular . * (Permite tomar todo el texto ingresado pore el cliente sin tomar en cuenta el número de caracteres que ingrese.) entidad
  2. En memoria crearemos la condición que nos permita guardar el texto ingresado por el cliente en una variable comprendida por el bot.
    • Si all.text as pedido

      Info

      Yanibot construye condiciones con las entidades creadas.

      La variable pedido podrá ser referida en cualquier momento del flujo llamando de la siguiente manera ${pedido!}

      Resultado

      resultado_pizza

      Skill Adicionales

      • Tipo: Business.
      • Expresiones: a este skill únicamente se podrá acceder después de que se selecciona una opción del menú, por lo tanto no necesita de expresiones de entrada.
      Acciones
      1. Tipo de respuesta card.
      2. Con las opciones ingresadas en requerimientos Gaseosa - Queso - Ninguna
      Resultado

      resultado_adicionales

      Skill Dirección.

      • Tipo: Business
      • Expresiones: a este skill se podrá ingresar solo si ya se paso por el skill adicionales
      Acciones

      Solicitaremos la dirección de envio del pedido en forma de texto.

      Memoria

      El texto ingresado que representa la dirección del cliente será guardado en la variable direccion dentro del entorno de Yanibot.

Skill inDatos

  • Tipo: Business
  • Expresiones: ninguna
Acciones

Solicitaremos el ingreso del número de cédula en forma de texto.

Requerimientos

Yanibot le permite controlar que la cédula ingresada sea correcta a través de la entidad general Cédula propiedad raw. La condición a armar quedará.

requerimiento

En el caso que Yanibot detecta que no se ingresó una cédula correcta, se debe emitir un mensaje al usuario sugiriendo que vuelva a ingresar nuevamente una cédula correcta.

respuesta

Con el fin de que nuestro bot no sea tan robótico se puede incluir varios textos que representen la misma idea.

Memoria

Como necesitar utilizar este dato vamos a guardarlo en memoria, con la variable cliente.

Resultado

resultado_final

Skill doPedido

  • Tipo: Business
  • Expresiones : ninguna
Acciones
  • Webhook que permite guardar el pedido generado en un sistema externo.
  • Un texto donde se le muestra al cliente ${name!} , el pedido ${pedido!} realizado y la dirección ${direccion!} a la que debe ser enviada.
  • Finalmente en un cuadro de texto el link para cancelar el valor del pedido.