vivifyideas / slack-api
Slack.com WEB API 的包装器。
Requires
- php: >=5.5.9
- guzzlehttp/guzzle: ~5.3|~6.0
- illuminate/cache: ~7.0
- illuminate/support: ~7.0
This package is auto-updated.
Last update: 2024-09-19 22:01:50 UTC
README
本包提供了一种简单的方式来使用 Slack API。
安装
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 进行通用请求:get
、post
、put
、patch
、delete
……您可以在此处查看所有允许的 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
允许您使用 delete
、message
、update
方法发送、更新和删除消息。
文件 API
VivifyIdeas\SlackApi\Contracts\SlackFile
允许您发送、获取信息、删除或仅列出文件:info
、lists
、upload
、delete
。
群组 API
VivifyIdeas\SlackApi\Contracts\SlackGroup
与 SlackChannel 具有相同的方法,但操作的是群组,并具有额外的 open
、close
、createChild
方法。
即时消息 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 命名空间中的方法。