renatoxm/laravel-vonage-dlr-webhooks

在 Laravel PHP 框架中处理短信投递报告 Webhook

v2.0.1 2024-04-10 20:17 UTC

This package is auto-updated.

Last update: 2024-09-10 21:07:01 UTC


README

Latest Version on Packagist Software License Tests StyleCI Total Downloads

在 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。有关更多信息,请参阅许可证文件