Tutorial Raspberry Pi - WhatsApp en Python con Yowsup

¡Hola!... Llevo bastante tiempo experimentando con la librería Yousup, la que permite interactuar con el servidor de WhatsApp, para que podamos recibir y enviar mensaje desde nuestra Raspberry Pi, incluso esto se puede desde algunas distribuciones de Linux. Les enseñaré lo básico y, todo lo de más depende de su creatividad y dedicación.

Instalemos Yowsup

Como siempre, debemos actualizar nuestro sistema al más reciente, pero aparte necesitamos de Python Dateutil así que ejecutaremos esto en el terminal: sudo apt-get update sudo apt-get upgrade sudo apt-get install python-dateutil

Tendremos que descargar todo el repositorio que se encuentra en Github https://github.com/tgalal/yowsup ya sea manualmente copiarlo a nuestra Raspberry Pi o bien ejecutar en el terminal:

git clone git://github.com/tgalal/yowsup.git

Registro de Número

Como sabemos, para el uso de WhatsApp se requiere registrar un número. Desafortunadamente sólo se puede usar un número por dispositivo, así que debemos conseguir un número para registrar nuestra Raspberry Pi. Puede ser ficticio pero recuerden que tendremos que validarlo por un mensaje o llamada.

Una vez ya conseguido el número que queremos usar debemos acceder desde el terminal a la siguiente ruta: cd /home/pi/yowsup/src

Bueno en mi caso, yo descargué el repositorio directamente a "/home/pi". En su caso tendrán que poner la ruta donde copiaron su repositorio.

Ahora se necesita de editar el config.example para colocar nuestro número. Podemos editarlo con nano ejecutando en la terminal;

nano config.example Al principio del archivo explica dónde irán cada uno de nuestros datos. Quedaría de la siguiente forma: cc= 52 phone= 521********** id= password=

cc es el prefijo telefónico de tu país. En mi caso México, por eso es 52. En phone prefijo + teléfono. En caso de México queda 521+tu número. Presionamos Ctrl+X para salir, después guardamos con el mismo nombre con "s" o "y" y enter.

Para registrar nuestro número tendremos que ejecutar en la terminal igualmente: python yowsup-cli -c config.example --requestcode sms #Verificar por sms python yowsup-cli -c config.example --requestcode voice #verificar por llamada Si todo sale bien nos regresara algo como esto...

Nota:  si aparece un error diciendo que ha fallado por tener una versión vieja, tendremos que meternos a este archivo src/Yowsup/Common/constants.py para editar esto.

Tendremos que esperar a que nos llegue un código ???-??? (3 dígitos+ - +3 dígitos). Una vez llegue, procedemos a solicitar nuestra password, ejecutando lo siguiente:

python yowsup-cli -c config.example --register ???-???

Ahora copiamos el pw a nuestro archivo config.example en el apartado de password, y listo. Está registrado nuestro número en la Raspberry Pi.

Utilizar Yowsup-cli

Yowsup-cli, es un pequeño programa en Python que nos brinda la facilidad de mandar y recibir mensaje en nuestra terminal y es bastante sencillo de utilizar.

Mandar un mensaje a un número: Para mandar mensaje sólo necesitamos seguir la siguiente sintaxis y ejecutarla en la terminal.python yowsup-cli -c config.example -w -s 521numero "Mensaje"

Utilizamos el -w para esperar a que el mensaje sea mandado antes de cerrar la aplicación, -s indica que queremos mandar un mensaje.

Podemos ver toda la funcionalidad de Yowsup-Cli .

Recepción de Mensajes:

Para ver los mensajes que nos envían podemos ejecutar el siguiente comando en la consola:

python yowsup-cli -c config.example -k -a -l

Con el parámetro -k indicamos que queremos mantener la conexión con el servidor. El parámetro -a indica que cada vez que nos llegue un mensaje se marcará como leído para que el servidor no lo vuelva a enviar.

Chat Interactivo Podemos tener una charla interactiva, solo tendríamos que ejecutar en consola y empezar nuestra charla. python yowsup-cli -c config.example -k -a -i 521**********

Con esto podemos ejecutar desde Python cualquiera de estos comandos para que nuestra aplicación interactúe con WhatsApp. Sin embargo no sería algo muy recomendable, ya que estaríamos ejecutando un programa dentro de otro programa. A continuación les mostraré una manera de utilizarlo directamente en Python importando las librerías de Yowsup-Cli.

Envio de Mensajes con Python

Antes que nada debido a que importamos las librerías de Yowsup-cli, nuestro programa debe ubicarse en  donde están estas librerías  yowsup/src/  , una vez creado nuestro archivo en esta ubicación programamos el siguiente código.#!usr/bin/env ''' Programa creado para mostrar la utilizacion de las claces de yuwsup-cli en un programa de python. Este programa sera capas de mandar un mensaje a uno o varios destinatarios. Programado por: Luis Enrique Villa Trejo.   [ V i L l A k ] ''' import base64 from Examples.EchoClient import WhatsappEchoClient             #Importa la Clace WhatsappEchoClient, dedicada a envio de mensajes. #................Clave de Acceso a WhatsApp............................ password = "***********************"                      #Password dada al registrar el numero. password = base64.b64decode(bytes(password.encode('utf-8')))   #Codificacion de Password para envio a los servidores de whatsApp. username = '521##########'                                     #Numero de telefono para el inicio de secion. keepAlive= False                                               #Conexion persistente con el servidor. #...................................................................... whats = WhatsappEchoClient("TelefonoDestino", "Aqui tu mensaje", keepAlive)     #Inicia el cliente para el envio de mensajes por WhatsApp. whats.login(username, password)                                                 #Autentifica el dispositivo con el cliente de WhatsApp.

Bueno este es un ejemplo sencillo pero seguro servirá para muchas aplicaciones, así que depende de la creatividad y dedicación que le dediquemos podríamos crear algo como Proyecto R.A.S.H.

¡Saludos desde México y suerte en sus proyectos!