caherrera / laravel-notifications-infobip-omni
基于Infobip API OMNI的自定义Laravel通知通道。基于princeton255/laravel-notifications-infobip
1.1.3
2021-03-03 21:34 UTC
Requires
- php: ^7.1
- caherrera/infobip-api-php-client: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
- illuminate/events: ^7.0
- illuminate/notifications: ^7.0
- illuminate/queue: ^7.0
- illuminate/support: ^7.0
- phpunit/phpunit: ^8.5
README
此包可以轻松使用Laravel 5.5及以上版本通过Infobip服务发送Sms通知。
内容
安装
您可以通过composer安装此包
composer require caherrera/laravel-notifications-infobip
设置您的Infobip账户
将以下设置添加到 config/services.php
// config/services.php ... 'infobip' => [ 'auth' => env('INFOBIP_AUTH','basic'), 'username' => env('INFOBIP_USERNAME'), 'password' => env('INFOBIP_PASSWORD'), 'baseUrl' => env('INFOBIP_BASE_URL'), 'apikey' => env('INFOBIP_PUBLIC_KEY'), 'scenarioKey' => env('INFOBIP_SCENARIO_KEY'), ], ...
要更改 Base URL
以供个人使用,请参阅此链接 (更多)
用法
现在您可以在通知内部的 via()
方法中使用此通道
use NotificationChannels\Infobip\InfobipChannel; use NotificationChannels\Infobip\InfobipMessage; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return [InfobipChannel::class]; } public function toInfobip($notifiable) { $message = new InfobipMessage(); $message->setTemplateName("infobip_test_hsm"); $message->setTemplateNamespace("whatsapp:hsm:it:infobip"); $message->setTemplateData(["Jhon","Snow"]); $message->setLanguage("es"); return $message; } }
为了让通知知道您要发送给哪个电话,通道将查找可通知模型的 phone_number
属性。如果您想覆盖此行为,请将 routeNotificationForInfobip
方法添加到您的可通知模型中。
public function routeNotificationForInfobip() { return '+1234567890'; }
可用消息方法
InfobipMessage
setTemplateName('')
:接受字符串值。setTemplateNamespace('')
:接受字符串值。setTemplateData(['','',...])
:接受字符串数组。setLanguage('')
:接受字符串值。
示例
发送通知
A. 使用Laravel的通知外观
use App\Notifications\ExampleInfobipNotification; use Illuminate\Support\Facades\Notification; Notification::send($user, new ExampleInfobipNotification()); // where $user implements `Illuminate\Notifications\Notifiable` trait
B. 使用 notify()
方法从 Notifiable
特性
use App\Notifications\ExampleInfobipNotification; $user->notify(new ExampleInfobipNotification($invoice));
示例通知类
<?php namespace App\Notifications; use Illuminate\Notifications\Notification; use Caherrera\Laravel\Notifications\Channels\Infobip\Omni\InfobipChannel; use Caherrera\Laravel\Notifications\Channels\Infobip\Omni\InfobipMessage; class ExampleInfobipNotification extends Notification { public function via($notifiable) { return [InfobipChannel::class]; } public function toInfobip($notifiable) { $message = new InfobipMessage(); $message->setTemplateName("infobip_test_hsm"); $message->setTemplateNamespace("whatsapp:hsm:it:infobip"); $message->setTemplateData(["Jhon","Snow"]); $message->setLanguage("es"); return $message; } }
示例可通知类
<?php namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { use Notifiable; }
有关更多详细信息,请参阅Laravel文档中的此链接
测试
$ ./vendor/bin/phpunit
安全
如果您发现任何安全相关的问题,请帮助我并在问题跟踪器上提交工单或直接修复,我会合并
致谢
- 基于Laravel的Twilio SMS通知通道
- 基于princeton255/laravel-notifications-infobip 的Laravel 5.5+ Infobip通知通道
- 此项目使用Infobip客户端库,并将其包装以在Laravel中平滑使用
许可证
MIT许可证(MIT)。