/laravel-chatapi-whatsapp

Send WhatsApp messages with Chat API using Laravel

Primary LanguagePHPMIT LicenseMIT

Laravel client and channel for WhatsApp API (by Chat API)

Latest Version on Packagist Software License Total Downloads

This package makes it easy to send WhatsApp messages using Chat API with Laravel 5.

Contents

Installation

You can install the package via composer:

composer require wilsonglasser/laravel-chatapi-whatsapp

You must install the service provider:

// config/app.php
'providers' => [
    ...
    NotificationChannels\ChatAPI\ChatAPIServiceProvider::class,
],

Configuration

Configure your credentials:

// config/services.php
...
'chatapi' => [
    'token'          => env('CHATAPI_TOKEN', ''),
    'api_url'       => env('CHATAPI_URL', ''),
],
...

Usage

You can now use the channel in your via() method inside the Notification class.

use NotificationChannels\ChatAPI\ChatAPIChannel;
use NotificationChannels\ChatAPI\ChatAPIMessage;
use Illuminate\Notifications\Notification;

class InvoicePaid extends Notification
{
    public function via($notifiable)
    {
        return [ChatAPIChannel::class];
    }

    public function toChatAPI($notifiable)
    {
        return ChatAPIMessage::create()
            ->to($notifiable->phone) // your user phone
            ->file('/path/to/file','My Photo.jpg');
            ->content('Your invoice has been paid');
    }
}

Routing a message

You can either send the notification by providing with the chat id of the recipient to the to($phone) method like shown in the above example or add a routeNotificationForChatAPI() method in your notifiable model:

...
/**
 * Route notifications for the Telegram channel.
 *
 * @return int
 */
public function routeNotificationForChatAPI()
{
    return $this->phone;
}
...

Available Message methods

  • to($phone): (integer) Recipient's phone.
  • content('message'): (string) Message.
  • file('/path/to/file','My Photo.jpg'): (string) File real path, you can also send the file contents and pass two additional params for file name and file mime type (required)
  • file('/path/to/file','My Photo.jpg','image/jpg')