响应 Slack 消息操作请求时将 'replace_original' 设置为 false 不起作用
setting 'replace_original' to false while responding to Slack message action request doesn't work
背景:
我正在使用 python slack API (slackclient) 在临时消息中构建数据收集操作的迭代序列。
这个核心工作正常。在处理包含用户与一组消息按钮(或菜单)的交互的传入请求后,我立即以 JSON 正文响应,如 "Responding right away" 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_original
和 response_type
字段,没有任何变化。
简而言之,在这种情况下 replace_original
字段似乎根本没有做任何事情;行为始终如同设置为 'true'.
我觉得我一定遗漏了一些东西 - 非常感谢任何帮助。
此处的简单解决方案:slack API 需要一个布尔值,而不是字符串。因此,上述代码段中的 'replace_original': 'false'
在 json.dumps()
调用之后最终变为 {"response_type": "ephemeral", "text": "foo", "replace_original": "false"}
,这是无效的。
相反,设置 'replace_original': False
变为 {"response_type": "ephemeral", "text": "foo", "replace_original": false}
,然后具有预期的行为
背景: 我正在使用 python slack API (slackclient) 在临时消息中构建数据收集操作的迭代序列。
这个核心工作正常。在处理包含用户与一组消息按钮(或菜单)的交互的传入请求后,我立即以 JSON 正文响应,如 "Responding right away" 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_original
和 response_type
字段,没有任何变化。
简而言之,在这种情况下 replace_original
字段似乎根本没有做任何事情;行为始终如同设置为 'true'.
我觉得我一定遗漏了一些东西 - 非常感谢任何帮助。
此处的简单解决方案:slack API 需要一个布尔值,而不是字符串。因此,上述代码段中的 'replace_original': 'false'
在 json.dumps()
调用之后最终变为 {"response_type": "ephemeral", "text": "foo", "replace_original": "false"}
,这是无效的。
相反,设置 'replace_original': False
变为 {"response_type": "ephemeral", "text": "foo", "replace_original": false}
,然后具有预期的行为