testmonitor / slack-client
TestMonitor Slack 客户端。
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.3
- league/oauth2-client: ^2.6
- slack-php/slack-block-kit: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.4
- phpunit/phpunit: ^10.0
- scrutinizer/ocular: ^1.9
- squizlabs/php_codesniffer: ^3.7
README
此软件包提供了一种非常基本、方便且统一的包装,用于向 Slack 发送帖子。开箱即用,它包括
- Slack V2 OAuth 2.0 认证协议(灵感来源于Slack OAuth 2.0 客户端提供者)。
- Slack Block Kit for PHP,这是一个库,提供 PHP 编写消息/模态的 OOP 接口。
目录
安装
要安装客户端,您需要使用 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。
鸣谢
- Thijs Kok - 主要开发者 - ThijsKok
- Stephan Grootveld - 开发者 - Stefanius
- 弗兰克·库里恩 - 开发者 - FrankIsGek
- 穆里尔·努德尔 - 开发者 - ThaNoodle
许可
MIT许可证(MIT)。更多信息请参阅许可证。