Manejo de conversaciones con ConversationHandler en Python: Creación de bots y asistentes.

Manejo de conversaciones con ConversationHandler en Python: Creación de bots y asistentes

Introducción

En el desarrollo de bots y asistentes conversacionales, es importante poder manejar las conversaciones de una manera eficiente y efectiva. Esto es lo que hace el módulo ConversationHandler de la biblioteca rasa.

ConversationHandler es una clase que permite definir un flujo de conversación paso a paso. Cada paso del flujo se conoce como un handler. Un handler es una función que se ejecuta cuando la conversación llega a un punto determinado.

Creando un ConversationHandler

Para crear un ConversationHandler, debemos importar la clase ConversationHandler y definir una instancia de la clase.

Python
from rasa.shared.core.handlers import ConversationHandler

# Creamos una instancia de la clase ConversationHandler
conversation_handler = ConversationHandler()

Definiendo handlers

Un handler es una función que se ejecuta cuando la conversación llega a un punto determinado. Los handlers pueden tomar dos parámetros:

  • user_utterance: El mensaje del usuario.
  • tracker: Un objeto que contiene información sobre la conversación.

El handler debe devolver un objeto Action. El objeto Action indica qué acción debe realizar el bot a continuación.

Python
# Creamos un handler que responde al mensaje "Hola"
def greet(user_utterance, tracker):
    return Action("utter_greet")

# Creamos un handler que responde al mensaje "Adiós"
def goodbye(user_utterance, tracker):
    return Action("utter_goodbye")

Agregando handlers a un ConversationHandler

Para agregar un handler a un ConversationHandler, debemos llamar al método add_handler(). El método add_handler() toma dos parámetros:

  • pattern: Una expresión regular que coincide con los mensajes del usuario.
  • handler: El handler que se ejecutará cuando la conversación coincida con la expresión regular.
Python
# Agregamos los handlers a nuestro ConversationHandler
conversation_handler.add_handler(greet, pattern="hola")
conversation_handler.add_handler(goodbye, pattern="adiós")

Ejecutando un ConversationHandler

Para ejecutar un ConversationHandler, debemos llamar al método handle(). El método handle() toma un mensaje del usuario como parámetro.

Python
# Obtenemos un mensaje del usuario
user_utterance = "Hola"

# Ejecutamos el ConversationHandler
conversation_handler.handle(user_utterance)

Ejemplo completo

El siguiente ejemplo muestra cómo crear un ConversationHandler simple que responde al mensaje «Hola» con el mensaje «Hola, ¿en qué puedo ayudarte?» y al mensaje «Adiós» con el mensaje «Adiós, ¡hasta luego!».

Python
from rasa.shared.core.handlers import ConversationHandler

# Creamos un ConversationHandler
conversation_handler = ConversationHandler()

# Creamos un handler que responde al mensaje "Hola"
def greet(user_utterance, tracker):
    return Action("utter_greet")

# Creamos un handler que responde al mensaje "Adiós"
def goodbye(user_utterance, tracker):
    return Action("utter_goodbye")

# Agregamos los handlers a nuestro ConversationHandler
conversation_handler.add_handler(greet, pattern="hola")
conversation_handler.add_handler(goodbye, pattern="adiós")

# Obtenemos un mensaje del usuario
user_utterance = "Hola"

# Ejecutamos el ConversationHandler
conversation_handler.handle(user_utterance)

Salida:

-- Bot start --
User: Hola
Bot: Hola, ¿en qué puedo ayudarte?
-- Bot end --

Conclusión

ConversationHandler es una herramienta poderosa que permite crear bots y asistentes conversacionales de manera eficiente y efectiva. Con ConversationHandler, podemos definir un flujo de conversación paso a paso que el bot seguirá para interactuar con los usuarios.