eric-famiglietti/laravel-slack-events

Laravel 与 Slack Events API 集成包

1.0.0 2018-03-13 00:27 UTC

This package is not auto-updated.

Last update: 2024-09-28 04:20:35 UTC


README

Packagist Travis StyleCI

Laravel 集成 Slack Events API 的包。

简介

此包简化了在 Laravel 应用中设置 webhook 以接收通过 Slack Events API 发送的请求的过程。包处理令牌身份验证和 URL 验证,并将特定事件的处理留给您。事件可以通过作业或事件监听器进行处理。

在继续之前,建议您熟悉 Slack Events API 和可用的 事件类型,以便正确设置 Slack 与您的应用程序通信。

要求

  • PHP 7.1 或更高版本
  • Laravel 5.6

注意:这些要求是人为设置的。该包可能可以在更早版本的 Laravel 上运行,但仅与 Laravel 5.6 进行了测试。

安装

使用 Composer 安装最新版本

$ composer require eric-famiglietti/laravel-slack-events

使用以下方法发布配置文件

$ php artisan vendor:publish --provider="LaravelSlackEvents\SlackEventsServiceProvider" --tag="config"

用法

设置

此包需要设置一个 SLACK_EVENTS_TOKEN 环境变量。可以在 Slack 应用程序的仪表板上找到 验证令牌https://api.slack.com/apps/<app_id>),在 应用程序凭据 部分下。

为了本指南的目的,我们将使用的 webhook URL 为 https://app.tld/slack/events

首先,使用路由宏创建 webhook 路由

Route::slackEventsWebhook('slack/events');

然后,将路由添加到 VerifyCsrfToken 中间件的 $except 数组中

protected $except = [
    'slack/events',
];

创建 webhook 后,配置 Slack 将事件请求发送到 webhook。这可以在 Slack 应用程序的仪表板上的事件订阅页面(https://api.slack.com/apps/<app_id>/event-subscriptions)中完成。

如果您的应用程序是公开可访问的,您将开始接收事件请求到 webhook。事件可以通过作业或事件监听器进行处理。

作业

当事件被触发时可以执行作业。例如,当接收到 reaction_added 时分发作业,将以下内容添加到 config/slack-events.php

'jobs' => [
    'reaction_added' => \App\Jobs\SlackEvents\HandleReactionAdded::class,
],

作业将通过其构造函数接收事件负载

namespace App\Jobs\SlackEvents;

class HandleReactionAdded
{
    public $payload;

    public function __construct(array $payload)
    {
        $this->payload = $payload;
    }
    
    public function handle()
    {
        // ...
    }
}

事件

Laravel 事件监听器可以处理 Slack 事件请求。例如,要监听 reaction_added 事件,将元素添加到 EventServiceProvider$listen 属性中

protected $listen = [
    'slack-events::reaction_added' => [
        App\Listeners\SlackEvents\ReactionAddedListener::class,
    ],
];

相关的事件监听器可能如下所示

namespace App\Listeners\SlackEvents;

class ReactionAddedListener
{
    public function handle(array $payload)
    {
        // ...
    }
}

测试

使用以下命令运行包含的测试

$ vendor/bin/phpunit

致谢

特别感谢 ohdearapp/laravel-ohdear-webhooks 包,本包在很大程度上基于此包。

许可

此包在 MIT 许可证(MIT)下提供。有关更多信息,请参阅许可文件