meilleursbiens/laravel-slack-events

轻松处理Laravel中的Slack事件

1.0.0 2023-10-16 08:13 UTC

This package is auto-updated.

Last update: 2024-09-16 10:43:58 UTC


README

Latest Stable Version License

像使用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) 创建或打开应用后,你应该会看到基本信息页面。向下滚动到“应用凭据”部分,并复制底部的验证令牌

verification_token

打开.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

request_url

用法

也请参阅:快速示例.

感谢这个包,使用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请求或问题报告,以及报告错别字。

📚 参考