allermedia/laravel-sns-events

laravel-sns-events的描述。

1.0.4 2020-04-14 08:49 UTC

This package is auto-updated.

Last update: 2020-06-14 09:09:38 UTC


README

Latest Stable Version Total Downloads Monthly Downloads License

注意

这是一个从https://github.com/rennokki/laravel-sns-events分叉而来的项目,它提供了一个更简单的实现,但没有对传入请求进行安全验证。

Laravel SNS Events

Laravel SNS Events 允许您通过 Laravel 事件监听 SNS webhooks。它实现了一个控制器,用于正确监听 SNS HTTP(s) webhooks 并触发您可以在 Laravel 中监听的事件。

如果您不熟悉 Laravel 事件与监听器,请确保您已经查阅了 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

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全性

如果您发现任何安全问题,请通过 DummyAuthorEmail 发送电子邮件,而不是使用问题跟踪器。

许可

MIT 许可证 (MIT)。有关更多信息,请参阅许可文件