处理松弛的传出webhook
flask_slackbot的Python项目详细描述
烧瓶松弛器
flask slackbot是一个flask扩展,它可以帮助您处理slack传出的webhook。
安装
$ pip install flask-slackbot
使用量
# coding=utf-8fromflaskimportFlaskfromflask_slackbotimportSlackBotapp=Flask(__name__)app.config['SLACK_TOKEN']='Your token here'# if you need to use slacker you should give a slack chat tokenapp.config['SLACK_CHAT_TOKEN']='Your slack chat token'app.config['SLACK_CALLBACK']='/slack_callback'app.debug=Trueslackbot=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 }'''deffn1(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.deffn4(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.deffn2(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')returnNonedeffn3(text):''' This function is a filter, which makes our bot ignore the text sent from itself.'''returntext.startswith('!')slackbot.set_handler(fn1)slackbot.filter_outgoing(fn3)if__name__=="__main__":app.run()
陷阱
如果你还没有设置一个触发器字,并且你的回调服务器返回一些文本到slack,那将是一个回调地狱。你知道就像乒乓球,然后变成一个无限循环。