This package makes it easy to send notifications using Hubtel with Laravel 11+.
To get the latest version of Hubtel Notification channel for Laravel 11+, simply require the project using Composer:
Add this to your composer.json
"repositories": {
"hubtel-laravel-sms": {
"type": "package",
"package": {
"name": "kwadwokyeremeh/hubtel-laravel-sms",
"version": "1.0",
"source": {
"url": "https://github.com/kwadwokyeremeh/hubtel-laravel-sms.git",
"type": "git",
"reference": "origin/master"
}
}
}
},
$ composer require kwadwokyeremeh/hubtel-laravel-sms
In your Hubtel account go to Applications page. Click on the details of the desired application and copy your apiKey
and apiSecret
In your terminal run
$ php artisan vendor:publish --provider="NotificationChannels\Hubtel\HubtelServiceProvider"
This creates a hubtel.php
file in your config
directory.
Paste your apiCredentials in the config/hubtel.php
configuration file. You may copy the example configuration below to get started:
'account' => [
'key' => env('HUBTEL_API_KEY'),
'secret' => env('HUBTEL_API_SECRET')
]
Or
Add the HUBTEL_API_KEY
and HUBTEL_API_SECRET
to your .env
file
Now you can use the channel in your via()
method inside the notification:
use Illuminate\Notifications\Notification;
use NotificationChannels\Hubtel\HubtelChannel;
use NotificationChannels\Hubtel\HubtelMessage;
class SayHello extends Notification
{
public function via($notifiable)
{
return [HubtelChannel::class];
}
public function toSMS($notifiable)
{
return (new HubtelMessage)
->from("JabClari")
->to("2331234567890")
->content("Kim Kippo... Sup with you");
}
}
In order to let your Notification know which phone number you are sending to, add the routeNotificationForSMS
method to your Notifiable model e.g your User Model
public function routeNotificationForSMS()
{
return $this->phone; // where phone is a cloumn in your users table;
}
from($from)
: set the sender's name or phone numberto($to)
: set the recipient's phone numbercontent($content)
: set the message contentregisteredDelivery()
: set delivery report requestclientReference($reference)
: set the client reference numbertype($type)
: set the message type to be sentudh($udh)
: set the User Data Header of the SMS Message being senttime($time)
: set the time to deliver the messageflashMessage()
: sends the message as a flash message
Read more about the avialable methods on the Hubtel Documentation Page
For developers who would want to use this package on VPS hosted applications, if the server location is US for which you have a US IP Address, you may need to seek whitelisting of the US Ip address from hubtel by mailing support@hubtel.com. As i discovered through experience that the package would work fine on local machine because the IP used is a Ghanaian IP address but fails to work on a production server. Note however that this is not a package problem, as the package just organizes components for sending successful SMS messages within Laravel. It is even more challenging to know the cause of the problem when you are using laravel queues, because the response codes are not logged, the queue just logs Processing failed.Hubtels SMS server responds with a 403 Forbidden, when the same SMS is sent directly using Guzzlehttp on the production server (VPS). A 403 HTTP Response according to their website (hubtel) indicates the recipient has not given his/her approval to receive messages which is even more confusing. :)
Please see CHANGELOG for more information what has changed recently.
$ composer test
If you discover any security related issues, please email norisjibril@gmail.com instead of using the issue tracker.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.