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
Instrucciones del ejercicio
- Define una función
respond()que acepte dos argumentos —unmessagey un diccionarioparams— y que devuelva dos resultados: el mensaje para enviar al usuario y el diccionarioparamsactualizado. - Extrae
"entities"delmessageusando el método.parse()delinterpreter, exactamente como hiciste en el ejercicio anterior. - Encuentra los hoteles que coincidan con
paramsusando tu funciónfind_hotels(). - Inicializa el diccionario
paramsfuera de la funciónrespond()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))