在响应 Slack 消息操作请求时将“replace_original”设置为 false 不起作用

jrh*_*ing 2 slack-api

背景: 我正在使用 python slack API (slackclient) 在临时消息中构建数据收集操作的迭代序列。

这的核心工作正常。在处理包含用户与一组消息按钮(或菜单)交互的传入请求后,我立即使用 JSON 正文进行响应,如官方 slack 文档的“立即响应”部分所述

问题: 每个响应都替换了前面的消息+附件。在许多情况下,这就是我想要的,但在某些情况下,我想添加响应而不是替换之前的消息。

根据slack docs,设置replace_original为 false 应该做到这一点。但是下面的代码,从我对简单按钮点击的处理(例如)中截取,替换了原始按钮(以及它所附加的文本消息):

        r = {
            'response_type': 'ephemeral',
            'text': 'foo',
            'replace_original': 'false'
        }
        log.debug("Returning: {}".format(json.dumps(r)))
        resp = Response(response=json.dumps(r),
                        mimetype="application/json",
                        status=200)
        return resp
Run Code Online (Sandbox Code Playgroud)

我已经在有和没有delete_originalresponse_type字段的情况下尝试过这个,没有任何变化。

简而言之,在这种情况下,该replace_original领域似乎根本没有做任何事情;行为总是好像它被设置为“真”。

我觉得我一定在这里遗漏了一些东西 - 非常感谢任何帮助。

jrh*_*ing 5

这里的简单解决方案:slack API 需要一个布尔值,而不是一个字符串。所以'replace_original': 'false'在上面的代码片段中以调用{"response_type": "ephemeral", "text": "foo", "replace_original": "false"}后结束json.dumps(),这是无效的。

相反,设置'replace_original': False变为{"response_type": "ephemeral", "text": "foo", "replace_original": false},然后具有预期的行为