首页 > 解决方案 > 斜杠命令响应发送两个不同的响应,一个给用户,另一个给通道

问题描述

我创建了一个斜杠命令“/myMeetings”,这实际上是配置了一个 requestURL - https://slack.mycompany.com/slack

所以现在我的用例是发送一个包含两条文本消息的响应,其中一个是临时类型,另一个是 in_channel 的消息

request_type - in_channel 
and
request_type - ephemeral

像这样的东西

[
    {
      "response_type": "in_channel",
      "text": "This message will be shown to the entire channel"
    },
    {
      "response_type": "ephemeral",
      "text": "only shown to the user who initiates slash command"
    }
]

我怎样才能实现这种行为?

标签: slackslack-apislack-commands

解决方案


您只能向 Slash 命令请求发送一个直接响应,并且只能是in_channelephemeral。所以建议的语法不起作用。

但是,为了满足您的要求,您可以简单地在响应之外发布一条消息,使用chat.postMessagefor in_channel 或chat.postEphermalfor ephemeral。您将在 slask 响应请求中获得通道 ID,因此您知道将消息发送到哪里。

请注意,该方法有一些特殊注意事项:

  • 您的应用将需要额外的范围来发布消息(例如 chat.write.bot
  • 这种方法在公共频道中可以正常工作,但在任何私人甚至直接消息频道中都行不通,因为您的应用可能无法访问该频道。为了减轻影响,我建议强制用户邀请您的机器人用户到任何私人频道,从而授予您的应用访问权限。

推荐阅读