lisennk/laravel-slack-events-api

Laravel 5, 6, 7和8的Slack Events API

1.3 2021-04-27 13:48 UTC

This package is not auto-updated.

Last update: 2024-09-16 12:14:10 UTC


README

Latest Stable Version License Build Status

与Laravel 7事件和事件监听器一样容易地使用Slack Events API。

🔗 使用此包的理由,请参阅Slack Events API

  • 基于原生Laravel事件
  • 支持所有Slack事件类型(包括新工作空间应用的!)
  • 支持令牌验证
  • 支持URL验证和"challenge"请求
  • PSR兼容的代码
  • 完整的文档
  • 几乎100%的测试覆盖率
  • 文档中有许多表情符号(甚至有猫!🐱)

🌎 安装

1) 使用Composer安装包

composer require lisennk/laravel-slack-events-api

2) 如果你使用的是Laravel 5.5或更高版本,SlackEventsServiceProvider将自动发现。快速开始!

3) 如果你使用的是低于5.5的Laravel版本,你仍需手动注册服务提供商。打开config/app.php,将\Lisennk\LaravelSlackEvents\SlackEventsServiceProvider::class添加到providers[]数组中。

例如

// ...

'providers' => [
// ...
// A whole bunch of providers
// ...

\Lisennk\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 事件实现是 Lisennk\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 \Lisennk\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']);
    }
}

如你所见,它是一个普通的事件监听器。你可能注意到了监听器 implements ShouldQueue — 这很有用,因为我们的应用程序必须遵守 Slack 事件 API 条款,在 三秒内响应用户请求。如果您想在事件监听器中做一些长时间运行的操作,您需要配置一个 队列

2) 现在我们将此监听器添加到 /App/Providers/EventServiceProvider.php 中,就像其他任何事件监听器一样

// ...

protected $listen = [
        
        // ...

        \Lisennk\LaravelSlackEvents\Events\ReactionAdded::class => [
            \App\Listeners\ReactionAddedListener::class
        ]
    ];
    
// ...

3) 大功告成!您已经准备就绪。

🍒 支持的事件及其类的完整列表

🌺 贡献

您可以随意关注此存储库,创建拉取请求或问题,并报告错别字。

📚 参考