Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

Awesome Lists containing this project

README

        

# WhatsApp

[![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