settermjd / twilio-eventstreams-webhook-validator-slim
用于验证 Twilio Event Streams Webhooks 的 Slim 中间件
Requires
- php: ~8.3.0
- mezzio/mezzio-problem-details: ^1.14
- psr/http-message: ^2.0
- twilio/sdk: ^8.3
Requires (Dev)
- ext-ast: *
- friendsofphp/php-cs-fixer: ^3.64
- phpunit/phpunit: ^10.5
- psalm/plugin-phpunit: ^0.19.0
- slim/psr7: ^1.7
- slim/slim: ^4.14
- squizlabs/php_codesniffer: ^3.10
- vimeo/psalm: *
README
这是一个为 Slim 框架 (v4) 设计的小型中间件,用于验证 Twilio Event Streams Webhook。
它是如何工作的?
将中间件添加到应用程序的一个或多个路由后,当路由被分发时,会验证 webhook。如果 webhook 是 有效的,则调用下一个请求。否则,返回一个 HTTP 400 错误请求,以及一个包含 JSON 或 XML 格式的 问题详情 响应,格式取决于请求的 Accept 标头。
为什么使用它?
您可以自己编写功能代码;如果您想了解如何操作,可以查看 Twilio 博客上的 教程。但,这个中间件避免了这种需要。只需初始化并添加到相关路由中,然后就可以专注于应用程序的剩余功能。
先决条件
要使用此中间件,您需要一个 Twilio 账户(免费或付费均可)。如果您是 Twilio 的新用户,可以 创建一个免费账户。
⚡️ 快速开始
要在您的 Slim (v4) 应用程序中使用中间件,首先通过运行以下命令将项目添加为依赖项
composer require settermjd/twilio-eventstreams-webhook-validator-slim
然后,在应用程序的适当部分初始化一个新的 EventStreams\EventStreamsWebhookValidatorMiddleware
对象,它需要三个参数
- 应用程序的公共 URI。在开发过程中,您可以使用 ngrok 将应用程序公开到公共互联网并生成公共 URI。
- webhook URI 的路径
- 一个
\Twilio\Security\RequestValidator
对象,初始化为您的 Twilio 认证令牌
注意: EventStreamsWebhookValidatorMiddleware
的前两个参数确保在 webhook 验证过程中使用应用程序的正确公共 URI。
然后,按照 Slim 中间件文档 的说明将中间件添加到相应的路由。下面,您可以找到将其添加为 路由中间件 的示例
<?php declare(strict_types=1); require_once('vendor/autoload.php'); use EventStreams\EventStreamsWebhookValidatorMiddleware; use Twilio\Security\RequestValidator; $app = new \Slim\App(); $eventStreamsWebhookValidatorMiddleware = new EventStreamsWebhookValidatorMiddleware( "<<THE APP'S PUBLIC URL>>", "<<THE WEBHOOK PATH>>", new RequestValidator("<<YOUR TWILIO AUTH TOKEN>>") ); $app->get('/', function ($request, $response, $args) { $response->getBody()->write(' Hello '); return $response; })->add($eventStreamsWebhookValidatorMiddleware); $app->run();
然后,将 <<THE APP'S PUBLIC URL>>"
替换为应用程序的公共 URI,将 <<THE WEBHOOK PATH>>
替换为处理 webhook 请求的路由路径,将 <<YOUR TWILIO AUTH TOKEN>>
替换为您的 Twilio 认证令牌。
贡献
如果您想为此项目做出贡献,无论您是否发现了问题还是只想改进它,以下是方法
您觉得这个项目有用吗?
如果您觉得这个项目有用,并且想要表示感谢和/或支持其积极开发,请按照以下方式操作
- 给这个项目添加一个GitHub Star
- 在您的博客中写一篇关于这个项目的有趣文章