使用 views.push 时 Slack 模态视图立即关闭

我正在使用 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': []

}


阿波罗的战车
浏览 106回答 1
1回答

一只甜甜圈

Slack 支持通过解释上述代码推送一个新视图然后返回 200 响应来解决此问题,Slack 将其解释为关闭当前视图的请求。通过如下更新,我能够使代码正常工作:# Push the second view if the first view is submittedif callback_id == 'first_view':    return {        'response_action': 'push',        'view': views.second_view    }return '', 200
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python