【问题标题】:How to send private messages in slack channel?如何在松弛通道中发送私人消息?
【发布时间】:2021-08-18 01:40:45
【问题描述】:

我目前正在使用以下功能向松弛频道发送消息。但我想发送一条私人消息,该消息应该对 slack 频道的选定成员可见。

我该怎么做?

async function sendSlackMessage() {
    const url = 'https://slack.com/api/chat.postMessage';
    const inputBody = {
        channel: "Slack_Channel_ID",
        text: `Hey Welcome to the slack`,
    };

    const slackHeaders = {
        'Content-Type': 'application/json;charset=utf-8',
        'Authorization': 'Slack_Token',
    };

    const slackRes = await axios.post(url, inputBody, { headers: slackHeaders });
    console.log(slackRes)
}

sendSlackMessage()

【问题讨论】:

标签: javascript node.js express slack slack-api


【解决方案1】:

使用 Boltjs for Javascript 的解决方案:

要在 Slack 的频道上发送仅对特定用户可见的私人消息,我们可以使用与 Bolt for JavaScript 不同的方法 chat.postEphemeral。使用上述方法,您可以向频道中的用户发送临时消息,该消息仅对您可以选择显示的特定用户可见。

注意:我已将我的解决方案作为简单的块提供,您需要将其封装在您需要此功能对其进行操作的函数中。

要求: 要使用chat.postEphemeral,您需要发送以下参数才能工作。

  • 令牌 Slack_Bot_Token {身份验证令牌承载所需范围。令牌应作为 HTTP 授权标头传递,或者作为 POST 参数传递。}
  • 频道 {频道、私人群组或 IM 频道发送消息。可以是编码的 ID 或名称}
  • 用户 {将接收临时消息的用户的 ID。用户应该在 channel 参数指定的频道中。}
  • 文本“这里有你需要的任何东西”
  • blocks“从 Block Kit Message Builder 打包并发送,虽然没有必要”

注意:

  • 从函数中提取通道 id 或将其作为 args 传递给异步函数
  • 从函数中提取用户 ID 或将其作为 args 传递给异步函数
  • 使用块时不强制使用文本字段。

方法访问: app.client。 chat.postEphemeral

Slack 应用程序中的必需范围:

  • 机器人令牌
  • 用户令牌

示例代码:

// Building the args object from body (Can also use, action, context, and few other slack parameters from Bolt API for js)
  const args = {
    user: body.user.id,
    channel: body.container.channel_id,
    team: body.user.team_id,
    token: body.user.id,
    trigger: body.trigger_id,
    url: body.response_url,
  };

Slack 应用代码:

 try {
  // Call the chat.postEphemeral method using the WebClient
  const result = await client.chat.postEphemeral({
    channel: channelId,
    user: userId,
    token: userToken,
    text: "Shhhh only you can see this :shushing_face:"
  });

  console.log(result);
}
catch (error) {
  console.error(error);
}

文档:

查看此文档了解更多信息:Slack API for Methods

点击此处为 Slack 创建消息块工具包:Slack Block Kit Builder

【讨论】:

  • 使用临时消息真是太棒了,但是这种消息并没有给我在线程中回复的选项。
  • 好的,如果你想在线程中回复用户,那么从应用的action/body/content中捕获message.ts或action.ts、user.id和channel.id。您可以使用 api.slack.com/methods/conversations.replies 。了解更多
猜你喜欢
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 2022-06-24
  • 2021-05-24
相关资源
最近更新 更多