Skip to main content

Deal with slack outgoing webhook

Project description

Build Status Coverage Status PyPI Version Downloads

Flask-SlackBot

Flask-SlackBot is a Flask extension which helps you deal with slack’s outgoing webhook.

Installation

$ pip install flask-slackbot

Usage

# coding=utf-8
from flask import Flask

from flask_slackbot import SlackBot


app = Flask(__name__)
app.config['SLACK_TOKEN'] = 'Your token here'
# if you need to use slacker you should give a slack chat token
app.config['SLACK_CHAT_TOKEN'] = 'Your slack chat token'
app.config['SLACK_CALLBACK'] = '/slack_callback'
app.debug = True
slackbot = SlackBot(app)

'''
The parameter of the callback function is a dict returns from the slack's outgoing api.
Here is the detail:
kwargs
{
    'token': token,
    'team_id': team_id,
    'team_domain': team_domain,
    'channel_id': channel_id,
    'channel_name': channel_name,
    'timestamp': timestamp,
    'user_id': user_id,
    'user_name': user_name,
    'text': text,
    'trigger_word': trigger_word
}'''
def fn1(kwargs):
    '''
    This function shows response the slack post directly without an extra post.
    In this case, you need to return a dict.'''
    return {'text': '!' + kwargs['text']} # Note the '!' character here is an user defined flag to tell the slack, this message is sent from the bot.


def fn4(kwargs):
    '''
    This function looks like upper one. But a little different, this will only response to the sender.
    In this case, you need to return a dict with an extra key private setted as True.
    And if you need this function, you should given the slack chat token in config.'''
    return {'text': '!' + kwargs['text'], 'private': True} # Note the '!' character here is an user defined flag to tell the slack, this message is sent from the bot.


def fn2(kwargs):
    '''
    This function shows response the slack post indirectly with an extra post.
    In this case, you need to return None.
    Now the slack will ignore the response from this request, and if you need do some complex task you can use the built-in slacker.
    For more information, see https://github.com/os/slacker'''
    slackbot.slack.chat.post_message('#general', 'hello from slacker handler')
    return None


def fn3(text):
    '''
    This function is a filter, which makes our bot ignore the text sent from itself.'''
    return text.startswith('!')

slackbot.set_handler(fn1)
slackbot.filter_outgoing(fn3)


if __name__ == "__main__":
    app.run()

Trap

If you have not set a trigger word, and your callback server return some text to slack, there would be a callback hell. You know like ping pong, and then turn into an infinite loop.

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

flask_slackbot-0.2.1.zip (9.0 kB view details)

Uploaded Source

File details

Details for the file flask_slackbot-0.2.1.zip.

File metadata

  • Download URL: flask_slackbot-0.2.1.zip
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for flask_slackbot-0.2.1.zip
Algorithm Hash digest
SHA256 f4da01198da7ebe495fa18fef5b4e749d79442c4c7d9b9259a036313dd974fff
MD5 bb0a4eab59a3496a2666b645434eea5f
BLAKE2b-256 b7a8cb996fe2fdd4ff7066bb7f7dcdb45c56644fff46d72d2bb297f3cfac039b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page