响应Slack消息操作请求时将'replace_original'设置为false无效

时间:2018-07-12 19:29:59

标签: slack-api

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

此功能的核心工作正常。在处理了包含用户与一组消息按钮(或菜单)的交互的传入请求之后,我立即使用JSON正文进行响应,如“立即响应” section of the official slack docs中所述。

问题: 每个响应都会替换前面的消息和附件。在很多情况下,这就是我想要的,但是在某些情况下,我想添加响应而不是替换上一条消息。

按照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

我已经尝试过在有和没有delete_originalresponse_type字段的情况下进行此操作,并且没有任何更改。

简而言之,在这种情况下,replace_original字段根本没有做任何事情。行为始终就像设置为“ true”一样。

我觉得我必须在这里丢失一些东西-我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

这里的简单解决方案:松弛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},然后具有预期的行为。

无论如何这都不是一个懈怠的问题-只是用户错误。