lorenzo / cakephp-gridhook
SendGrid的Webhook事件处理器,适用于CakePHP
dev-master
2014-04-09 09:21 UTC
Requires
This package is auto-updated.
Last update: 2024-08-25 21:51:42 UTC
README
此插件提供了一种分发器过滤器,它将监听来自SendGrid的任何请求发送的webhook,并使用接收到的解码数据触发任何配置的回调。
这对于存储或计算您发送的电子邮件的统计信息非常有用,在电子邮件退订或标记为垃圾邮件时取消用户订阅。
要求
- CakePHP 2.x
- PHP 5.3+
- Composer
安装
此插件唯一支持的安装方法是使用Composer。只需将其添加到您的composer.json配置中
{
"require" : {
"lorenzo/cakephp-gridhook": "master"
}
}
启用插件
您需要在app/Config/bootstrap.php
文件中启用插件
CakePlugin::load('GridHook');
此外,在相同文件中,将以下内容添加到您的分发器过滤器数组中
Configure::write('Dispatcher.filters', array(
// ... Other filters ...
'GridHook' => array(
'callable' => 'GridHook.SendgridWebhookDispatcher',
'handler' => 'MyHandlerClass::aMethod' // Configure this value at will
)
));
handler
键是任何有效的可调用对象或闭包,它将在每次接收到来自SendGrid的事件时被调用。handler
键对此插件正确工作是必需的。另一个示例
Configure::write('Dispatcher.filters', array(
// ... Other filters ...
'GridHook' => array(
'callable' => 'GridHook.SendgridWebhookDispatcher',
'handler' => function($sendGridEvent) {
// Do some stuff
}
)
));
配置监听器URL
默认情况下,此插件将监听在/webhook/sendgrid
URL上,如果出于任何原因您想更改它,请将endpoint
键设置为另一个路径
Configure::write('Dispatcher.filters', array(
// ... Other filters ...
'GridHook' => array(
'callable' => 'GridHook.SendgridWebhookDispatcher',
'handler' => 'MyHandlerClass::aMethod' // Configure this value at will,
'endpoint' => '/sendgrid-hook'
)
));
处理来自SendGrid发送的事件
在handler
键中配置的回调将针对通过webhook接收的sendgrid生成的每个事件进行调用。此函数的第一个参数将是类型为SendGridEvent
的对象,它将包含发送给事件的事件属性。这是一个示例
App::uses('SendGridEvent', 'GridHook.Model');
class Newsletter extends AppModel {
public static function handleEvent(SendgidEvent $event) {
if ($event->isSpamReport()) {
ClassRegistry::init('User')->usubscribe($event->email);
}
}
}