ComenzarEmpieza gratis

Relleno de formulario

A menudo querrás que tu bot guíe a los usuarios a través de una serie de pasos, como cuando hacen un pedido.

En este ejercicio, empezarás a construir un bot que permita a los usuarios pedir café. Pueden elegir entre dos tipos: colombiano y keniata. Si el usuario proporciona una entrada inesperada, tu bot lo gestionará de forma diferente según el punto del flujo en el que esté.

Tu trabajo aquí es identificar el estado adecuado y el siguiente estado en función de las intenciones y los mensajes de respuesta proporcionados. Por ejemplo, si la intención es "order", entonces el estado cambia de INIT a CHOOSE_COFFEE.

Ya tienes definida la función send_message(policy, state, message). Recibe la política, el estado actual y el mensaje como argumentos, y devuelve el nuevo estado como resultado. Además, una función interpret(message), similar a la que Alan describió en el vídeo, también está predefinida para ti.

Este ejercicio forma parte del curso

Creación de chatbots en Python

Ver curso

Instrucciones del ejercicio

  • Define tres estados: INIT con valor 0, CHOOSE_COFFEE con valor 1 y ORDERED con valor 2.
  • Crea un diccionario llamado policy con tuplas como claves y valores. Cada clave es una tupla que contiene un estado y una intención, y cada valor es una tupla que contiene el siguiente estado y el mensaje de respuesta. Los mensajes ya están rellenados. Tu tarea es completar los estados.
  • Crea una variable state con el valor INIT.
  • Para cada uno de los mensajes, llama a la función send_message() pasando policy, state y message.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Define the INIT state
____

# Define the CHOOSE_COFFEE state
____

# Define the ORDERED state
____

# Define the policy rules
policy = {
    (____, "order"): (____, "ok, Colombian or Kenyan?"),
    (INIT, "none"): (INIT, "I'm sorry - I'm not sure how to help you"),
    (____, "specify_coffee"): (____, "perfect, the beans are on their way!"),
    (____, "none"): (____, "I'm sorry - would you like Colombian or Kenyan?"),
}

# Create the list of messages
messages = [
    "I'd like to become a professional dancer",
    "well then I'd like to order some coffee",
    "my favourite animal is a zebra",
    "kenyan"
]

# Call send_message() for each message
state = ____
for message in messages:    
    state = ____
Editar y ejecutar código