allermedia/laravel-sns-events
laravel-sns-events 的描述。
Requires
Requires (Dev)
- orchestra/testbench: ^3.8
README
注意
这个项目最初是从 https://github.com/rennokki/laravel-sns-events 分支出来的 - 它提供了一个更简单的实现,但没有对传入请求进行安全验证。
Laravel SNS Events
Laravel SNS Events 允许您通过 Laravel Events 监听 SNS Webhooks。它实现了一个控制器,用于正确监听 SNS HTTP(s) Webhooks 并在 Laravel 中触发您可以监听的事件。
如果您不熟悉 Laravel Events & Listeners,请确保您已经查看了 laravel.com 上的文档部分,因为此包将需要您理解此概念。
安装
$ composer require allermedia/laravel-sns-events
使用
该包包含两个事件类
AllerMedia\LaravelSnsEvents\Events\SnsEvent
- 在每个已验证的 SNS 消息上触发AllerMedia\LaravelSnsEvents\Events\SnsSubscriptionConfirmation
- 当订阅被确认时触发
该包包含一个控制器,将为您处理响应。在您的 web.php
中注册路由
... // you can choose any route Route::any('/aws/sns', 'AllerMedia\LaravelSnsEvents\Http\Controllers\SnsController@handle');
SNS 通过 POST 发送数据,因此您需要在您的 VerifyCsrfToken.php
中将您的路由列入白名单
protected $except = [ ... 'aws/sns/', ];
您需要一个 AWS 账户,并注册一个 SNS 主题,并设置一个订阅以 HTTP(s) 协议指向您刚刚注册的路由。
如果您已注册路由并创建了一个 SNS 主题,您应从 AWS 仪表板注册 URL 并点击确认按钮。不久之后,如果您的路由实现得当,您将看到您的端点已注册。
要处理事件,您应在您的 app/Providers/EventServiceProvider.php
中添加事件
use AllerMedia\LaravelSnsEvents\Events\SnsEvent; use AllerMedia\LaravelSnsEvents\Events\SnsSubscriptionConfirmation; ... protected $listen = [ ... SnsEvent::class => [ // add your listeners here for SNS events ], SnsSubscriptionConfirmation::class => [ // add your listeners here in case you want to listen to subscription confirmation ], ]
您可以从您的监听器中这样访问 SNS 消息
class MyListener { ... public function handle($event) { // $event->message is an array } }
例如,将 AWS Polly 文本到语音综合会返回类似下面的数组到 $event->message
[
'taskId' => '...',
'taskStatus' => 'FAILED',
'taskStatusReason' => 'Error occurred while trying to upload file to S3. Please verify that the bucket existsin this region and you have permission to write objects to the specified bucket.',
'outputUri' => 's3://...',
'creationTime' => '2019-05-29T15:27:31.231Z',
'requestCharacters' => 58,
'snsTopicArn' => '...',
'outputFormat' => 'Mp3',
'sampleRate' => '22050',
'speechMarkTypes' => [],
'textType' => 'Text',
'voiceId' => 'Joanna',
]
测试
使用以下命令运行测试
vendor/bin/phpunit
更新日志
请参阅 更新日志 了解最近更改了什么。
贡献
请参阅 贡献 了解详细信息。
安全
如果您发现任何安全相关的问题,请通过 DummyAuthorEmail 邮件而不是使用问题跟踪器来报告。
许可证
MIT 许可证(MIT)。请参阅许可证文件获取更多信息。