renatoxm / laravel-vonage-dlr-webhooks
在 Laravel PHP 框架中处理短信投递报告 Webhook
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.8
- illuminate/http: ^10.0 || ^11.0
- illuminate/support: ^10.0 || ^11.0
- vonage/client-core: ^4.6
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.15
- orchestra/testbench: ^7.12 || ^8.17 || ^9.0
- phpunit/phpunit: ^9.4 || ^10.1
README
在 Laravel PHP 框架中处理 Vonage DLR (投递报告) 短信 Webhook。查看 contributing.md 以获取待办事项列表。
当你成功请求短信 API 时,它将返回一个消息对象的数组,每个消息一个。理想情况下,这些消息将具有状态 0,表示成功。但这并不意味着你的消息已送达收件人。它只意味着你的消息已成功排队待发。
Vonage 的自适应路由将识别最适合你的消息的运营商。当选定的运营商将消息投递后,它会返回一个投递报告(DLR)。
要接收应用中的 DLR,你必须提供一个 Webhook,供 Vonage 将它们发送到。或者,你也可以使用报告 API 定期下载你的记录,包括每个消息的投递状态。
安装
通过 Composer
composer require renatoxm/laravel-vonage-dlr-webhooks
使用以下命令发布配置文件
php artisan vendor:publish --provider="Renatoxm\LaravelVonageDlrWebhooks\LaravelVonageDlrWebhooksServiceProvider"
默认情况下,此包将记录所有传入的 Webhook 到数据库。
运行迁移以在数据库中创建 vonage_dlr_webhook_logs
表
php artisan migrate
从 Vonage 设置 DLR (投递报告) Webhook
在 Nexmo 创建你的账户并访问 仪表板 API 设置。
在短信设置下,选择短信 API,将 webhook 格式设置为 POST-JSON
,并配置投递报告 (DLR) Webhook URL 如下
https://<你的域名.com>/api/webhooks/vonage/dlr
/api/webhooks/vonage/dlr
是包的默认端点。
你可以将
/api/webhooks/vonage/dlr
端点更改为你喜欢的任何内容。
你可以通过更改config/laravel-vonage-dlr-webhooks.php
文件中的path
键来实现这一点。
事件
每当收到 Webhook 调用时,此包将触发 LaravelVonageDlrWebhooksCalled
事件。
你可以在 EventServiceProvider
中注册事件监听器
/** * The event listener mappings for the application. * * @var array */ protected $listen = [ LaravelVonageDlrWebhooksCalled::class => [ YourListener::class, ], ];
监听器示例
<?php namespace App\Listeners; use Renatoxm\LaravelVonageDlrWebhooks\Events\LaravelVonageDlrWebhooksCalled; class YourListener { /** * Handle the event. * * @param \Renatoxm\LaravelVonageDlrWebhooks\Events\LaravelVonageDlrWebhooksCalled $event * @return void */ public function handle(LaravelVonageDlrWebhooksCalled $event) { // Do your work here. // $event->err_code // $event->message_id // $event->msisdn // ... } }
高级配置
你可以选择使用以下命令发布配置文件
php artisan vendor:publish --provider="Renatoxm\LaravelVonageDlrWebhooks\LaravelVonageDlrWebhooksServiceProvider" --tag="config"
在配置文件中,你可以更改用于将记录保存到数据库的表名或 Eloquent 模型。
如果你想使用自己的模型将日志保存到数据库,你应该扩展
Renatoxm\LaravelVonageDlrWebhooks\Model\LaravelVonageDlrWebhooksModel
类。
你也可以从数据库记录中排除一个或多个事件类型。
将你想要排除的事件放在 except
键下
'log' => [ ... 'except' => [ 'open', ... ], ],
所有 Webhook 请求都将记录在 vonage_dlr_webhook_logs
表中。
变更日志
请参阅 changelog 了解最近更改的详细信息。
测试
composer test
贡献
请参阅 contributing.md 了解详细信息以及待办事项列表。
安全性
如果您发现任何安全问题,请通过电子邮件renatoxm[at]gmail[dot]com
联系,而不是使用问题跟踪器。
有用链接
确认
本软件包受以下启发
源自https://github.com/mvdnbrk/laravel-postmark-webhooks
致谢
许可证
MIT。有关更多信息,请参阅许可证文件。