- Notifications
You must be signed in to change notification settings - Fork136
pvzig/SlackKit
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
AddSlackKit to yourPackage.swift
letpackage=Package(dependencies:[.package(url:"https://github.com/pvzig/SlackKit.git",.upToNextMinor(from:"4.6.0"))])
When built using Swift Package Manager, SlackKit includes thevapor websocket framework by default which requires libressl.
You can install it withhomebrew:brew install libressl
For additional details, see theSKRTMAPI readme.
AddSlackKit to yourCartfile:
github "pvzig/SlackKit"SlackKit is now using .xcframeworks. When building your dependencies with carthage, please specify a platform:carthage bootstrap --use-xcframeworks --platform macos
AddSlackKit to yourPodfile:
pod 'SlackKit'To use the library in your project import it:
import SlackKitCreate a bot user with an API token:
import SlackKitletbot=SlackKit()bot.addRTMBotWithAPIToken("xoxb-SLACK-BOT-TOKEN")// Register for event notificationsbot.notificationForEvent(.message){(event, _)in// Your bot logic hereprint(event.message)}
or create a ready-to-launch Slack app with yourapplication’sClient ID andClient Secret:
import SlackKitletbot=SlackKit()letoauthConfig=OAuthConfig(clientID:"CLIENT_ID", clientSecret:"CLIENT_SECRET")bot.addServer(oauth: oauthConfig)
or just make calls to the Slack Web API:
import SlackKitletbot=SlackKit()bot.addWebAPIAccessWithToken("xoxb-SLACK-BOT-TOKEN")bot.webAPI?.authenticationTest(success:{(success)inprint(success)}, failure:nil)
Afterconfiguring your slash command in Slack (you can also provide slash commands as part of aSlack App), create a route, response middleware for that route, and add it to a responder:
letslackkit=SlackKit()letmiddleware=ResponseMiddleware(token:"SLASH_COMMAND_TOKEN", response:SKResponse(text:"👋"))letroute=RequestRoute(path:"/hello", middleware: middleware)letresponder=SlackKitResponder(routes:[route])slackkit.addServer(responder: responder)
When a user enters that slash command, it will hit your configured route and return the response you specified.
Addmessage buttons to your responses for additional interactivity.
To send messages with actions, add them to an attachment and send them using the Web API:
lethelloAction=Action(name:"hello", text:"🌎")letattachment=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)
To respond to message actions, add aRequestRoute withMessageActionMiddleware using your app’s verification token to yourSlackKitResponder:
letresponse=ResponseMiddleware(token:"SLACK_APP_VERIFICATION_TOKEN", response:SKResponse(text:"Hello, world!"))letactionRoute=MessageActionRoute(action: helloAction, middleware: response)letactionMiddleware=MessageActionMiddleware(token:"SLACK_APP_VERIFICATION_TOKEN", routes:[actionRoute])letactions=RequestRoute(path:"/actions", middleware: actionMiddleware)letresponder=SlackKitResponder(routes:[actions])slackkit.addServer(responder: responder)
Slack hasmany different oauth scopes that can be combined in different ways. If your application does not request the proper OAuth scopes, your API calls will fail.
If you authenticate using OAuth and the Add to Slack or Sign in with Slack buttons this is handled for you.
For local development of things like OAuth, slash commands, and message buttons, you may want to use a tool likengrok.
Don’t need the whole banana? Want more control over the low-level implementation details? Use the extensible frameworks SlackKit is built on:
| Framework | Description |
|---|---|
| SKClient | Write your own client implementation |
| SKRTMAPI | Connect to the Slack RTM API |
| SKServer | Spin up a server for a Slack app |
| SKWebAPI | Access the Slack Web API |
You can find the source code for several example applicationshere.
About
Build Slack apps, in Swift
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.