testmonitor/slack-client

TestMonitor Slack 客户端。

v2.0.0 2024-04-10 10:31 UTC

This package is auto-updated.

Last update: 2024-09-15 07:25:45 UTC


README

Latest Stable Version CircleCI StyleCI codecov License

此软件包提供了一种非常基本、方便且统一的包装,用于向 Slack 发送帖子。开箱即用,它包括

目录

安装

要安装客户端,您需要使用 composer 依赖该软件包

$ composer require testmonitor/slack-client

使用 composer 的自动加载

require __DIR__.'/../vendor/autoload.php';

现在您已经设置好了!

使用

此客户端仅支持 OAuth 2.0 认证。您需要一个 Slack 应用程序才能继续。如果您还没有创建,请阅读 Slack 认证 API 文档 了解如何创建应用程序。

当您已有应用程序可用时,请确保它是一个新的 Slack 应用程序,因为此软件包不支持 Slack 经典应用程序。有关经典和新 Slack 应用程序之间差异的更多信息,请参阅旧版和新版 Slack 应用程序之间的差异

当您的 Slack 应用程序运行时,开始使用 OAuth 授权

$oauth = [
    'clientId' => '12345',
    'clientSecret' => 'abcdef',
    'redirectUri' => 'https://redirect.myapp.com/',
];

$slack = new \TestMonitor\Slack\Client($oauth);

header('Location: ' . $slack->authorizationUrl('incoming-webhook', 'state'));
exit();

这将将用户重定向到请求确认您的应用程序访问 Slack 的页面。请确保您的 redirectUrl 指向您的应用程序。Slack 将提供给您一个临时代码,允许您创建一个用于身份验证的访问代码。将重定向 URL 路由到以下代码

$oauth = [
    'clientId' => '12345',
    'clientSecret' => 'abcdef',
    'redirectUri' => 'https://redirect.myapp.com/',
];

$slack = new \TestMonitor\Slack\Client($oauth);

$token = $slack->fetchToken($_REQUEST['code']);

当一切顺利时,您应该有一个访问令牌(通过 AccessToken 对象可用)。AccessToken 包含您需要使用 webhook 发送消息的所有信息。

var_dump ($token->getValues());

array() {
    ["ok"] => true
    ["app_id"] => "APPID"
    ["authed_user"] => array(1) {}
    ["scope"] => "incoming-webhook"
    ["token_type"] => "bot"
    ["bot_user_id"] => "USERID"
    ["team"] => array(2) {}
    ["enterprise"] => null
    ["is_enterprise_install"] => false
    ["incoming_webhook"] => array(4) {
      ["channel"] => "#testmonitor"
      ["channel_id"] => "CHANNELID"
      ["configuration_url"] => "https://domain.slack.com/services/B123456USA"
      ["url"] => "https://hooks.slack.com/services/T123456/B123456USA/tEsTm0n1t0r"
    }

请确保在数据库中保存传入的 webhook URL,您稍后需要它来发送消息。

如果您的 Slack 应用程序未配置为轮换令牌,那么您现在就完成了!

当启用令牌轮换时,您的访问令牌将有效期为 十二小时。之后,您必须刷新令牌以重新获得访问权限。

$oauth = ['clientId' => '12345', 'clientSecret' => 'abcdef', 'redirectUri' => 'https://redirect.myapp.com/'];
$token = new \TestMonitor\Slack\Token('eyJ0...', '0/34ccc...', 1574600877); // the token you got last time

$slack = new \TestMonitor\Slack\Client($oauth, $token);

if ($token->expired()) {
    $newToken = $slack->refreshToken();
}

新的令牌将再次有效十二小时。

示例

向 Slack 发送一条简单的消息

$message = Kit::newMessage()->text('Hello world!');

$slack->postMessage('https://webhook.url/', $message);

Block Kit 允许您创建更全面的邮件。以下是一个示例

$user = (object) ['name' => 'John Doe'];

$message = Kit::newMessage()
    ->tap(function (Message $message) {
        $message->newSection()
            ->mrkdwnText("*{$user->name}* created a new issue");
    })
    ->divider()
    ->tap(function (Message $message) {
        $message->newContext()
            ->mrkdwnText('Status: *Open*')
            ->mrkdwnText('Priority: *High*')
            ->mrkdwnText('Resolution: *Unresolved*');
    })

$slack->postMessage('https://webhook.url/', $message);

有关使用 Block Kit 编写消息的更多信息,请参阅 Slack Block Kit for PHP 文档 或参阅官方 Slack Block Kit 文档

测试

此软件包包含集成测试。您可以使用 PHPUnit 运行它们。

$ vendor/bin/phpunit

变更日志

有关更多信息,请参阅 变更日志

贡献

有关贡献的详细信息,请参阅 CONTRIBUTING

鸣谢

许可

MIT许可证(MIT)。更多信息请参阅许可证