Este repositorio no se actualizará. El repositorio se mantendrá disponible en modo de solo lectura.
En este patrón de código, utilizaremos la función Watson Assistant Slots para crear un chatbot que acepte un pedido de pizza. La información necesaria, como el tamaño, el tipo y las opciones de ingredientes, se puede ingresar dentro de un nodo del Asistente, a diferencia de las versiones anteriores del Asistente.
Cuando el lector haya completado este patrón de código, comprenderá cómo:
NOTA : Este patrón de código se ha actualizado para incluir instrucciones para acceder a Watson Assistant que se ejecuta en IBM Cloud Pak for Data. Estas actualizaciones se pueden encontrar en las instrucciones específicas para implementar su aplicación localmente o implementar su aplicación en OpenShift en IBM Cloud. El principal cambio necesario es que su aplicación necesitará credenciales adicionales para acceder al clúster de IBM Cloud Pak for Data que aloja el servicio Watson Assistant.
Haga clic aquí para obtener más información sobre IBM Cloud Pak for Data.
NOTA : Este patrón de código utiliza la experiencia de Watson Assistant. Después del 8 de octubre de 2021, todas las instancias (no estándar) pueden cambiar entre las experiencias clásica y nueva de Watson Assistant yendo a la esquina superior derecha de la pantalla de Watson Assistant y haciendo clic en el icono Administrar . ubicado en la esquina superior derecha de la pantalla del Asistente. Haga clic en Cambiar a la experiencia clásica o haga clic en Cambiar a una nueva experiencia para alternar entre las dos.
Uso de Cloud Foundry en IBM Cloud | Utilizando el servicio Kubernetes de IBM Cloud |
---|---|
Haga clic en una de las opciones siguientes para obtener instrucciones sobre cómo implementar la aplicación.
El poder de Slots está en cómo reduce la cantidad de nodos necesarios para implementar la lógica en su Watson Assistant Dialog. Aquí hay un cuadro de diálogo de conversación parcial que utiliza el método anterior:
Y aquí hay un Diálogo más completo que usa ranuras, que pone toda la lógica en el Nodo Pizza ordering
.
Abra el cuadro de diálogo y echaremos un vistazo:
Cada espacio representa un campo que se completará en el chatbot: pizza_size
, pizza_type
y pizza_topings
. Si no están presentes, se le solicitará al usuario, comenzando desde arriba, hasta que todos se completen mediante la variable asociada ( $pizza_size
, $pizza_type
, etc.).
Haga clic en Configurar para agregar más funcionalidad:
Aquí, podemos agregar una respuesta para cuando este espacio esté lleno (Encontrado). La lógica se puede utilizar para un ingrediente:
o si se agrega más de un ingrediente:
1 ingrediente"" style="max-width: 100%;">
Hemos agregado lógica para abordar respuestas de sí o no a la pregunta "¿Algún aderezo adicional?":
Haga clic en los 3 círculos y elija Open JSON editor
para editar el json directamente:
Aquí, hemos establecido un valor vacío para el contexto: campo {"pizza_topings"}, de modo que podamos salir del ciclo llenando este espacio.
Finalmente, agregamos respuestas para una vez que todos los espacios estén llenos:
Comenzamos con el caso donde tenemos "pizza_toppings", detectando que el array tiene tamaño>0. Aquí, primero manejamos el caso en el que el espacio opcional "pizza_place" está lleno y luego manejamos el caso en el que no lo está.
Finalmente, agregamos un controlador para el caso en el que no se encuentran las respuestas del usuario a un mensaje. Agregamos un controlador para la intención "ayuda".
Tenemos un nodo de diálogo para manejar la intención #reset
que restablecerá todos los campos a null
:
Veamos una conversación de ejemplo y el json asociado. Con su Watson Pizzeria en funcionamiento, inicie un diálogo y comience diciéndole al Pizza Bot que quiere una pizza grande:
La 'Entrada del usuario' le muestra el campo "entrada"{"texto"}, así como el "contexto" que se utiliza principalmente para que el Asistente realice un seguimiento del estado interno. Desplácese hacia abajo hasta Watson Understands
y observe intents
:
Tenga en cuenta que se detecta la intención de "orden". La entidad "pizza_size" ahora es un espacio que está lleno. Todavía tenemos 2 espacios requeridos, "pizza_type" y "pizza_toppings". Se le solicitará al usuario hasta que se completen:
Ahora podemos ver que todos los espacios requeridos están llenos:
¿Y si quisiéramos decirle a Watson Pizzeria que queremos comer la pizza allí, en el restaurante? ¡Demasiado tarde! el espacio para "pizza_place" es opcional, por lo que no se le solicitará al usuario y, una vez que se llenen los espacios requeridos, salimos del nodo de diálogo "Pedido de pizza". El usuario debe completar primero los espacios opcionales. Escribe reset para empezar de nuevo y prueba esto añadiendo la frase "para comer allí...":
cf push
proporciona: FAILED Could not find service
Si le asigna a su servicio el nombre wcsi-conversation-service
, esto debería funcionar. Cuando usa cf push
, intenta vincularse a los servicios enumerados en manifest.yml
.
Entonces, hay 2 maneras de hacer que esto funcione:
NOTA: El botón
Deploy to IBM Cloud
resuelve este problema creando los servicios sobre la marcha (con los nombres correctos).
Este patrón de código tiene la licencia de software Apache, versión 2. Los objetos de código de terceros independientes invocados dentro de este patrón de código reciben licencia de sus respectivos proveedores de conformidad con sus propias licencias independientes. Las contribuciones están sujetas al Certificado de origen del desarrollador, versión 1.1 (DCO) y a la licencia de software Apache, versión 2.
Preguntas frecuentes sobre la licencia de software Apache (ASL)