Slack integration for flask
Project description
Flack
Integrate slack commands and actions with flask
Setup
Either initialize the app immediately:
from flack import Flack
flack = Flack(app)
Or use a deferred initialization:
from flack import Flack
flack = Flack()
def get_app():
# Create your flask application.
flack.init_app(app)
Configuration
FLACK_TOKEN
Must match the secret generated by Slack when creation your app or integration, will be verified for every request.FLACK_URL_PREFIX
URL namespace for the built-in api endpoints.FLACK_DEFAULT_NAME
Used for any response whera as_user is not explicitly set.
Slack event handlers
Triggers
API Endpoint: /webhook
The most basic type of interations, webhooks invoked by trigger words in a channel.
@flack.trigger("!heart", as_user="Cupid")
def heart(text, user):
return "{} :heart: {}".format(user.name, text)
Provides:
text
Any message after (but not including) the trigger word, may be an empty string.user
The calling user, see:flack.CALLER
.
Commmand
API Endpoint: /command
Slash-commands, may respond to the user privately or interact with the channel in which it was executed.
@flack.command("/weather")
def weather(text, user, channel):
return "The weather in {} is currently: {}".format(text, get_weather(text))
Provides:
text
Any message after the trigger word, may be an empty string.user
The calling user, see:flack.CALLER
.channel
The active channel or conversation, see:flack.CHANNEL
.
Action
API Endpoint: /action
Action buttons included in advanced messages (see: flack.message.Action
).
@flack.action("remind")
def remind(value, ts, instance, user, channel):
remind_user(user)
Provides:
value
Generally the same as the action name.ts
: The timestamp of the originating message, used for modifying it through the API.callback
: The Callback ID of the originating message attachment, see:flack.message.Attachment
user
The interacting user, see:flack.CALLER
.channel
The originating channel, see:flack.CHANNEL
.
Responding
TODO: Document flack.message
objects
OAuth
While not necessary for basic usage, Flack has support for registering an OAuth application.
Configuration
FLACK_CLIENT_ID
Provided by Slack when creating an app.FLACK_CLIENT_SECRET
Provided by Slack when creating an app.FLACK_SCOPE
Slack API scope to request (default iscommands,users:read,channels:read,chat:write:bot
).
Usage
Generate the Slack button HTML snippet and expose it to the client wherever you like with flack.oauth.render_button()
Then create a view that can receive the generated credentials from Slack. Make sure the url matches what you provided as the "Redirect URL" when creating the Slack app.
import flack.oauth
@app.route('/callback')
@flack.oauth.callback
def callback(credentials):
# Make sure to store the credentials somewhere safe.
your_datastore.write({
"team": credentials.team_id,
"token": credentials.access_token,
"scope": credentials.scope
})
# And make sure to inform the client everything went fine
return "It worked!"
The credentials object is a namedtuple containing team_id, access_token, and scope.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file flack-1.3.7.tar.gz
.
File metadata
- Download URL: flack-1.3.7.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79a239bc52dfbcd81caebe7673e175300d49e32e6650164a60100490940dc59b |
|
MD5 | b9a01a7ffb401e0c17a132e17d4fc149 |
|
BLAKE2b-256 | 5c3e93805197ccb45c5ec7853c933d99388c393200ff3299d5dd8bd0c778de63 |