我正在使用 Python 和 Flask 创建一个 Slack 应用程序。该应用程序使用具有两个视图的 Slack 模式:第一个在给出斜杠命令时打开,第二个应在用户按下第一个视图上的提交按钮时打开。当我运行它时,第一个视图正确打开。但是,当我尝试推送第二个视图时,它会立即打开然后关闭,在没有用户任何交互的情况下恢复到第一个视图。我尝试使用notify_on_close标志来查看第二个视图是否由于某种原因被关闭,但是在第二个视图关闭后我没有收到任何“表单关闭”消息。这是发生此问题的示例:@app.route('/slash_command', methods=['POST'])def open_modal(): trigger_id = request.form['trigger_id'] sc.views_open(trigger_id=trigger_id, view=views.first_view) return '', 200@app.route('/actions', methods=['POST'])def action_endpoint(): payload = json.loads(request.form['payload']) callback_id = payload['view']['callback_id'] trigger_id = payload['trigger_id'] # Push the second view if the first view is submitted if callback_id == 'first_view': sc.views_push(trigger_id=trigger_id, view=views.second_view) return '', 200我的观点很简单:first_view = { "type": "modal", 'callback_id': 'first_view', "title": { "type": "plain_text", "text": "First View" }, "submit": { "type": "plain_text", "text": "Submit" }, "close": { "type": "plain_text", "text": "Cancel" }, 'blocks': []}second_view = { 'type': 'modal', 'callback_id': 'second_view', 'title': { 'type': 'plain_text', 'text': 'Second View', }, 'submit': { 'type': 'plain_text', 'text': 'Submit' }, 'close': { 'type': 'plain_text', 'text': 'Cancel' }, 'blocks': []}
1 回答

一只甜甜圈
TA贡献1836条经验 获得超5个赞
Slack 支持通过解释上述代码推送一个新视图然后返回 200 响应来解决此问题,Slack 将其解释为关闭当前视图的请求。通过如下更新,我能够使代码正常工作:
# Push the second view if the first view is submitted
if callback_id == 'first_view':
return {
'response_action': 'push',
'view': views.second_view
}
return '', 200
添加回答
举报
0/150
提交
取消