我正在尝试找出一种机制,将临时消息发布给用户,然后将其删除并替换为所有人都可见的消息。与 giphy 类似的行为,其中 Slash 命令显示交互式临时消息,并在用户决定发送哪个 gif 后创建频道消息。我也对更新临时消息感到好奇。我认为如果我们使用交互式临时消息,这可以通过 response_url 来完成。
我最初想我只是使用创建一条短暂的消息chat.postEphemeral
然后打电话chat.delete
就可以了,但似乎 chat.delete 和chat.update
无法在使用创建的消息上调用chat.postEphemeral
.
Slack 消息指南似乎建议多步骤交互流程应始终以短暂的方式处理,以便其他通道用户在结果之前看不到所有中间消息,但我不知道如何摆脱它完成后的短暂性。可能只是不擅长阅读,但任何帮助表示赞赏。
编辑更多详细信息:
有关使用 response_url 和 postEphemeral 状态的文档
当您使用 chat.update 或 Replace_original 替换消息时
选项,您不能将消息的类型从临时更改为
in_channel。消息一旦发出,将保留其原样
一生的可视性质量。
消息指南建议:
如果用户启动了包含多个步骤的操作,则这些步骤
应显示为仅对该用户可见的临时消息,直到
整个动作完成,避免通道混乱
每个人。
据推测,我应该能够创建一个交互,在其中我首先发送一条 in_channel 交互消息。
- 当用户发起操作时,我应该能够使用
response_url
并经过response_type: 'ephemeral'
and replace_original: false
?
- 以这种方式创建的新的临时交互消息将有自己的
response_url
用于进行编辑,对吗?
- 一旦我通过临时消息完成了交互流,我可以使用其原始的response_url来修改原始的交互消息?
- 最后,如何摆脱最后一次短暂的编辑?或者我只是将其更改为“工作流程已完成”之类的内容并希望得到最好的结果?我这么问是因为 Slash 命令显然似乎有一种方法可以基本上替换 in_channel 消息的临时消息,并且我正在尝试找出这种工作流程。
我四处搜索如何做到这一点,终于找到了答案。
- 您的短暂消息必须触发一个操作,即单击按钮。
-
您对该操作的响应必须使用以下正文
{
'response_type': 'ephemeral',
'text': '',
'replace_original': true,
'delete_original': true
}
'delete_original': true
是这里的关键,据我所知,任何 API 指南中都没有提到它,但它存在于API现场指南 https://api.slack.com/docs/interactive-message-field-guide under Top-level message fields
如果您想更改response_type
您的消息而不是删除它,您必须首先删除临时消息,然后使用'response_type': 'in_channel'
.
在我的用例中,我想获取一条临时消息,并使用与频道内消息完全相同的消息正文重新发布它。我还没有找到一种方法来检索临时消息的内容,因此我找到的最好方法是传递在按钮的临时消息中生成临时消息的任何必要数据value
以便您的操作处理程序可以读取此数据并动态地重新创建消息正文。
就我而言,这是用于执行查询的用户输入。如果数据库中的数据在原始临时消息发布时间和频道内版本发布时间之间发生变化,它们将会有所不同。 您可以直接通过此发送 JSON 字符串value
字段并避免进行额外的数据库调用以及发布到频道时消息发生更改的风险。 的字符限制value
是 2000,所以 JSON 传递极其有限。
假设您在最初创建临时消息以及在频道内重新创建它时使用相同的代码来生成此正文,您应该收到相同的正文,并且基本上能够将临时消息更改为频道内消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)