SlackKit:Swift 中的 Slack 应用
描述
SlackKit 简化了使用 Swift 构建 Slack 应用。
它旨在提供 Slack 的实时消息 API以及可由 机器人用户访问的网页 API的所有功能。SlackKit 还支持 Slack 的OAuth 2.0 流, 包括 添加到 Slack 和 通过 Slack 登录 按钮, 入站 webhook, 斜杠命令,以及 消息按钮。
安装
Swift 包管理器
将 SlackKit
添加到你的 Package.swift
let package = Package(
dependencies: [
.package(url: "https://github.com/pvzig/SlackKit.git", .upToNextMinor(from: "4.6.0"))
]
)
当使用 Swift 包管理器构建时,SlackKit 默认包含 vapor websocket 框架,它需要 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 令牌创建一个机器人用户
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)
}
或者使用您的 应用程序的 客户端 ID
和 客户端密钥
创建一个可立即发布的 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)
/ 命令
在 Slack 中配置您的斜杠命令后 (您也可以作为 Slack App 的一部分提供斜杠命令),创建一个路由、该路由的中介响应,并将其添加到响应器中
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)
当用户输入该斜杠命令时,它将调用您配置的路由并返回指定的响应。
消息按钮
将消息按钮添加到您的响应,以增加额外的交互性。
要发送包含操作的消息,请将它们添加到附件中,并使用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)
要响应消息操作,请向您的SlackKitResponder
添加一个带有MessageActionMiddleware
和RequestRoute
的请求,并使用应用程序的验证令牌。
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、斜杠命令和消息按钮之类的本地开发,您可能想使用像ngrok这样的工具。
高级使用
不需要整个香蕉?希望更细粒度地控制底层实现细节?使用SlackKit所构建的可扩展框架
框架 | 描述 |
---|---|
SKClient | 编写自己的客户端实现 |
SKRTMAPI | 连接到Slack RTM API |
SKServer | 为Slack应用程序启动一个服务器 |
SKWebAPI | 访问Slack Web API |
示例
您可以在这里找到几个示例应用程序的源代码。
教程
联系我们
Twitter: @pvzig
Email: [email protected]