fred/laravel-slack

Slack 服务提供者和消息编辑器

1.2.0 2020-11-20 06:37 UTC

This package is auto-updated.

Last update: 2024-09-20 15:30:05 UTC


README

Build Status

Slack 服务提供者

本项目以服务提供者方式

laravel/lumen 项目提供 Slack 物件操作

错误/消息 传递到 Slack 频道

安装

执行 composer 安装,在根目录下命令

composer require fred/laravel-slack

laravel/lumen 项目下配置 SlackServiceProvider

[lumen] - 在 /bootstrap/app.php 中加入

$app->register(Fred\SlackService\SlackServiceProvider::class);

[laravel] - 支持 laravel 自动发现

如果 Laravel 版本不支持,则需要手动在 /config/app.php 中加入

'providers' => [
    //...
    
    Fred\SlackService\SlackServiceProvider::class,
];

应用配置文件

[laravel] - 在项目目录下通过 artisan 命令

$ php artisan vendor:publish --provider="Fred\SlackService\SlackServiceProvider" --tag="config"

[lumen] - 在 /config 文件夹下放入 slack.php

/config/slack.php 设置内容

return [
    // 可設定多組 client 面對不同的 slack channel 及用途
    // key 值必需做區分
    'clients'   =>  [
        // 'clientName' => []
        // service provider 將綁定名稱為 "slack-{client_name}" 的 instance 在 container 中
        'error-report' => [
            'endpoint' => 'https://hooks.slack.com/services/xxxxxxx',  // slack web hook url
            'channel'  => 'my-test-channel',                           // slack channel
            'username' => 'Error Report'                               // slack messages' user name
        ],
        'custom-name' => [
            // 其他組 slack client 設定
        ],
    ],
];

使用方式

以下根据上述的注册示例扩展

基本传递消息

$slack = app('slack-error-report');
$slack->compose(function (Message $message) {
    $message->setText('slack message sending!');
    return $message;
})->send();

通过 MessageComposer 应用模板,增强消息内容

$slack = app('slack-error-report');
$slack->compose(function (Message $message) {
    // 產生 MessageComposer 物件    
    $messageComposer = new Fred\SlackServiceProvider\MessageComposer($message);
    
    // 套用模板所需的參數和值,預設使用 Exception template
    $data = [
        'exceptionContent' => 'Invalid user id',
        'requestContent' => 'https://oobox.com.tw',
        'envContent' => 'testing',
        'timeContent' => Carbon\Carbon::now()->toDateTimeString(),
        'traceContent' => "error trace code",
    ];
    $messageComposer->apply($data);
    return $messageComposer->getMessage();
})->send();

默认模板 (Exception template) 可用变量列表

  • exceptionTitle: 例外标题 (默认: Exception)
  • exceptionContent: 例外内容
  • requestTitle: 请求 URL 标题 (默认: Request)
  • requestContent: 请求 URL
  • envTitle: 环境标题 (默认: Environment)
  • envContent: 环境
  • timeTitle: 时间标题 (默认: Time)
  • timeContent: 时间
  • traceTitle: code trace 标题 (默认: Trace)
  • traceContent: code trace

自定义模板

要自定义模板,请参考 slack 负载文件,示例可参考套件预定义的 exception template /src/templates/ExceptionTemplate.php

生成 MessageComposer 物件后带入自定义的模板路径

// ...

// 產生 MessageComposer 物件    
$messageComposer = new Fred\SlackServiceProvider\MessageComposer($message);

// 帶入自定義的模板路徑
$messageComposer->useTemplate('/path/to/template');

// 後續組成資料
$data = [];
$messageComposer->apply($data);
return $messageComposer->getMessage();

// ...