A ruby interface to WhatsApp Enterprise API.
Installation
Add this line to your application's Gemfile:
gem "whatsapp"
Or manualy install
gem install whatsapp
then require it when there's a need to use it
require "whatsapp"
Usage
Setting up a WhatsApp Business API Client
For the gem to be useful you need a WhatsApp Business account from Facebook. You can get it here: https://developers.facebook.com/docs/whatsapp/getting-started
That link also has the documentation for the Whatsapp api, which this gem aims to encapsulate.
After that you should have to containers running, the whatsapp-core
and whatsapp-web
Configuration
Before you can send messages there's some Configuration to be done. Set the base path, username and password for the whatsapp-web
container
Whats.configure do |config|
config.base_path = "https://example.test"
config.user = "admin"
config.password = "secret password"
end
Create an instance of the API client, which is going to be used from now on to interact with whatsapp
whats = Whats::Api.new
Check Contacts
Take a look here (WhatsApp Check Contacts doc) for more information.
whats.check_contacts(["+5511942424242"])
# output:
{
"contacts" => [
{
"input" => "+5511942424242",
"status" => "valid",
"wa_id" => "5511942424242"
}
]
}
Send Message
Take a look here (WhatsApp Send Message doc) for more information.
The first parameter is the WhatsApp username!
whats.send_message("5511942424242", "Message goes here.")
# output:
{
"messages" => [{
"id" => "BAEC4D1D7549842627"
}]
}
Send HSM (templated) messages
Send a kind of message that will not allow the receiver to flag it as spam since it's template was pre approved by WhatsApp, find more informations here
whats.send_hsm_message(
"+1234567890",
"cdb2df51_9816_c754_c5a4_64cdabdcad3e",
"purchase_with_credit_card",
"en",
[ # ordered list of replacements that will happen at the template
{default: "$10"},
{default: "300"},
]
)
# output:
{
"messages": [{
"id": "gBEGkYiEB1VXAglK1ZEqA1YKPrU"
}]
}
Tests
Running tests
rspec
Debugging specs
You can print all stubs using the environment variable PRINT_STUBS=true
like this:
PRINT_STUBS=true rspec
All stubs can be seen in the debugging session from the wiki: https://github.com/getninjas/whatsapp/wiki/Debugging