vluzrmos/slack-api

Slack.com WEB API的包装器。

v0.5.8 2023-06-05 14:35 UTC

README

Join the chat at https://gitter.im/vluzrmos/laravel-slack-api

此包提供了一个简单的方式来使用 Slack API

Latest Stable Version Total Downloads Latest Unstable Version License

安装

composer require vluzrmos/slack-api

Laravel上的安装

添加到 config/app.php

此包使用laravel的自动发现功能,服务提供者和所有外观都将自动发现。

服务提供者: \Vluzrmos\SlackApi\SlackApiServiceProvider::class

外观

[
    'SlackApi'              => Vluzrmos\SlackApi\Facades\SlackApi::class,
    'SlackChannel'          => Vluzrmos\SlackApi\Facades\SlackChannel::class,
    'SlackChat'             => Vluzrmos\SlackApi\Facades\SlackChat::class,
    'SlackGroup'            => Vluzrmos\SlackApi\Facades\SlackGroup::class,
    'SlackFile'             => Vluzrmos\SlackApi\Facades\SlackFile::class,
    'SlackSearch'           => Vluzrmos\SlackApi\Facades\SlackSearch::class,
    'SlackInstantMessage'   => Vluzrmos\SlackApi\Facades\SlackInstantMessage::class,
    'SlackUser'             => Vluzrmos\SlackApi\Facades\SlackUser::class,
    'SlackStar'             => Vluzrmos\SlackApi\Facades\SlackStar::class,
    'SlackUserAdmin'        => Vluzrmos\SlackApi\Facades\SlackUserAdmin::class,
    'SlackRealTimeMessage'  => Vluzrmos\SlackApi\Facades\SlackRealTimeMessage::class,
    'SlackTeam'             => Vluzrmos\SlackApi\Facades\SlackTeam::class,
    'SlackOAuth'          => Vluzrmos\SlackApi\Facades\SlackOAuth::class,
    'SlackOAuthV2'          => Vluzrmos\SlackApi\Facades\SlackOAuthV2::class,
]

Lumen上的安装

bootstrap/app.php 中添加该行

<?php
// $app->register('App\Providers\AppServiceProvider'); (by default that comes commented)
$app->register('Vluzrmos\SlackApi\SlackApiServiceProvider');

?>

如果您想使用外观,请在 bootstrap/app.php 中添加以下行

<?php

class_alias('Vluzrmos\SlackApi\Facades\SlackApi', 'SlackApi');
class_alias('Vluzrmos\SlackApi\Facades\SlackChannel', 'SlackChannel');
class_alias('Vluzrmos\SlackApi\Facades\SlackChat', 'SlackChat');
class_alias('Vluzrmos\SlackApi\Facades\SlackGroup', 'SlackGroup');
class_alias('Vluzrmos\SlackApi\Facades\SlackUser', 'SlackUser');
class_alias('Vluzrmos\SlackApi\Facades\SlackTeam', 'SlackTeam');
//... and others

?>

否则,只需使用单例快捷方式

<?php

/** @var \Vluzrmos\SlackApi\Contracts\SlackApi $slackapi */
$slackapi     = app('slack.api');

/** @var \Vluzrmos\SlackApi\Contracts\SlackChat $slackchat */
$slackchat    = app('slack.chat');

/** @var \Vluzrmos\SlackApi\Contracts\SlackChannel $slackchannel */
$slackchannel = app('slack.channel');

//or

/** @var \Vluzrmos\SlackApi\Contracts\SlackApi $slackapi */
$slackapi  = slack();

/** @var \Vluzrmos\SlackApi\Contracts\SlackChat $slackchat */
$slackchat = slack('chat'); // or slack('slack.chat')

//...
//...

?>

Slack OAuth令牌

要获取您的Slack令牌,您必须在 Slack Apps 上创建一个应用,然后在应用页面侧菜单“功能”->“OAuth & Permissions”中授予您需要的权限,然后转到“Scopes”部分,令牌可以是您需要的Bot TokenUser Token

然后重新安装应用到您的工作区。

注意:如果您编辑任何权限,则必须重新安装应用到您的工作区。

配置

config/services.php 中配置您的Slack团队令牌

<?php

