我正在尝试用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()不会选择用户单击其中一个按钮.
所以,如果有人能帮助我,我将不胜感激.
当您在松弛的对话中单击按钮时,它基本上应用了回调.回调是在App的设置中定义的某个地方发送的,然后THAT服务决定使用给定的信息做什么.
首先,您需要创建一个新的Slack App.
创建完成后,单击应用程序转到其" 基本信息"页面.
从那里,就在左侧功能找到"交互式组件".
注册将通过单击按钮接收POST数据的两个URL.
解释数据并继续:)
从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.
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |