vivifyideas/slack-api

Slack.com WEB API 的包装器。

v0.5.4 2020-03-10 08:46 UTC

README

本包提供了一种简单的方式来使用 Slack API

Latest Stable Version Total Downloads Latest Unstable Version License

安装

composer require vivifyideas/slack-api

在 Laravel 5 上的安装

添加到 config/app.php

<?php

[
    'providers' => [
        VivifyIdeas\SlackApi\SlackApiServiceProvider::class,
    ]
]

?>

使用 ::class 标注是可选的。

如果需要,添加 Facades 到你的别名

<?php

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

?>

使用 ::class 标注是可选的。

在 Lumen 上的安装

bootstrap/app.php 中添加该行

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

?>

如果你想使用 Facades,请在这 bootstrap/app.php 中添加这些行

<?php

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

?>

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

<?php

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

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

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

//or

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

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

//...
//...

?>

配置

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

<?php

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

?>

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

php artisan vendor:publish --provider="VivifyIdeas\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 VivifyIdeas\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

VivifyIdeas\SlackApi\Contracts\SlackApi

允许您使用以下 HTTP 动词对 API 进行通用请求:getpostputpatchdelete……您可以在此处查看所有允许的 API 方法:Slack Web API 方法

也可以加载 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

VivifyIdeas\SlackApi\Contracts\SlackChannel

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

聊天 API

VivifyIdeas\SlackApi\Contracts\SlackChat

对话 API

VivifyIdeas\SlackApi\Contracts\SlackConversation

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

文件 API

VivifyIdeas\SlackApi\Contracts\SlackFile

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

群组 API

VivifyIdeas\SlackApi\Contracts\SlackGroup

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

即时消息 API(直接消息)

VivifyIdeas\SlackApi\Contracts\SlackInstantMessage

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

实时消息 API

VivifyIdeas\SlackApi\Contracts\SlackRealTimeMessage

允许您列出当前所有频道和用户的在线状态。

搜索 API

VivifyIdeas\SlackApi\Contracts\SlackSearch

查找消息或文件。

星标 API

VivifyIdeas\SlackApi\Contracts\SlackStar

列出所有已标记项。

团队 API

VivifyIdeas\SlackApi\Contracts\SlackTeam

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

用户 API

VivifyIdeas\SlackApi\Contracts\SlackUser

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

用户管理 API

VivifyIdeas\SlackApi\Contracts\SlackUserAdmin

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

OAuth API

VivifyIdeas\SlackApi\Contracts\SlackOAuth

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

OAuthV2 API

VivifyIdeas\SlackApi\Contracts\SlackOAuthV2

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

许可证

DBAD 许可证.