[
    //...,
    'slack' => [
        'token' => 'your token here'
    ]
]

?>

默认情况下,所有API方法都将返回对象,要将它更改为关联数组,首先发布slack-api配置,然后将 response_to_assoc_array 设置为true

php artisan vendor:publish --provider="Vluzrmos\SlackApi\SlackApiServiceProvider"

用法

<?php

//Lists all users on your team
SlackUser::lists(); //all()

//Lists all channels on your team
SlackChannel::lists(); //all()

//List all groups
SlackGroup::lists(); //all()

//Invite a new member to your team
SlackUserAdmin::invite("example@example.com", [
    'first_name' => 'John',
    'last_name' => 'Doe'
]);

//Send a message to someone or channel or group
SlackChat::message('#general', 'Hello my friends!');

//Upload a file/snippet
SlackFile::upload([
    'filename' => 'sometext.txt',
    'title' => 'text',
    'content' => 'Nice contents',
    'channels' => 'C0440SZU6' //can be channel, users, or groups ID
]);

// Search for files or messages
SlackSearch::all('my message');

// Search for files
SlackSearch::files('my file');

// Search for messages
SlackSearch::messages('my message');

// or just use the helper

//Autoload the api
slack()->post('chat.postMessage', [...]);

//Autoload a Slack Method
slack('Chat')->message([...]);
slack('Team')->info();

?>

使用依赖注入

<?php

namespace App\Http\Controllers;

use Vluzrmos\SlackApi\Contracts\SlackUser;

class YourController extends Controller{
    /** @var  SlackUser */
    protected $slackUser;

    public function __construct(SlackUser as $slackUser){
        $this->slackUser = $slackUser;
    }

    public function controllerMethod(){
        $usersList = $this->slackUser->lists();
    }
}

?>

所有可注入的合同

通用API

Vluzrmos\SlackApi\Contracts\SlackApi

允许您使用以下HTTP动词对API进行通用请求:getpostputpatchdelete... 所有允许的API方法您都可以在这里看到: Slack Web API Methods

还可以加载SlackMethod合同

<?php

/** @var SlackChannel $channel **/
$channel = $slack->load('Channel');
$channel->lists();

/** @var SlackChat $chat **/
$chat = $slack->load('Chat');
$chat->message('D98979F78', 'Hello my friend!');

/** @var SlackUserAdmin $chat **/
$admin = $slack('UserAdmin'); //Minimal syntax (invokable)
$admin->invite('jhon.doe@example.com');

?>

频道API

Vluzrmos\SlackApi\Contracts\SlackChannel

允许您操作频道:邀请存档重命名加入踢出设置目的...

聊天API

Vluzrmos\SlackApi\Contracts\SlackChat

允许您使用方法删除消息更新发送、更新和删除消息。

文件API

Vluzrmos\SlackApi\Contracts\SlackFile

允许您发送、获取信息、删除或仅列出文件:infolistsuploaddelete

组API

Vluzrmos\SlackApi\Contracts\SlackGroup

与SlackChannel相同的方法,但操作组并具有额外的方法:openclosecreateChild

即时消息API(直接消息)

Vluzrmos\SlackApi\Contracts\SlackInstantMessage

允许您管理团队成员的即时消息。

实时消息API

Vluzrmos\SlackApi\Contracts\SlackRealTimeMessage

允许您列出所有频道和用户此刻的存在。

搜索API

Vluzrmos\SlackApi\Contracts\SlackSearch

查找消息或文件。

星标API

Vluzrmos\SlackApi\Contracts\SlackStar

列出所有已标记项。

团队API

Vluzrmos\SlackApi\Contracts\SlackTeam

获取有关您的团队的信息。

用户API

Vluzrmos\SlackApi\Contracts\SlackUser

获取有关您团队中的用户的信息或仅检查您的存在或状态。

用户管理API

Vluzrmos\SlackApi\Contracts\SlackUserAdmin

邀请新成员加入您的团队。

OAuth API

Vluzrmos\SlackApi\Contracts\SlackOAuth

OAuth Slack API 命名空间中的方法。

OAuthV2 API

Vluzrmos\SlackApi\Contracts\SlackOAuthV2

OAuth v2 Slack API 命名空间中的方法。

许可证

DBAD 许可证.