El autor del material, cuya traducción publicamos hoy, dice que las personas modernas, cuyas vidas están llenas de trabajo, a menudo se olvidan de escribir mensajes a sus amigos y familiares. Él, mirando cómo sus padres enviaban citas inspiradoras y consejos útiles de salud a WhatsApp todas las mañanas, decidió que era hora de corresponder.
En esta guía, escribiremos un script simple de Python diseñado para enviar mensajes de WhatsApp. En el curso del trabajo, utilizaremos el paquete Twilio Python. Para organizar el lanzamiento diario del script en un momento dado, colocaremos el código en la nube.

Un enfoque para resolver este problema es usar el paquete Selenium Python y la versión web de WhatsApp en lugar del servicio Twilio, que, después de agotar las posibilidades de la oferta gratuita, debe pagarse. Pero dado que trabajar con la versión web de WhatsApp requiere un escaneo periódico del código QR usando un teléfono móvil, no funcionará automatizar el envío de mensajes con este enfoque.
El trabajo en el proyecto consistirá en tres pasos:
- Configuración Twilio.
- Aprendizaje y modificación de código.
- Implementar un proyecto en la nube y configurar un disparador.
Paso 1. Configuración de Twilio
Cree una cuenta gratuita en el
sitio web de
Twilio , confirme su dirección de correo electrónico y número de teléfono.
Registro de cuenta TwilioAdemás, como parte de la oferta gratuita de Twilio, debe usar el sandbox de WhatsApp (WhatsApp Sandbox). Esto significa que no puede usar su propio número de teléfono y que debe seguir el procedimiento para emitir el permiso para recibir mensajes de WhatsApp.
Puede usar su propio número de mensaje después de que WhatsApp le permita a Twilio usar su número. Para obtener el permiso, debe completar el formulario. Puede aprender de los
materiales de soporte de Twilio que, aunque Twilio trabaja directamente con WhatsApp, puede tomar algún tiempo obtener el permiso. Además, habla sobre el alcance limitado para la emisión de permisos. Como resultado, muchos tienen que usar el sandbox Twilio WhatsApp.
Todo esto no causa mucha alegría, pero lo que está disponible para nosotros como parte de la oferta gratuita de Twilio nos permite resolver nuestro problema. Además, resulta que el sandbox de WhatsApp sigue siendo la única opción ampliamente disponible.
Ahora debe conectar el teléfono del destinatario de los mensajes al sandbox, después de lo cual puede enviar mensajes a este teléfono. Para aprender a hacer esto, debe ir a la sección de la consola Twilio, que está dedicada a WhatsApp. En particular, aquí se propone enviar un mensaje de WhatsApp con el texto especificado a un número específico.
Página de la consola Twilio con instrucciones para conectar un teléfono al que puede enviar mensajesSolicitud de conexión enviada desde el teléfonoGuarde el número de WhatsApp emitido en sus contactos. Se le puede asignar cualquier nombre. Para no complicar mi vida, llamé a este contacto Twilio Sandbox, y luego le envié un mensaje desde el teléfono de mi padre (esto se puede ver en la figura anterior). Este procedimiento se realiza solo una vez.
Ahora debe ir a la
consola Twilio y obtener el SID y el token de autenticación para su cuenta. Estos datos ayudarán a Twilio a reconocerlo cuando trabaje programáticamente con el servicio.
Paso 2. Aprendiendo y modificando el código
Descargue
este repositorio de GitHub y descomprima el archivo.
Contenido del archivo zipAquí encontrará el archivo fuente (
whatsapp_messaging.py
) y el paquete de implementación del proyecto (
aws_lambda_deploy.zip
).
Aquí está el código del script:
from twilio.rest import Client def msg_mom_and_dad(event=None, context=None):
Ahora analizaremos este código. Aquí, por conveniencia, una captura de pantalla con líneas numeradas.
Código de archivo Whatsapp_messaging.py con líneas numeradas- Línea 1. Importar cliente para trabajar con Twilio REST-API.
- Línea 3. Creación de la función
msg_mom_and_dad
. Pasaremos esta función a AWS. Se llamará diariamente a la hora establecida. - Líneas 6-7. Aquí debe reemplazar el
sid
existente y auth_token
en el código con el suyo (hablamos de recibirlos al final de la sección anterior). - Línea 9. Cree un objeto de cliente Twilio usando credenciales.
- Línea 13. Crear un diccionario. Aquí, el nombre del destinatario del mensaje se utiliza como clave y su número de teléfono como valor. Puede agregar información de contacto adicional a este diccionario.
- Línea 15. El bucle
for
, en el que se atraviesa el diccionario (hasta ahora solo hay una entrada en él). En el body
debe especificar el texto del mensaje. Creé un mensaje simple con el texto "buenos días", seguido de un valor tomado de la clave del elemento actual del diccionario. En mi caso, esto lleva a la formación del mensaje "¡buenos días papá!". from_
indica el número de WhatsApp que recibimos anteriormente. Para escribir el número del destinatario del mensaje, desde el cual enviaron previamente una solicitud para conectarse al sandbox Twilio WhatsApp. - Línea 23. Aquí, para verificar el estado del mensaje, mostramos su SID. No utilizaremos esta información.
Para usar este código para enviar mensajes, debe cambiar lo siguiente:
twilio_sid
auth_token
contact_directory
de_
cuerpo (esto es opcional)
Después de realizar cambios en el código, guarde el archivo. Luego descomprima el archivo
aws_lambda_deploy.zip
, reemplace el archivo
whatsapp_messaging.py
con su archivo con el mismo nombre y luego vuelva a empacar todo en el archivo .zip. El significado de estas acciones es incluir en el código sus credenciales e información sobre aquellos a quienes desea enviar mensajes. Todo lo demás en el paquete, diseñado para su implementación en AWS, se ha mantenido sin cambios. Ahora trabajemos con AWS.
Paso 3. Implemente el proyecto en AWS y configure el desencadenador
El código está listo para ejecutarse y enviar mensajes de WhatsApp. Si está interesado en qué papel juegan otros archivos del archivo
aws_lambda_deploy.zip
en el proyecto, tenga en cuenta que entre estos archivos se encuentran el paquete Twilio y todas las demás dependencias del proyecto. Necesitamos todo esto porque planeamos usar las funciones de AWS Lambda en un entorno Python que no tenga un paquete Twilio. ¿Y por qué no solucionamos esto simplemente ejecutando el comando
pip install twilio
para instalar el paquete correcto? El hecho es que aquí no tenemos un servidor.
Para hacer esto, utilizamos AWS Lambda, un entorno informático sin servidor en el que puede colocar fragmentos de código, cuya llamada, de acuerdo con las necesidades del usuario, se desencadena por varios eventos y desencadenantes. Está previsto que nuestro código se ejecute solo una vez al día, por lo que usar algo como un servidor EC2 en AWS funcionando las 24 horas del día será un desperdicio de recursos informáticos y dinero. Nuestra función Lambda se llamará diariamente a una hora específica a solicitud de un activador, y su implementación tomará muy poco tiempo.
Comience a crear una función Lambda
Inicie sesión en su cuenta de AWS. Después de eso, vaya a
Services → Compute → Lambda → Create a function
.
Pantalla de creación de funciones LambdaDémosle un nombre a la función.
Como el entorno en el que se ejecutará la función, elegiremos Python 3.6. No necesitamos conectarnos a otros servicios de AWS. Por lo tanto, estamos satisfechos con el nivel de permiso especificado por la opción
Create a new role with basic Lambda permissions
.
Después de completar la configuración, simplemente haga clic en el botón
Create function
. Ahora estaremos en el panel de control principal.
Panel de controlAquí, en la sección
Function code
, debe especificar un
Handler
con el que el sistema pueda ejecutar nuestro código. En nuestro caso, en el campo
Handler
, escriba
whatsapp_messaging. msg_mom_and_dad
whatsapp_messaging. msg_mom_and_dad
, especificando el nombre del archivo con el código y la función a la que queremos llamar.
En el campo
Function package
, debe cargar nuestro archivo .zip, es decir, el archivo que creamos en el paso anterior.
Ahora el código está listo para ejecutarse. Puede verificar si la función funciona y envía mensajes haciendo clic en el botón
Test
.
El último paso en nuestro trabajo será configurar un disparador que llamará a la función diariamente en un momento dado. Siga la ruta
Add trigger → CloudWatch Events
.
Ajuste de disparoNecesitamos crear una nueva regla (
Rule
). Necesita asignar un nombre (
Rule name
). Si lo desea, puede agregarle una descripción (
Rule description
).
Especifique el tipo de regla (Tipo de
Rule type
) como
Schedule expression
.
El tiempo de llamada de función se establece utilizando la construcción
cron(30 1 * * ? *)
. Analicemos esta construcción:
30 1
significa hora UTC 1:30 de la mañana. Son las 7 de la mañana en mi hora de IST.- Los siguientes dos caracteres,
* *
, indican el día del mes y el mes. - Los siguientes dos personajes
? *
? *
, le permite especificar el día de la semana y el año. Este diseño significa que la función se llamará diariamente, sin restricciones en años y meses.
Aquí puede aprender cómo configurar sus propios trabajos cron.
Una vez completada la configuración del activador, verifique si la casilla de verificación
Enable trigger
está activada, lo que activa el activador. Ahora solo queda hacer clic en el botón
Add
y se creará el disparador.
Información de disparoDetalles de la función LambdaEn el panel de control de la función Lambda, puede ver que la entidad de
CloudWatch Events
está asociada a la función y que se puede llamar a la función cuando se activa el disparador correspondiente.
Resumen
Mensaje enviado por el script PythonHemos completado el trabajo en el proyecto. Ahora puede cambiar el nombre de contacto de Twilio Sandbox por el suyo en el teléfono del destinatario del mensaje, en los contactos de WhatsApp (lo cambié a Hijo). Nuestro sistema también le permite comunicarse con el destinatario de los mensajes desde el panel de control de Twilio.
Estimados lectores! ¿Usas Twilio en tus proyectos?
