lorenzo/cakephp-gridhook

SendGrid的Webhook事件处理器,适用于CakePHP

dev-master 2014-04-09 09:21 UTC

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);
		}
	}
}