toneflix/kudisms-notification
A Laravel notification channel for sending SMS through KudiSMS. Plug it into your existing notification system, configure your sender ID and credentials, then deliver transactional or alert messages to Nigerian phone numbers using Laravel's familiar notification API.
composer require toneflix/kudisms-notification:^2.0
composer remove toneflix-code/kudisms-notification
composer require toneflix/kudisms-notification:^2.0
kudisms-config or similar), then set the KudiSMS credentials and sender ID in .env.use Illuminate\Notifications\Notification;
use Toneflix\KudiSmsNotification\KudiSmsChannel;
use Toneflix\KudiSmsNotification\KudiSmsMessage;
class SendOtp extends Notification
{
public function __construct(public string $otp) {}
public function via($notifiable): array
{
return [KudiSmsChannel::class];
}
public function toKudiSms($notifiable) // confirm exact method name in README
{
return KudiSmsMessage::create()
->to($notifiable->phone)
->content("Your OTP is {$this->otp}");
}
}
$user->notify(new SendOtp('123456'));
via() and build the SMS in the channel-specific method.ShouldQueue on your notification class. The channel will then run inside your queue worker, which is important for SMS latency and retry handling.Notification::fake() and assert the notification was sent to the right notifiable on the KudiSMS channel.Http::fake() if the package uses Laravel’s HTTP client, then assert the request payload.toneflix-code/kudisms-notification to toneflix/kudisms-notification, and the namespace changed from ToneflixCode\KudiSmsNotification to Toneflix\KudiSmsNotification. Update every use statement and any published config references.^8.3|^8.4 and Illuminate ^12.0|^13.0. If your app is on Laravel 10/11 or PHP 8.2, stay on 1.x until you upgrade.php artisan config:clear
In production, re-run php artisan config:cache.toKudiSms, but verify in the README). If the method is missing or misnamed, Laravel may silently skip the channel.retryUntil where appropriate.Notification::fake() does not exercise the real channel. Use HTTP fakes or a package-level fake if provided to test payloads and error paths.How can I help you explore Laravel packages today?