此库已停止积极开发。

SlackKit

安装

Swift Package Manager

SlackKit 添加到你的 Package.swift 文件中

let package = Package(
	dependencies: [
		.package(url: "https://github.com/pvzig/SlackKit.git", .upToNextMinor(from: "4.6.0"))
	]
)

当使用 Swift Package Manager 构建时,SlackKit 默认包含 vapor websocket framework,这需要 libressl。

你可以使用 homebrew 安装它:brew install libressl

有关更多详细信息,请参阅 SKRTMAPI 的 readme

Carthage

SlackKit 添加到你的 Cartfile 文件中

github "pvzig/SlackKit"

SlackKit 现在使用 .xcframeworks。当使用 Carthage 构建你的依赖项时,请指定一个平台:carthage bootstrap --use-xcframeworks --platform macos

CocoaPods

SlackKit 添加到你的 Podfile 文件中

pod 'SlackKit'

用法

要在你的项目中使用该库,请导入它

import SlackKit

基础知识

使用 API 令牌创建一个 Bot 用户

import SlackKit

let bot = SlackKit()
bot.addRTMBotWithAPIToken("xoxb-SLACK-BOT-TOKEN")
// Register for event notifications
bot.notificationForEvent(.message) { (event, _) in
	// Your bot logic here
	print(event.message)
}

或者,使用你的 应用程序的 Client IDClient Secret 创建一个可立即启动的 Slack 应用

import SlackKit

let bot = SlackKit()
let oauthConfig = OAuthConfig(clientID: "CLIENT_ID", clientSecret: "CLIENT_SECRET")
bot.addServer(oauth: oauthConfig)

或者,直接调用 Slack Web API

import SlackKit

let bot = SlackKit()
bot.addWebAPIAccessWithToken("xoxb-SLACK-BOT-TOKEN")
bot.webAPI?.authenticationTest(success: { (success) in
	print(success)
}, failure: nil)

Slash 命令

Slack 中配置你的 Slash 命令之后(你也可以将 Slash 命令作为 Slack 应用 的一部分提供),为该路由创建一个路由、响应中间件,并将其添加到响应器

let slackkit = SlackKit()
let middleware = ResponseMiddleware(token: "SLASH_COMMAND_TOKEN", response: SKResponse(text: "👋"))
let route = RequestRoute(path: "/hello", middleware: middleware)
let responder = SlackKitResponder(routes: [route])
slackkit.addServer(responder: responder)

当用户输入该 Slash 命令时,它将命中你配置的路由,并返回你指定的响应。

消息按钮

消息按钮 添加到你的响应中以获得更多交互性。

要发送带有操作的消息,请将它们添加到附件中,并使用 Web API 发送它们

let helloAction = Action(name: "hello", text: "🌎")
let attachment = Attachment(fallback: "Hello World", title: "Welcome to SlackKit", callbackID: "hello_world", actions: [helloAction])
slackkit.webAPI?.sendMessage(channel: "CXXXXXX", text: "", attachments: [attachment], success: nil, failure: nil)

要响应消息操作,请使用你的应用程序的验证令牌将带有 MessageActionMiddlewareRequestRoute 添加到你的 SlackKitResponder

let response = ResponseMiddleware(token: "SLACK_APP_VERIFICATION_TOKEN", response: SKResponse(text: "Hello, world!"))
let actionRoute = MessageActionRoute(action: helloAction, middleware: response)
let actionMiddleware = MessageActionMiddleware(token: "SLACK_APP_VERIFICATION_TOKEN", routes:[actionRoute])
let actions = RequestRoute(path: "/actions", middleware: actionMiddleware)
let responder = SlackKitResponder(routes: [actions])
slackkit.addServer(responder: responder)

OAuth

Slack 有 许多不同的 OAuth 范围,它们可以以不同的方式组合。如果你的应用程序没有请求正确的 OAuth 范围,你的 API 调用将失败。

如果你使用 OAuth 并且使用“添加到 Slack”或“使用 Slack 登录”按钮进行身份验证,则会自动处理此问题。

对于诸如 OAuth、Slash 命令和消息按钮之类的本地开发,你可能需要使用诸如 ngrok 之类的工具。

高级用法

不需要整个功能?想要更好地控制底层实现细节?使用 SlackKit 构建的扩展框架

框架 描述
SKClient 编写你自己的客户端实现
SKRTMAPI 连接到 Slack RTM API
SKServer 启动 Slack 应用的服务器
SKWebAPI 访问 Slack Web API

示例

你可以在 这里 找到几个示例应用程序的源代码。