Slack bot,注册点击消息按钮

tca*_*cas 7 python slack-api

我正在尝试用Python构建一个Slack bot.我希望我的机器人在其上发送带有交互式按钮的消息,然后根据用户点击该消息,在Python中运行一个函数.我似乎没有找到如何做到这一点.

我的代码现在看起来像这样:

message = "message"
attachments = [{"text": "message",
                "attachment_type": "default",
                "actions": [
                    {
                        "name": "list",
                        "text": "message",
                        "type": "select",
                        "options": [
                        {
                            "name": "1",
                            "text": "1",
                            "type": "button",
                            "value": "1"
                        },
                        {
                            "name": "1",
                            "text": "1",
                            "type": "button",
                            "value": "2"
                        }
                    ]}]}]

sc.api_call("chat.postMessage",
             channel=channel,
             text=message,
             attachments=attachments)
Run Code Online (Sandbox Code Playgroud)

所以这给了我一个带有两个按钮的消息.但是,我希望根据用户给出的答案运行一个函数.

所以说如果他们点击1,则运行function1(),当他们点击2时,运行function2().

Slack api文档对于如何执行此操作非常困惑,并且它们提供的"侦听器"rtm_read()不会选择用户单击其中一个按钮.

所以,如果有人能帮助我,我将不胜感激.

bla*_*kev 6

当您在松弛的对话中单击按钮时,它基本上应用了回调.回调是在App的设置中定义的某个地方发送的,然后THAT服务决定使用给定的信息做什么.

  1. 首先,您需要创建一个新的Slack App.

  2. 创建完成后,单击应用程序转到其" 基本信息"页面.

  3. 从那里,就在左侧功能找到"交互式组件".

  4. 注册将通过单击按钮接收POST数据的两个URL.

  5. 解释数据并继续:)

从Slack文档中,您可以在此处找到他们的演练.

你需要一个正在运行的Web服务器,Flask中的一些简单工作就可以了.

from flask import Flask, request

app = Flask('SlackReceiver')


@app.route('/slack/message', methods=['POST'])
def incoming_slack_message():
    req = request.get_json()
    # .. do something with the req ..
    return 'action successful'


@app.route('/slack/options', methods=['POST', 'OPTIONS'])
def incoming_slack_options():
    # .. idk ..
    return 'ok'


if __name__ == '__main__':
    app.run('0.0.0.0', 8088, debug=False)
Run Code Online (Sandbox Code Playgroud)

...

最后,根据文档,您需要在配置了HTTPS有效证书的Web服务器上托管此应用程序.设置服务器超出了这个问题的范围,获得免费(有效)HTTPS证书的最简单方法是使用Let的加密和certbot.