flourishlabs/saloon-slack

Saloon 连接器/Slack 请求

0.0.4 2023-03-11 16:24 UTC

README

Latest Version on Packagist Tests Total Downloads

介绍

由 Saloon 驱动的 Slack 的力量Saloon 文档

安装

使用 composer 安装此包

composer require flourishlabs/saloon-slack

使用 - API

实例

创建一个实例

use FlourishLabs\SaloonSlack\SlackConnector;

$slack = new SlackConnector('token');

通用 GET

$response = $slack->get('users.info', ['user' => 'W1234567890']);

$response = $slack->get('admin.emoji.add', [
    'name' => 'pikachu_wave',
    'url' => 'https://emojis.slackmojis.com/emojis/images/1643514747/7550/pikachu_wave.gif?1643514747',
]);

通用 POST

$slack->post('chat.postEphemeral', [
    'channel' => 'C1234567890',
    'text' => 'Well howdy!',
    'user' => 'U0HH0WDY',
]);

响应

响应对象上最实用的方法是 json

$response->json('channel_id');
$response->json('message_ts')

Saloon 文档 对响应的说明最好,但也提供了额外的 Slack 特定方法。

  • hasWarning(): bool & warning(): string 来自 Slack 文档:对于可能成功完成的有问题调用,ok 将为 true,warning 属性将包含一个简短的机器可读警告代码(或多个警告的逗号分隔列表)。
    if ($response->hasWarning()) {
        Log::warning($response->warning());
    }
  • hasError(): bool & error(): string 来自 Slack 文档 对于失败的结果,error 属性将包含一个简短的机器可读错误代码。
    if ($response->hasError()) {
        Log::error("Ah poo! {$response->error()}");
    }

使用 - OAuth

您还可以通过 SlackAuthConnector 与 Slack 的 OAuth 交互。

实例

创建一个 Auth 实例

use FlourishLabs\SaloonSlack\SlackAuthConnector;

$oauth = new SlackAuthConnector(
    $clientId,
    $clientSecret,
    $redirectUri,
);

生成 auth URL

您可能想要在会话中生成并存储 state 以在令牌交换期间进行验证。您需要将用户重定向到这个授权 URL

$oauth->getSlackAuthorizationUrl(
    $botScopes,
    $userScopes,
);  

交换

如果您需要访问机器人 用户令牌,则应返回响应。

$response = $oauth->getAccessToken(
    code: $request->get('code'),
    state: $request->get('state'),
    expectedState: $request->session()->get('slack.auth.state'),
    returnResponse: true,
);

$botToken = $response->json('access_token');
$userToken = $response->json('authed_user.access_token');

如果您只需要机器人令牌,则可以使用标准的 Saloon 设置(他们的文档)。

$authenticator = $oauth->getAccessToken($code, $state);

然后您可以使用这些令牌作为正常方式来实例化一个 SlackConnector。

use FlourishLabs\SaloonSlack\SlackConnector;

(new SlackConnector($response->json('access_token')))
->post('chat.postMessage', ['channel' => 'C123', 'text' => 'Cor, this is good eh']);

测试

vendor/bin/pest

变更日志

请参阅 CHANGELOG 了解最近发生了哪些变化。

鸣谢

许可

MIT 许可证(MIT)。请参阅 许可文件 了解更多信息。