yowsup is the Whatsapp library. It is written in python so we can run even with a Raspberry Pi. After the installation there is a client script that we can send message to other Whatsapp user.
Reasons to use yowsup:
- send messages to mobile device like SMS
- the cost is cheap: all we need is just a mobile number ( a number that has not been registered in Whatsapp) and a Raspberry Pi ( I am using Raspberry Pi B2, but any model should be found)
Installation
$ virtualenv2 venv/ New python executable in venv/bin/python2 Also creating executable in venv/bin/python Installing setuptools, pip, wheel...done. $ . venv/bin/activate (venv)$ git clone https://github.com/tgalal/yowsup Cloning into 'yowsup'... remote: Counting objects: 6983, done. remote: Total 6983 (delta 0), reused 0 (delta 0), pack-reused 6983 Receiving objects: 100% (6983/6983), 1.49 MiB | 574.00 KiB/s, done. Resolving deltas: 100% (4388/4388), done. Checking connectivity... done. python setup.py install
After the setup there will be a script "yowsup-cli"
Registration
Prepare the following information:
- the phone number (XXXXXXXX)
- the country code (CCC)
- the mobile country code (mcc)
- the mobile network code (mnc)
Note that the phone number is in the form of Country Code + Number. And the mcc and mnc can be found at https://en.wikipedia.org/wiki/Mobile_country_code
For example, if you are using Verizon LTE in US, that the mcc and mnc should be 310 and 012 respectively.
Run the command:
./yowsup-cli registration --requestcode sms --phone CCCXXXXXXXX --cc CCC --mcc 310 --mnc 012 INFO:yowsup.common.http.warequest:{"status":"sent","length":6,"method":"sms","retry_after":1805} status: sent retry_after: 1805 length: 6 method: sms
If you are lucky enough you will receive a SMS from the mobile phone.
With this WhatsApp code we can run another command:
./yowsup-cli registration --register 800-269 --phone CCCXXXXXXXX --cc CCC INFO:yowsup.common.http.warequest:{"status":"ok","login":"CCCXXXXXXXX","pw":"kaiaCmXHgRxxxvuOfbbCFHlqbLI=","type":"new","expiration":1478245880,"kind":"free","price":"$1.00","cost":"1.00","currency":"USD","price_expiration":1449782266} status: ok kind: free pw: kaiaCmXHgRxxxvuOfbbCFHlqbLI= price: $1.00 price_expiration: 1449782266 currency: USD cost: 1.00 expiration: 1478245880 login: CCCXXXXXXXX type: new
Note that the line pw: xxxxxxxxxxxxx . That's the password we need to put in a config file.
create a file yowsup-cli.conf with the following content:
cc=CCC # The country code
phone=XXXXXXXX # the phone number
id= #
password=xxxxxxxxxxx # the password
Finally we can test by sending a message to a Whatsapp user (eg. CCCYYYYYYYY):
./yowsup-cli demos -c yowsup-cli.conf -s YYYYYYY “hello world”
By using the simple command we can send Whatsapp message to another user programmatically. Possible usages are to send alerts when some health check jobs failed, or writing authentication apps that can send the passcode.
Ref:
- https://github.com/tgalal/yowsup
- https://en.wikipedia.org/wiki/Mobile_country_code