vluzrmos / slack-api
Slack.com WEB API的包装器。
Requires
- guzzlehttp/guzzle: ~5.3 || ~6.0 || ~7.0
- illuminate/cache: ~6.0 || ~7.0 || ~8.0 || ~9.0|^10.0
- illuminate/support: ~6.0 || ~7.0 || ~8.0 || ~9.0|^10.0
- nesbot/carbon: 1.* || 2.*
This package is auto-updated.
Last update: 2024-09-05 17:12:25 UTC
README
此包提供了一个简单的方式来使用 Slack API。
安装
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 Token
或User 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进行通用请求:get
、post
、put
、patch
、delete
... 所有允许的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
允许您发送、获取信息、删除或仅列出文件:info
、lists
、upload
、delete
。
组API
Vluzrmos\SlackApi\Contracts\SlackGroup
与SlackChannel相同的方法,但操作组并具有额外的方法:open
、close
、createChild
即时消息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 命名空间中的方法。