vikilaboy / laravel-twilio-notifications
为 Laravel 提供Twilio 通知通道
Requires
- php: >=7.4|^8.0
- illuminate/events: ^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/notifications: ^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/queue: ^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^5.8 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
- twilio/sdk: ~6.0
Requires (Dev)
- mockery/mockery: ^1.3
- orchestra/testbench: ^3|^4|^5|^6|^7
- phpunit/phpunit: ^8.5|^9.5
This package is auto-updated.
Last update: 2024-09-14 01:09:35 UTC
README
本包使得在 Laravel 5.5+、6.x、7.x、8.x 和 9.x 中发送 Twilio 通知变得容易
您正在查看 3.x
版本的文档。 点击此处 查看版本 2.x
的文档。
目录
安装
您可以通过 composer 安装此包
composer require laravel-notification-channels/twilio
配置
将您的 Twilio Account SID、认证令牌和 From Number(可选)添加到您的 .env
TWILIO_USERNAME=XYZ # optional when using auth token TWILIO_PASSWORD=ZYX # optional when using auth token TWILIO_AUTH_TOKEN=ABCD # optional when using username and password TWILIO_ACCOUNT_SID=1234 # always required TWILIO_FROM=100000000 # optional default from TWILIO_ALPHA_SENDER=HELLO # optional TWILIO_DEBUG_TO=23423423423 # Set a number that call calls/messages should be routed to for debugging TWILIO_SMS_SERVICE_SID=MG0a0aaaaaa00aa00a00a000a00000a00a # Optional but recommended
高级配置
运行 php artisan vendor:publish --provider="NotificationChannels\Twilio\TwilioProvider"
/config/twilio-notification-channel.php
抑制特定错误或所有错误
使用上述命令发布配置,并编辑 ignored_error_codes
数组。您可以从文档中获取异常代码列表。
如果您想抑制所有错误,可以将选项设置为 ['*']
。错误将不会记录,但通知失败事件仍然会发出。
推荐配置
Twilio 建议始终使用 Messaging Service,因为它提供了高级 Opt-Out、Sticky Sender、Scaler、Geomatch、Shortcode Reroute 和 Smart Encoding 等功能。
如果遇到短信问题,请检查 Twilio 的最佳实践。
从 2.x 升级到 3.x
如果您是从版本 2.x
升级,请确保您的环境变量设置与配置部分中上面的设置匹配。环境变量名称没有改变,但如果您在 services.php
配置中使用了不同的键,则需要更新它们以匹配上述设置,或者发布配置文件并更改 env
键。
您还应该从 services.php
配置中删除旧的 twilio
条目,因为它不再使用。
2.x
和 3.x
之间的主要突破性变化是,失败的通知现在将抛出异常,除非它们在忽略错误代码列表中(发布配置文件以编辑这些)。
您可以通过设置 'ignored_error_codes' => ['*']
来复制 2.x
的行为,这将导致所有异常被抑制。
使用方法
现在您可以在通知内的 via()
方法中使用此通道
use NotificationChannels\Twilio\TwilioChannel; use NotificationChannels\Twilio\TwilioSmsMessage; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return [TwilioChannel::class]; } public function toTwilio($notifiable) { return (new TwilioSmsMessage()) ->content("Your {$notifiable->service} account was approved!"); } }
您还可以发送 MMS
use NotificationChannels\Twilio\TwilioChannel; use NotificationChannels\Twilio\TwilioMmsMessage; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return [TwilioChannel::class]; } public function toTwilio($notifiable) { return (new TwilioMmsMessage()) ->content("Your {$notifiable->service} account was approved!") ->mediaUrl("https://picsum.photos/300"); } }
或创建 Twilio 通话
use NotificationChannels\Twilio\TwilioChannel; use NotificationChannels\Twilio\TwilioCallMessage; use Illuminate\Notifications\Notification; class AccountApproved extends Notification { public function via($notifiable) { return [TwilioChannel::class]; } public function toTwilio($notifiable) { return (new TwilioCallMessage()) ->url("http://example.com/your-twiml-url"); } }
为了使通知知道您正在发送/呼叫哪个电话,该通道将查找 Notifiable 模型的 phone_number
属性。如果您想覆盖此行为,请将 routeNotificationForTwilio
方法添加到您的 Notifiable 模型中。
public function routeNotificationForTwilio() { return '+1234567890'; }
可用的消息方法
TwilioSmsMessage
from('')
:接受一个用作通知发送者的电话。content('')
:接受一个字符串值作为通知正文。messagingServiceSid('')
:接受一个用于配置的消息服务 SID。
TwilioCallMessage
from('')
:接受一个用作通知发送者的电话。url('')
:接受一个用于通话 TwiML 的 URL。
变更日志
请参阅变更日志获取有关最近更改的更多信息。
测试
$ composer test
安全
如果您发现任何安全相关的问题,请通过电子邮件gregoriohc@gmail.com反馈,而不是使用问题跟踪器。
贡献
请参阅贡献指南获取详细信息。
致谢
许可证
MIT许可(MIT)。请参阅许可文件获取更多信息。