slack-api - 如何使用斜杠命令向频道显示交互式消息,除了唤起它的人?
问题描述
我创建了一条交互式消息,该消息通过斜杠命令调用,该命令分发到整个频道。一切正常。但我终其一生都无法弄清楚如何将信息限制在整个频道上,而仅限于唤起它的人。现在消息会发送给每个人,包括调用它的人。如果您曾经使用过/poll
,那么除了创建它的人之外,每个人都可以进行投票。
如果有人知道如何做到这一点,你能指出我正确的方向吗?
解决方案
来自斜杠命令的响应消息只能是以下两种情况之一:
- 响应,只有发出
ephemeral
命令的用户才能看到 - 回复,频道中的
in_channel
每个人都可以看到
没有功能或开关,因此响应消息对发布用户不可见。
但是,您可以构建一种解决方法并手动向每个用户发送除了发出命令的用户之外的临时消息。以下是其工作原理的概述:
- 通过以下方式获取频道用户列表
conversations.members
- 通过以下方式向每个用户发送临时消息
chat.postEphemeral
此解决方法有一些重要的警告:
- 您的应用程序需要许多额外的范围才能检索成员列表和发送消息(有关详细信息,请参阅这些 API 方法的文档)
- 每秒大约 1 条消息的速率限制,因此根据组的大小,将这些消息发送给所有用户可能需要相当长的时间
- 您的斜杠命令需要 3 秒响应。所以你需要实现一些花哨的多线程来发送所有这些消息。
- 要在私人频道中进行这项工作,您必须与其他机器人用户合作
这将为您提供所需的结果,但有一些警告:
推荐阅读
- c - 我是否正确应用了严格别名规则?
- c++ - C++ 中的排序计数。如何跳过排序的一部分?
- reactjs - 如何从一个 JS 文件中导入文本,然后将其作为 prop 值动态传递给在不同文件中定义的组件;在反应js?
- scala - 为什么 Apache Spark 在作业运行时会进行一些检查并引发这些异常,但在单元测试期间从未抛出它们?
- c++ - While 循环有两个条件,由 HLA 中的 AND 运算符连接。将 C++ 转换为 HLA
- python - python 在运行 os.system() 时出现意外的 EOF
- javascript - 为什么 snapToInterval 不适用于平面列表中较长的数组?
- docker - 是否可以在 k8s 1.21 中的容器内运行容器
- c# - DevExpress Xtra Grid 仅在复选框为真时启用查找编辑
- c# - 如何阅读 Microsoft.AspNetCore.Mvc.OkObjectResult 值非公共成员的内容