meilleursbiens / laravel-slack-events
轻松处理Laravel中的Slack事件
Requires
- illuminate/http: ^10
- illuminate/routing: ^10
- illuminate/support: ^10
Requires (Dev)
- orchestra/testbench: ~3.0||^4.0||^5.1
- phpunit/phpunit: ^4.7||^5.0||^8.0||^9.0
README
像使用Laravel 10原生事件和事件监听器一样轻松地与Slack事件API协同工作。
使用此包的Slack事件API的原因
- 基于原生Laravel事件
- 支持所有Slack事件类型(包括新工作空间应用的 eventos!)
- 支持令牌验证
- 支持URL验证和"challenge"请求
- PSR兼容代码
- 完整文档
- 几乎全部测试覆盖
- 文档中有很多表情符号(甚至有猫!🐈)
安装
1) 使用Composer要求包
composer require meilleursbiens/laravel-slack-events
2) 如果你使用的是5.5或更高版本的Laravel,SlackEventsServiceProvider将被自动发现。快速开始!
3) 如果你使用的是低于5.5版本的Laravel,你仍然需要手动注册服务提供者。打开config/app.php
并将\MeilleursBiens\LaravelSlackEvents\SlackEventsServiceProvider::class
添加到providers[]
数组中。
例如
// ... 'providers' => [ // ... // A whole bunch of providers // ... \MeilleursBiens\LaravelSlackEvents\SlackEventsServiceProvider::class, ], // ...
如果你使用的是Laravel 5.3或更高版本,你将在config/app.php
中找到一个注释,其中包含类似/* Package Service Providers... */
的文本,这可以帮助你找到正确的地方。
4) 发布配置文件
php artisan vendor:publish
选择服务提供者的选项,或者在底部的Tag:
列表中找到slack-events
。
接下来我们将配置一些设置以使用Slack API。
5) 创建一个应用或打开现有的一个。如果你想使用Slack的新工作空间应用,请阅读开发者预览中的信息,并创建一个新的工作空间令牌应用以开始。
如果你不使用工作空间应用,请打开Slack应用页面并创建一个新的用户令牌应用。
如果你想要修改现有应用以与Slack-Events一起使用,你可以在你的应用页面上找到工作空间令牌应用和用户令牌应用。
6) 创建或打开应用后,你应该会看到基本信息页面。向下滚动到“应用凭据”部分,并复制底部的验证令牌。
打开.env
并将你的验证令牌粘贴在'SLACK_EVENT_TOKEN'
键下
SLACK_EVENT_TOKEN=your-token
7) 现在打开“事件订阅”页面。在这里你必须启用事件,添加你希望监听的事件,并设置请求URL。请求URL是config/slackEvents.php
文件中的'route'
键
return [ /* |------------------------------------------------------------- | Your validation token from "App Credentials" |------------------------------------------------------------- */ 'token' => env('SLACK_EVENT_TOKEN', 'your-validation-token-here'), /* |------------------------------------------------------------- | Events Request URL — path, where events will be served |------------------------------------------------------------- */ 'route' => '/api/slack/event/fire', // <===== THIS IS YOUR REQUEST URL ];
'route'
与内置的Laravel路由一样工作,因此如果你的网站URL是https://example.com
并且你的'route'
是/api/slack/event/fire
,则完整的请求URL是https://example.com/api/slack/event/fire
。你可以将其保持原样或设置自己的路由而不是默认的/api/slack/event/fire
。
此包将为您完成所有验证和"challenge"工作,因此您只需设置请求URL——默认情况下为
https://[your-site-url]/api/slack/event/fire
用法
也请参阅:快速示例.
感谢这个包,使用Slack事件与使用Laravel事件一样简单。所以如果您还没有阅读Laravel事件文档或Slack事件API文档,在开始之前强烈建议您阅读。
此包为具有Slack事件API支持的每个Slack事件提供了一个单独的Laravel事件类。例如,reaction_added
事件实现是MeilleursBiens\LaravelSlackEvents\Events\ReactionAdded
类。
也请参阅:支持的事件及其类的完整列表。
每个事件类都有代表实际Slack事件请求的公共字段
例如,如果您想从reaction_added事件中获取反应名称,您可以通过以下方式从ReactionAdded
事件类中获取
$reactionAdded->event['reaction']; // reaction name, something like :thumbsup:
因此,假设我们想要创建一个reaction_added
Slack事件监听器。我们需要做什么?
示例
1) 打开App/Listeners
目录(如果不存在则创建它)。现在创建一个新文件,命名为ReactionAddedListener.php
。粘贴以下代码
<?php namespace App\Listeners; use \MeilleursBiens\LaravelSlackEvents\Events\ReactionAdded; use Illuminate\Support\Facades\Log; use Illuminate\Contracts\Queue\ShouldQueue; class ReactionAddedListener implements ShouldQueue { /** * Create the event listener. * * @return void */ public function __construct() { // Here you can setup something } /** * Handle the event. * * @param ReactionAdded $event * @return void */ public function handle(ReactionAdded $reactionAdded) { // Do some magic with event data Log::info('New reaction added, reaction name is: ' . $reactionAdded->event['reaction']); } }
如你所见,它是一个正常的事件监听器。你可能注意到监听器实现了ShouldQueue
——这对于我们的应用必须遵守Slack事件API的三秒内响应请求
的要求非常有用。如果您想在事件监听器中执行一些长时间运行的操作,您需要配置一个队列。
2) 现在将此监听器添加到/App/Providers/EventServiceProvider.php
,就像添加其他任何事件监听器一样
// ... protected $listen = [ // ... \MeilleursBiens\LaravelSlackEvents\Events\ReactionAdded::class => [ \App\Listeners\ReactionAddedListener::class ] ]; // ...
3) 利润!您可以开始了。
🍒 支持的事件及其类的完整列表
🌺 贡献
请随意星标此仓库,创建pull请求或问题报告,以及报告错别字。
📚 参考
- 阅读Slack事件API官方文档
- 阅读Laravel事件文档
- 为了进行Slack Web API调用,我们推荐使用Laravel Slack API包