silasrm / chat-api
Chat API Notifications channel for Laravel 5.6+
Requires
- php: ^7.1.0
- ext-fileinfo: *
- ext-json: *
- illuminate/notifications: ^5.6|^6.0|^7.0|^8.0
- illuminate/queue: ^5.6|^6.0|^7.0|^8.0
- illuminate/support: ^5.6|^6.0|^7.0|^8.0
- mikechip/chatapi: 2.0.*
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^7.0|^8.0|^9.0
README
Introduction
This package makes it easy to send notifications using Chat API with Laravel 5.6+.
First of all: contract or get your free demo account and setup your Whatsapp number: Whatsapp authentication process
Contents
Installation
You can install the package via composer:
$ composer require silasrm/chat-api
Setting up the Chat API service
In order to send message to Whatsapp using Chat API, you need to authenticate your number using QR Code on API.
Add your Chat API url and token to your config/services.php
:
// config/services.php ... 'chatapi' => [ // Like: https://euXXXX.chat-api.com/instanceYYYYY/ 'url' => env('CHATAPI_URL'), 'token' => env('CHATAPI_TOKEN'), ], ...
Usage
You can use the channel in your via()
method inside the notification:
use Illuminate\Notifications\Notification; use Silasrm\ChatApi\ChatApiMessage; use Silasrm\ChatApi\ChatApiChannel; class OrderCreated extends Notification { public function via($notifiable): array { return [ ChatApiChannel::class, ]; } public function toRocketChat($notifiable): ChatApiMessage { return ChatApiMessage::create('John Doe create a new order with value US$ 50.0') ->to('NNNNNNNNNNNNNN'); // Phone number with country code } }
In order to let your notification know which Chat API phone number you are targeting, add the routeNotificationForChatApi
method to your Notifiable model:
public function routeNotificationForChatApi(): string { return $this->phone; }
Available methods
to()
: Specifies the phone number to send the notification to (overridden by routeNotificationForChatApi
if empty).
content()
: Sets a content of the notification message. Supports pure text, UTF-8 or UTF-16 string with emoji.
attachment()
: This will add an single attachment.
attachments()
: This will add multiple attachments.
link()
: This will add an single link.
links()
: This will add multiple links.
Adding Attachment
There are several ways to add one ore more attachments to a message
public function toChatApi($notifiable) { return ChatApiMessage::create('Test message') ->to('NNNNNNNNNNNNNN') // Phone number with country code ->attachments([ // url (for remote) or path (for local), file ChatApiAttachment::create()->url('test'), ChatApiAttachment::create(['url' => 'test']), new ChatApiAttachment(['url' => 'test']), ['url' => 'test'] ]); }
Available methods
caption()
: The text caption for this attachment.
filename()
: Name of this file. If empty, use the original name of file.
[ [ 'caption' => 'Caption of file', 'filename' => 'payment.xlsx', ] ];
Adding Link
There are several ways to add one ore more links to a message
public function toChatApi($notifiable) { return ChatApiMessage::create('Test message') ->to('NNNNNNNNNNNNNN') // Phone number with country code ->links([ ChatApiLink::create() ->url('https://wikimedia.org/nature') ->title('All about Nature') ->previewImage('https://upload.wikimedia.org/wikipedia/ru/3/33/NatureCover2001.jpg'), ChatApiLink::create([ 'url' => 'https://wikimedia.org/nature', 'title' => 'All about Nature', 'previewImage' => 'https://upload.wikimedia.org/wikipedia/ru/3/33/NatureCover2001.jpg', ]), new ChatApiLink([ 'url' => 'https://wikimedia.org/nature', 'title' => 'All about Nature', 'previewImage' => 'https://upload.wikimedia.org/wikipedia/ru/3/33/NatureCover2001.jpg', ]), [ 'url' => 'https://wikimedia.org/nature', 'title' => 'All about Nature', 'previewImage' => 'https://upload.wikimedia.org/wikipedia/ru/3/33/NatureCover2001.jpg', ] ]); }
Available methods
title()
: The title of link. Required.
previewImage()
: The image url/path of link preview. Required.
description()
: The description for this link.
[ [ 'title' => 'All about Nature', 'previewImage' => 'https://upload.wikimedia.org/wikipedia/ru/3/33/NatureCover2001.jpg', 'description' => 'See that!', ] ];
Changelog
Please see CHANGELOG for more information what has changed recently.
Testing
$ vendor/bin/phpunit
Security
If you discover any security related issues, please email silasrm@gmail.com instead of using the issue tracker.
Contributing
Please see CONTRIBUTING for details.
Credits
Change log
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.