Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/getninjas/whatsapp
A Ruby interface to WhatsApp Enterprise API.
https://github.com/getninjas/whatsapp
api gem hacktoberfest ruby whatsapp
Last synced: 2 days ago
JSON representation
A Ruby interface to WhatsApp Enterprise API.
- Host: GitHub
- URL: https://github.com/getninjas/whatsapp
- Owner: getninjas
- License: mit
- Created: 2018-03-14T16:47:52.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-01-18T18:01:43.000Z (10 months ago)
- Last Synced: 2024-10-30T06:04:21.400Z (16 days ago)
- Topics: api, gem, hacktoberfest, ruby, whatsapp
- Language: Ruby
- Homepage:
- Size: 338 KB
- Stars: 107
- Watchers: 12
- Forks: 24
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/getninjas/whatsapp.svg?branch=master)](https://travis-ci.org/getninjas/whatsapp)
[![Gem Version](https://badge.fury.io/rb/whatsapp.svg)](https://badge.fury.io/rb/whatsapp)A ruby interface to WhatsApp Enterprise API.
## Installation
Add this line to your application's Gemfile:
```ruby
gem "whatsapp"
```Or manualy install
```bash
gem install whatsapp
```
then require it when there's a need to use it
```ruby
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
```ruby
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
```ruby
whats = Whats::Api.new
```### Check Contacts
Take a look [here](https://developers.facebook.com/docs/whatsapp/api/contacts) (WhatsApp Check Contacts doc) for more information.
```ruby
whats.check_contacts(["+5511942424242"])# output:
{
"contacts" => [
{
"input" => "+5511942424242",
"status" => "valid",
"wa_id" => "5511942424242"
}
]
}
```### Send Message
Take a look [here](https://developers.facebook.com/docs/whatsapp/api/messages/text) (WhatsApp Send Message doc) for more information.
*The first parameter is the WhatsApp **username**!*
```ruby
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](https://developers.facebook.com/docs/whatsapp/message-templates)```ruby
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
```shell
rspec
```### Debugging specs
You can print all stubs using the environment variable `PRINT_STUBS=true` like this:
```shell
PRINT_STUBS=true rspec
```All stubs can be seen in the debugging session from the wiki: https://github.com/getninjas/whatsapp/wiki/Debugging