kitbrennan90 / laravel-sendgrid-webhooks
Laravel 扩展包,用于接收和存储 Sendgrid 的事件 Webhook
1.1.1
2019-05-23 10:56 UTC
Requires
- php: >=7.0
- ext-json: *
- sendgrid/sendgrid: ~7
Requires (Dev)
- laravel/framework: ~5.8.3
- orchestra/testbench: ^3.8
- phpunit/phpunit: ^7.5
README
此扩展包使您的 Laravel 应用程序能够接收来自 Sendgrid 的事件 Webhook,并将自动将 Webhook 存储在您的数据库中。该扩展包还会触发 Laravel 事件,以便您可以挂钩到 Webhook 并采取自己的操作。
安装
获取包
使用 composer 安装此包是最佳方式。在命令行中运行以下命令
composer require kitbrennan90/laravel-sendgrid-webhooks ~1.0
运行迁移
此扩展包将创建一个名为 sendgrid_webhook_events 的表,用于存储所有接收到的 Sendgrid Webhook。
一旦包含该扩展包,此迁移将与您的正常迁移一起自动运行,因此只需调用
php artisan migrate
复制配置文件(可选)
此库无需本地配置即可运行,但是您可能希望使用配置文件来调整接收到的日志(例如,在接收到重复事件时接收日志)。
运行以下命令以复制扩展包配置文件
php artisan vendor:publish --provider="LaravelSendgridWebhooks\ServiceProvider"
让 Sendgrid 使用您的新事件 Webhook URL
前往 https://app.sendgrid.com/settings/mail_settings 并点击“事件通知”部分。
您的 HTTP Post URL 是: https://yourwebsite.com/sendgrid/webhook
使用库
查询记录
此库使用标准的 Laravel Eloquent 模型,因此您可以像查询其他任何模型一样查询它。
// Include the class use \LaravelSendgridWebhooks\Models\SendgridWebhookEvent; //////////////////// // Get all records: SendgridWebhookEvent::all(); // Get all by message ID: $sendgridMessageId = 'abc123'; SendgridWebhookEvent::where('sg_message_id', $sendgridMessageId)->all(); // Get all by event ID: $sendgridEventId = 'xyz987'; SendgridWebhookEvent::where('sg_event_id', $sendgridEventId)->all(); // Get all by event type SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::PROCESSED)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::DEFERRED)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::DELIVERED)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::OPEN)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::CLICK)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::BOUNCE)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::DROPPED)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::SPAMREPORT)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::UNSUBSCRIBE)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::GROUP_UNSUBSCRIBE)->all(); SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::GROUP_RESUBSCRIBE)->all(); // Count all bounces SendgridWebhookEvent::where('event', LaravelSendgridWebhooks\Enums::BOUNCE)->count();
与记录交互
访问所有事件类型包含的数据
// Get a record $event = SendgridWebhookEvent::first(); // Included with all event types $event->timestamp; $event->email; $event->event; $event->categories; $event->sg_event_id; $event->sg_message_id; $event->payload; // Array of full payload sent by Sendgrid
某些数据仅包含在特定事件中。您可以在以下位置找到这些属性的详细信息:https://sendgrid.com/docs/API_Reference/Event_Webhook/event.html#-Event-objects
我们将此数据包含在记录的 payload 数组中。例如
// Get a record $event = SendgridWebhookEvent::first(); // Access the reason attribute, included on 'dropped' and 'bounced' events. $event->payload['reason'];