Envíe correos electrónicos automatizados usando el chatbot de Rasa

Rasa es un módulo de Python que se utiliza para crear chatbots de IA personalizados. Puede enviar fácilmente correos electrónicos automatizados a sus usuarios utilizando el chatbot rasa.

,

Diagrama de flujo:

Creando un chatbot Rasa

Primero, necesitará un chatbot rasa a través del cual pueda enviar correos electrónicos automatizados. 

Para instalar el módulo rasa, escriba el siguiente comando en la terminal (requiere Python 3.6, 3.7 o 3.8).

pip3 install -U pip
pip3 install rasa

Para crear un nuevo proyecto con datos de entrenamiento de ejemplo, escriba el siguiente comando en la terminal.

rasa init

Ahora su rasa chatbot está listo. Puede hablar con su chatbot usando el siguiente comando.

rasa shell

Ahora, en el siguiente paso, agregaremos más datos de entrenamiento a este chatbot.

Adición de intenciones, respuestas e historias

Ahora nuestro chatbot puede responder a las entradas básicas de los usuarios, pero tenemos que agregar más intentos, respuestas e historias para tomar la ID de correo electrónico y el nombre del usuario. Para obtener una explicación detallada de las intenciones, las respuestas y las historias, consulte este artículo .

Adición de intenciones:

Aquí necesitamos dos nuevas intenciones para el nombre y la identificación del correo electrónico. Agregue las siguientes líneas en su archivo nlu.yml.

- intent: email_id
  examples: |
    - [abc@gmail.com](email)
    - [abc@yourdomain](email)
    - @gmail.com
    - [xyz@gmail.com](email)
- intent: user_name
  examples: |
    - [YOURNAME](name)
    - [RANDOM_PERSON_NAME](name)

Aquí también estamos creando dos ranuras (correo electrónico y nombre) en las que almacenaremos los datos del usuario para que en su archivo domain.yml agregue las nuevas ranuras e intenciones.

Adición de respuestas:

Ahora tenemos que agregar dos nuevas respuestas a nuestro chatbot.

  • Para pedirle al usuario que ingrese el nombre.
  • Para pedirle al usuario que ingrese una identificación de correo electrónico.

Para esto, agregue las siguientes líneas en la sección de respuestas en el archivo domain.yml.

utter_askname:
- text: Please enter your name.

utter_askemail:
- text: Please enter email id to receive updates.

Agregar historias:

Ahora tenemos que agregar algunas historias relevantes en nuestro archivo stories.yml, así que elimine todas las historias en ese archivo y agregue las líneas a continuación (puede agregar más historias según sus necesidades).

- story: GeekforGeek story 
  steps:
  - intent: greet
  - action: utter_askname
  - intent: user_name
  - slot_was_set:
    - name: "YOURNAME"
  - action: utter_askemail
  - slot_was_set:
    - email: 'abc@gmail.com'
  - intent: email_id
  - action: action_email

Aquí ‘action_email’ no existe, por lo que debemos crear esta acción para enviar correos electrónicos, pero antes de eso, vaya al archivo endpoints.yml y elimine los comentarios de las líneas a continuación.

action_endpoint:
  url: "http://localhost:5055/webhook"

Adición de una acción de correo electrónico personalizada

Ahora agregaremos una nueva clase en nuestro archivo actions.py para enviar correos electrónicos automatizados. Agregue los siguientes códigos en el archivo actions.py.

Python3

# Importing required modules
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
import smtplib
  
# Creating new class to send emails.
class ActionEmail(Action):
  
    def name(self) -> Text:
        
          # Name of the action
        return "action_email"
  
    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
  
        # Getting the data stored in the
        # slots and storing them in variables.
        user_name = tracker.get_slot("name")
        email_id = tracker.get_slot("email")
          
        # Code to send email
        # Creating connection using smtplib module
        s = smtplib.SMTP('smtp.gmail.com',587)
          
        # Making connection secured
        s.starttls() 
          
        # Authentication
        s.login("SENDER_EMAILID", "PASSWORD")
          
        # Message to be sent
        message = "Hello {} , This is a demo message".format(user_name)
          
        # Sending the mail
        s.sendmail("SENDER_EMAIL_ID",email_id, message)
          
        # Closing the connection
        s.quit()
          
        # Confirmation message
        dispatcher.utter_message(text="Email has been sent.")
        return []

Explicación: Primero importe el módulo rasa y smtplib. Luego, cree una clase de Python que devolverá una acción llamada ‘action_email’ y obtendrá el nombre de usuario y la identificación del correo electrónico de la ranura y los almacenará en variables separadas. Creando una conexión usando el método SMTP del módulo smtplib. Y luego haga que la conexión sea segura usando el método starttls() del módulo smtplib. Y luego inicie sesión en la cuenta de Gmail usando la función de inicio de sesión() que tomará la identificación y la contraseña del correo electrónico como parámetros. Almacenar el mensaje en una nueva variable llamada ‘mensaje’. Y luego envíe el correo electrónico utilizando la función Sendmail que tomará la identificación del correo electrónico del remitente, la identificación del correo electrónico del destinatario y el mensaje como su parámetro. Luego cierre la conexión usando la función quit().

También debe permitir el acceso a aplicaciones menos seguras en su cuenta de Gmail.

Inicie sesión en su cuenta de Gmail y vaya a «Administrar su cuenta de Google».

Luego haga clic en la pestaña «Seguridad».

Luego active el «Acceso a aplicaciones menos seguras»:

Después de esto, agregue las siguientes líneas en el archivo domain.yml:

actions:
- action_email

Ahora que todo está listo solo nos queda entrenar a nuestro chatbot. Para este tipo, el siguiente comando está en la terminal:

rasa train

Una vez completada la capacitación, puede hablar con su chatbot escribiendo los siguientes comandos en la terminal. Para ejecutar el servidor de acciones:

rasa run actions

Para ejecutar el modelo entrenado:

rasa shell

Producción:

Salida de vídeo:

Publicación traducida automáticamente

Artículo escrito por imranalam21510 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *