ComenzarEmpieza gratis

Perfecciona tu búsqueda

Ahora vas a crear un bot que permita a las personas usuarias añadir filtros de forma incremental, por si no especifican todas sus preferencias en un solo mensaje.

Para hacerlo, inicializa un diccionario vacío params fuera de tu función respond() (en lugar de dentro de la función, como en el ejercicio anterior). Tu función respond() recibirá este diccionario como argumento.

Este ejercicio forma parte del curso

Creación de chatbots en Python

Ver curso

Instrucciones del ejercicio

  • Define una función respond() que acepte dos argumentos —un message y un diccionario params— y que devuelva dos resultados: el mensaje para enviar al usuario y el diccionario params actualizado.
  • Extrae "entities" del message usando el método .parse() del interpreter, exactamente como hiciste en el ejercicio anterior.
  • Encuentra los hoteles que coincidan con params usando tu función find_hotels().
  • Inicializa el diccionario params fuera de la función respond() y pulsa "Enviar respuesta" para pasar los mensajes al bot.

Ejercicio interactivo práctico

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

# Define a respond function, taking the message and existing params as input
def ____(____, ____):
    # Extract the entities
    entities = ____
    # Fill the dictionary with entities
    for ent in entities:
        params[ent["entity"]] = str(ent["value"])

    # Find the hotels
    results = ____
    names = [r[0] for r in results]
    n = min(len(results), 3)
    # Return the appropriate response
    return responses[n].format(*names), params

# Initialize params dictionary
params = ____

# Pass the messages to the bot
for message in ["I want an expensive hotel", "in the north of town"]:
    print("USER: {}".format(message))
    response, params = respond(message, params)
    print("BOT: {}".format(response))
Editar y ejecutar código