Acerca de las cookies de este sitio Nuestros sitios web necesitan algunas cookies para funcionar correctamente (necesarias). Además, se pueden utilizar otras cookies con su consentimiento para analizar el uso del sitio, para mejorar la experiencia del usuario y para publicidad. Para obtener más información, consulte sus opciones de. Al visitar nuestro sitio web, acepta que procesemos la información tal y como se describe en ladeclaración de privacidad de IBM. Para facilitar la navegación, sus preferencias de cookies se compartirán entre los dominios web de IBM que se muestran aquí.
Creación de un diálogo complejo
En esta guía de aprendizaje, creará un diálogo para un asistente que ayuda a los usuarios a realizar consultas sobre un restaurante ficticio llamado Truck Stop Gourmand.
Objetivos de aprendizaje
Cuando termine la guía de aprendizaje, aprenderá a:
- Planificar un diálogo.
- Definir intenciones personalizadas.
- Añada nodos de diálogo que puedan manejar sus intenciones.
- Añada entidades para que sus respuestas sean más específicas.
- Añada una entidad de patrón y utilícela en el diálogo para buscar patrones en la entrada de usuario.
- Establecer y hacer referencia a variables de contexto.
Duración
Esta guía de aprendizaje tarda aproximadamente de 2 a 3 horas en completarse.
Requisito previo
Antes de empezar, complete la Guía de aprendizaje de iniciación al diálogo.
Utilice el diálogo que ha creado y añada nodos al diálogo simple que ha creado como parte del ejercicio de iniciación.
Planificar el diálogo
Está construyendo un asistente para un restaurante que se llama Truck Stop Gourmand que tiene una ubicación y un próspero negocio de pastelería. Desea que el asistente sencillo responda preguntas sobre el restaurante y su menú y pueda cancelar pedidos de repostería de los clientes. Por lo tanto, tiene que crear intenciones que manejen consultas relacionadas con los siguientes temas:
- Información sobre el restaurante
- Detalles del menú
- Cancelaciones de pedidos
Empiece creando intenciones que representen estos asuntos y, a continuación, cree un diálogo que responda a las preguntas del usuario sobre ellos.
Responder preguntas sobre el restaurante
Añada una intención que reconozca cuándo los clientes pidan detalles sobre el propio restaurante. Una intención es la finalidad u objetivo que la entrada del usuario expresa. La intención #General_About_You
que se proporciona con
el catálogo de contenido General sirve una función similar, pero sus ejemplos de usuario se centran en consultas sobre el asistente, no sobre la empresa que utiliza el asistente para ayudar a sus clientes. Por lo tanto, añade su propia
intención.
Adición de la intención #about_restaurant
-
En la página Intenciones, pulse Crear intención.
-
Añada el siguiente nombre de intención y, a continuación, pulse Crear intención:
about_restaurant
Se añade la intención #about_restaurant . Se añade un prefijo de signo de número (
#
) al nombre de la intención para etiquetarlo como una intención. Este convenio de denominación ayuda a reconocer a las intenciones. Todavía no tiene expresiones de usuario de ejemplo que estén asociadas con él. -
En el campo Añadir ejemplos de usuario, especifique las expresiones siguientes:
Tell me about the restaurant i want to know about you who are the restaurant owners and what is their philosophy? What's your story? Where do you source your produce from? Who is your head chef and what is the chef's background? How many locations do you have? do you cater or host functions on site? Do you deliver? Are you open for breakfast?
-
Pulse la flecha Cerrar
para terminar de añadir la intención
#reservation
y sus expresiones de ejemplo.
Ha añadido una intención y ha proporcionado ejemplos de expresiones que los usuarios reales pueden especificar para activar esta intención.
Adición de un nodo de diálogo que se activa mediante la intención #about_restaurant
Añada un nodo de diálogo que reconozca cuándo la entrada de usuario se correlaciona con la intención que ha creado en el paso anterior, lo que significa que su condición comprueba si su asistente ha reconocido la intención #about_restaurant
en la entrada del usuario.
-
Pulse Diálogo para abrir el árbol de diálogo.
-
Busque el nodo #General_Greetings en el árbol de diálogo.
Añadirá un nodo que compruebe si hay preguntas sobre el menú después de este nodo de bienvenida inicial para que refleje el flujo que se puede esperar encontrarse en una conversación normal. Por ejemplo,
Hello.
entoncesTell me about yourself.
-
Pulse el icono de opciones Node
en el nodo Greet customers y, a continuación, seleccione Añadir nodo a continuación.
-
Empiece a escribir
#about_restaurant
en el campo Si el asistente reconoce y, a continuación, selecciónelo en la lista.Este nodo se utiliza si la entrada de usuario coincide con la intención
#about_restaurant
. -
En El asistente responde, especifique la respuesta de texto:
Truck Stop Gourmand is the brainchild of Gloria and Fred Smith. What started out as a food truck in 2004 has expanded into a thriving restaurant. We now have one brick-and-mortar restaurant in downtown Portland. The bigger kitchen brought with it new chefs, but each one is faithful to the philosophy that made the Smith food truck so popular to begin with: deliver fresh, local produce in inventive and delicious ways. Join us for lunch or dinner seven days a week. Or order a cake from our bakery.
Añada también una imagen a la respuesta.
-
Pulse Añadir tipo de respuesta.
-
Seleccione Imagen en la lista desplegable. En el campo Origen de imagen, añada
https://www.ibmlearningcenter.com/wp-content/uploads/2018/02/IBM-Learning-Center-Food4.jpg
. -
Mueva hacia arriba el tipo de respuesta de imagen, para que se muestre en la respuesta antes de que se visualice el texto. Pulse la flecha Subir
para reordenar los dos tipos de respuesta.
Imagen antes de respuesta y respuesta de texto -
Pulse el icono de cierre
para cerrar la vista de edición de nodo.
Prueba del nodo de diálogo #about_restaurant
Pruebe la intención comprobando si las expresiones de usuario que son similares, pero no iguales, a los ejemplos que ha añadido han entrenado a su asistente para que reconozca la entrada con una intención #about_restaurant
.
-
Pulse Pruébelo.
-
Tipo
I want to learn more about your restaurant.
Su asistente indica que se reconoce la intención
#about_restaurant
y devuelve una respuesta con la imagen y el texto que ha especificado para el nodo de diálogo.Inténtelo
Ha añadido una intención personalizada y un nodo de diálogo que sabe cómo manejarla.
La intención de #about_restaurant
está diseñada para reconocer varias preguntas generales sobre el restaurante. Ha añadido un solo nodo para capturar este tipo de preguntas. La respuesta es larga, pero es una sola sentencia que
potencialmente puede responder a todas las preguntas sobre los siguientes temas:
- Propietarios de restaurantes
- Historial de restaurantes
- philosophy
- Número de sitios
- Días de funcionamiento
- Comidas servidas
- El restaurante hace pasteles a la orden
Para preguntas generales, una única respuesta general es adecuada.
Gestionar pedidos de repostería
Los clientes pueden realizar pedidos en persona, por teléfono o utilizando el formulario de pedido en el sitio web. Una vez realizado el pedido, los usuarios pueden cancelarlo a través del asistente virtual. En primer lugar, defina una entidad que pueda reconocer números de pedido. A continuación, añada una intención que reconozca cuándo los usuarios desean cancelar un pedido de repostería.
Adición de una entidad de patrón de número de pedido
Desea que el asistente reconozca los números de pedido, por lo que debe crear una entidad de patrón para reconocer el formato exclusivo que utiliza el restaurante para identificar sus pedidos. La sintaxis de los números de pedido que utiliza
la panadería del restaurante son dos letras mayúsculas seguidas de 5 números. Por ejemplo, YR34663
. Añada una entidad que pueda reconocer este patrón de caracteres.
-
Pulse Mis entidades para abrir la página Entidades.
-
Pulse Crear entidad.
-
Escriba
order_number
en el campo de nombre de entidad. -
Pulse Crear entidad.
-
Añada
order_syntax
al campo Nombre de valor. -
Pulse la flecha abajo situada junto a Sinónimos para cambiar el tipo a Patrones.
Patrón -
Añada la siguiente expresión regular al campo Patrón:
[A-Z]{2}\d{5}
-
Pulse Añadir valor.
-
Pulse la flecha Cerrar
para terminar de añadir la entidad
@order_number
.
Adición de una intención para cancelar un pedido
-
En la página Intenciones, pulse Crear intención.
-
Añada el siguiente nombre de intención y, a continuación, pulse Crear intención:
cancel_order
-
En el campo Añadir ejemplos de usuario, especifique las expresiones siguientes:
I want to cancel my cake order I need to cancel an order I just placed Can I cancel my cake order? I'd like to cancel my order There's been a change. I need to cancel my bakery order. please cancel the birthday cake order I placed last week The party theme changed; we don't need a cake anymore that order i placed, i need to cancel it.
-
Pulse la flecha Cerrar
para terminar de añadir la entidad
#cancel_order
.
Adición de una intención yes
Antes de completar una tarea en nombre del usuario, debe obtener la confirmación de que está realizando la acción adecuada. Añada una intención #yes al diálogo que pueda reconocer cuándo un usuario está de acuerdo con lo que propone su asistente.
-
En la página Intenciones, pulse Crear intención.
-
Añada el siguiente nombre de intención y, a continuación, pulse Crear intención:
yes
-
En el campo Añadir ejemplos de usuario, especifique las expresiones siguientes:
Yes Correct Please do. You've got it right. Please do that. that is correct. That's right yeah Yup Yes, I'd like to go ahead with that.
-
Pulse la flecha Cerrar
para terminar de añadir la intención
#yes
.
Adición de nodos de diálogo que puedan gestionar solicitudes para cancelar un pedido
Ahora, añada un nodo de diálogo que pueda manejar las solicitudes para cancelar un pedido de repostería.
-
Pulse Diálogo para abrir el árbol de diálogo.
-
Busque el nodo #menu en el árbol de diálogo.
-
Pulse el icono de opciones Node
en el nodo #menu y, a continuación, seleccione Añadir nodo a continuación.
-
Empiece a escribir
#cancel_order
en el campo Si el asistente reconoce de este nodo y, a continuación, selecciónelo en la lista. -
En El asistente responde, especifique la respuesta de texto:
If the pickup time is more than 48 hours from now, you can cancel your order.
Antes de poder cancelar el pedido, debe conocer el número de pedido. Es posible que el usuario especifique el número de pedido en la solicitud original. Por lo tanto, para no pedirle de nuevo el número de pedido, compruebe si hay un número con el patrón de número de pedido en la entrada original. Para ello, defina una variable de contexto que habría guardado el número de pedido si se hubiera especificado.
-
En El asistente responde, pulse el icono Opciones
y, a continuación, seleccione Abrir editor de contexto.
-
Establezca el contexto utilizando estos valores:
Detalles de la variable de contexto de número de pedido Variable Valor $ordernumber
<? @order_number.literal ?>
El valor de variable de contexto (
<? @order_number.literal ?>
) es una expresión SpEL que captura el número que el usuario especifica que coincide con el patrón definido por la entidad de patrón @order_number . Lo guarda en la variable$ordernumber
. -
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Ahora, añada nodos hijo que soliciten el número de pedido u obtengan la confirmación del usuario de que desea cancelar un pedido con el número de pedido detectado.
-
Pulse el icono de opciones Node
en el nodo #cancel_order y, a continuación, seleccione Añadir nodo hijo.
-
Añada una etiqueta al nodo para distinguirlo de otros nodos hijo que está añadiendo. En el campo Especificar nombre de nodo, añada
Ask for order number
. -
En Si el asistente reconoce, especifique
true
como condición. -
En El asistente responde, especifique la respuesta de texto:
What is the order number?
-
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Ahora añada otro nodo hijo que informe al usuario de que está cancelando el pedido.
-
Pulse el icono de opciones Node
en el nodo Solicitar número de pedido y, a continuación, seleccione Añadir nodo hijo.
-
En Si el asistente reconoce, especifique
@order_number
como condición. -
En El asistente responde, pulse el icono Opciones
y, a continuación, seleccione Abrir editor de contexto.
-
Establezca el contexto utilizando estos valores:
Detalles de la variable de contexto de número de pedido Variable Valor $ordernumber
<? @order_number.literal ?>
-
En El asistente responde, especifique la respuesta de texto:
OK. The order $ordernumber is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
-
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Añada otro nodo para capturar el caso en que un usuario proporciona un número, pero no es un número de pedido válido.
-
Pulse el icono de opciones Node
en el nodo @order_number y, a continuación, seleccione Añadir nodo a continuación.
-
En Si el asistente reconoce, especifique
true
como condición. -
En El asistente responde, especifique la respuesta de texto:
I need the order number to cancel the order for you. If you don't know the order number, please call us to cancel over the phone.
-
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Añada un nodo después del nodo de solicitud de cancelación de pedido inicial que responda en el caso de que el usuario especifique el número de pedido en la solicitud inicial, para no tener que volver a preguntárselo.
-
Pulse el icono de opciones Node
en el nodo #cancel_order y, a continuación, seleccione Añadir nodo hijo.
-
Añada una etiqueta al nodo para distinguirlo de los otros nodos hijo. En el campo Especificar nombre de nodo, añada
Number provided
. -
En Si el asistente reconoce, especifique
@order_number
como condición. -
En El asistente responde, especifique la respuesta de texto:
Just to confirm, you want to cancel order $ordernumber?
-
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Debe añadir nodos hijo que comprueben la respuesta del usuario a la pregunta de confirmación.
-
Pulse el icono de opciones Node
en el nodo Número proporcionado y, a continuación, seleccione Añadir nodo hijo.
-
En Si el asistente reconoce, especifique
#yes
como condición. -
En El asistente responde, especifique la respuesta de texto:
OK. The order $ordernumber is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
-
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
-
Pulse el icono de opciones Node
en el nodo #yes y, a continuación, seleccione Añadir nodo a continuación.
-
En Si el asistente reconoce, especifique
true
como condición.
No añada una respuesta a El asistente responde. En su lugar, redirija a los usuarios a la rama que solicita los detalles del número de pedido que ha creado anteriormente.
-
En Entonces, el asistente debe elegir Ir a.
-
Seleccione el nodo Solicitar número de pedido.
-
Seleccione Si el asistente reconoce (condición).
Ir a -
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Forzar la conversación para evaluar los nodos hijo bajo el nodo #cancel_order en tiempo de ejecución.
-
Pulse para abrir el nodo
#cancel_order
en la vista de edición. -
En A continuación, el asistente debe seleccionar
Skip user input
. -
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Prueba de cancelación de pedidos
Pruebe si el asistente puede reconocer patrones de caracteres que coincidan con el patrón que se utiliza para los números de pedido de producto en la entrada de usuario.
-
Pulse Pruébelo.
-
Tipo
i want to cancel my order number TW12345.
Su asistente reconoce tanto la intención
#cancel_order
como la entidad@order_number
. Responde con,If the pickup time is more than 48 hours from now, you can cancel your order. Just to confirm, you want to cancel order TW12345?
. -
Escriba
Yes
.Su asistente reconoce la intención
#yes
y responde con,OK. The order TW12345 is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
.Inténtelo Ahora pruébelo en el caso de que no sepa el número de pedido.
-
Pulse Borrar en el panel "Pruébelo" para volver a empezar.
-
Tipo
I want to cancel my order.
Su asistente reconoce la intención
#cancel_order
y responde conIf the pickup time is more than 48 hours from now, you can cancel your order. What is the order number?
. -
Especifique
I don't know.
Su asistente responde con
I need the order number to cancel the order for you. If you don't know the order number, please call us to cancel over the phone.
.
Añadir nodos para aclarar el formato de número de pedido
Si realiza más pruebas, es posible que el diálogo no sea útil en escenarios en los que el usuario no recuerda el formato de número de pedido. Es posible que el usuario solo incluya los números o que escriba las letras pero olvide que deben ser mayúsculas. Por lo tanto, sería bueno ofrecerle una pista en estos casos, ¿correcto? Si desea ser amable, añada otro nodo al árbol de diálogo que compruebe los números en la entrada de usuario.
-
Pulse el icono de opciones Node
en el nodo @order_number y, a continuación, seleccione Añadir nodo a continuación.
-
En Si el asistente reconoce, especifique
input.text.find('\d')
como condición. -
En el campo de condición, añada
input.text.find('\d')
, que es una expresión SpEL que indica que si se encuentran uno o varios números en la entrada de usuario, se active esta respuesta. -
En El asistente responde, especifique la respuesta de texto:
The correct format for our order numbers is AAnnnnn. The A's represents 2 uppercase letters, and the n's represent 5 numbers. Do you have an order number in that format?
-
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
-
Pulse el icono de opciones Node
en el nodo input.text.find('\d') y, a continuación, seleccione Añadir nodo hijo.
-
En Si el asistente reconoce, especifique
true
como condición. -
Pulse Personalizar, establezca el conmutador Varias respuestas condicionadas en Activado y, a continuación, pulse Aplicar.
-
En ** Assistant responde, añada respuestas con las condiciones siguientes:
Detalles de condición Si el asistente reconoce El asistente responde A continuación, el asistente debe @order_number
OK. The order $ordernumber is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
Valor predeterminado para los valores de nodo true
I need the order number to cancel the order for you. If you don't know the order number, please call us to cancel over the phone.
Detalles de condición -
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Ahora, al probar, puede proporcionar un conjunto de números o una mezcla de números y texto como entrada, y el diálogo le recuerda el formato de número de orden correcto. Ha probado el diálogo, ha encontrado una debilidad en él y lo ha corregido.
Otra forma de abordar este tipo de escenario es añadir un nodo con ranuras. Consulte la guía de aprendizaje sobre Adición de un nodo con ranuras a un diálogo para obtener más información sobre el uso de ranuras.
Añadir el toque personal
Si el usuario muestra interés en el propio bot, desea que el asistente virtual detecte esa curiosidad y se comprometa con el usuario de una forma más personal. Es posible que recuerde la intención #General_About_You
, que se proporciona
con el catálogo de contenido General, que hemos considerado utilizar antes antes de añadir su propia intención #about_restaurant
personalizada. Se construye para reconocer tales preguntas del usuario. Añada un nodo que
esté condicionado por esta intención. En su respuesta, puede preguntar el nombre del usuario y guardarlo en una variable $username que se puede utilizar en cualquier otro lugar del diálogo, si está disponible.
Adición de un nodo que maneje preguntas sobre el bot
Añada un nodo de diálogo que pueda reconocer el interés del usuario en el bot y pueda responder.
-
Pulse Diálogo para abrir el árbol de diálogo.
-
Pulse el icono de opciones Node
en el nodo Bienvenido y, a continuación, seleccione Añadir nodo a continuación.
-
Empiece a escribir
#General_About_You
en el campo Si el asistente reconoce y, a continuación, selecciónelo en la lista. -
En El asistente responde, especifique la respuesta de texto:
I am a virtual assistant that is designed to answer your questions about the Truck Stop Gourmand restaurant. What should I call you?
-
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
-
Pulse el icono de opciones Node
en el nodo #General_About_You y, a continuación, seleccione Añadir nodo hijo.
-
En Si el asistente reconoce, especifique
true
como condición. -
En El asistente responde, especifique la respuesta de texto:
Hello, <? input.text ?>! It's lovely to meet you. How can I help you today?
Para capturar el nombre que proporciona el usuario, añada una variable de contexto al nodo.
-
En El asistente responde, pulse el menú de opciones
y seleccione Abrir editor de contexto.
-
Establezca el contexto utilizando estos valores:
Asignar Contexto Variable Valor $username
"<? input.text ?>"
El valor de variable de contexto (
<? input.text ?>
) es una expresión SpEL que captura el nombre de usuario tal como lo especifica el usuario y, a continuación, lo guarda en la variable de contexto$username
. -
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Si en tiempo de ejecución, el usuario desencadena este nodo y proporciona un nombre, registre el nombre del usuario. Si lo sabe, debe utilizarlo. Añada respuestas condicionales al nodo de diálogo de saludo que ha añadido anteriormente para incluir una respuesta condicional que utiliza el nombre de usuario, si se conoce.
Añada el nombre de usuario al saludo
Si sabe el nombre del usuario, debe incluirlo en el mensaje de saludo. Para ello, añada respuestas condicionales e incluya una variación del mensaje de bienvenida que incluya el nombre del usuario.
-
Busque el nodo Greet customers en el árbol de diálogo y pulse para abrirlo en la vista de edición.
-
Pulse Personalizar, establezca el conmutador Varias respuestas condicionadas en Activado y, a continuación, pulse Aplicar.
-
Pulse Añadir respuesta.
-
En Si el asistente reconoce, especifique
$username
. -
En Responder con, especifique una respuesta de texto:
Good day to you, $username!
-
Pulse la flecha Subir
para reordenar los dos tipos de respuesta.
Subir respuesta -
Pulse el icono Cerrar
para cerrar la vista de edición de nodo.
Prueba de la personalización
Pruebe si su asistente puede reconocer y guardar el nombre de un usuario y puede hacer referencia al usuario posteriormente.
-
Pulse Pruébelo.
-
Pulse Borrar para reiniciar la sesión de conversación.
-
Especifique
Who are you?
Su asistente reconoce la intención
#General_About_You
. Su respuesta termina con la pregunta,What should I call you?
. -
Especifique
Jane
.El asistente guarda
Jane
en la variable$username
y respondeHello, Jane! It's lovely to meet you. How can I help you today?
. -
Para probar el nodo
Greet customers
, especifiqueHello.
.Su asistente reconoce la intención
Greet customers
y dice,Good day to you, Jane!
. Utiliza la respuesta condicional que incluye el nombre del usuario porque la variable de contexto$username
contiene un valor en el momento en que se activa el nodo de saludo.
Puede añadir una respuesta condicional que condicione y que incluya el nombre del usuario para cualquier otra respuesta en la que la personalización añadiría valor a la conversación.
Resumen
Ha creado un diálogo más complejo que reacciona a las preguntas y solicitudes del cliente.