【问题标题】:How to post slack message as a workspace user using chat.postmessage?如何使用 chat.postmessage 作为工作区用户发布松弛消息?
【发布时间】:2019-06-10 09:16:51
【问题描述】:

我创建了一个具有一些交互式按钮的 Slack 机器人。单击按钮后,我将向单击交互式按钮的用户发布直接消息。我需要显示用户配置文件而不是机器人配置文件图像。对于发布消息,我正在使用 slack api 聊天。邮件()。

当我调用此方法时,消息将作为机器人用户发布(它显示机器人用户图标)。但我需要以单击此按钮的用户身份发布此消息。我检查了 as_user: false 属性来做这件事。但它没有工作?我正在使用我的应用程序身份验证令牌来调用此方法。

var url = "https://slack.com/api/chat.postMessage";
    var auth_token ='xoxb-518598944980-577890089556-0i753DBbVkigtyuhfbnmfhjn'; //Your Bot's auth token
    var headers = {
       "Authorization": "Bearer " + auth_token,
       "Content-Type" : "application/json"
    }
    var body = {
        channel: actionJSONPayload.channel.id,
        text: "Your text goes here.",
        as_user: false // Slack user or channel, where you want to send the message
    }
    request.post({
       "url": url,
       "headers": headers,
       "body": JSON.stringify(body)
    }, (err, response, body) => {
       if (err) {
           reject(err);
       }
       console.log("response: ", JSON.stringify(response));
       console.log("body: ",body);
    });
  }

那么有没有办法专门为与按钮动态交互的用户生成令牌并使用该令牌调用此方法?它会解决这个问题还是有其他方法?我在安装应用程序时添加了所有相关权限,例如 chat:write:user

【问题讨论】:

  • Slack API 文档说将 as_user 设置为 true,经过身份验证的用户将显示为消息的作者,忽略为 username、icon_url 和 icon_emoji 提供的任何值。作为经过身份验证的用户发布需要客户端或更首选的聊天:写入:用户范围。但是做这件事并没有带来任何改变。这就是为什么我需要知道是否应该根据用户更改令牌。
  • 请参考以下链接解决的问题stackoverflow.com/questions/34376848/…

标签: javascript node.js oauth-2.0 slack slack-api


【解决方案1】:

如果您需要以单击按钮的用户身份发布回复消息,您的应用需要使用来自该用户的令牌调用 API 方法来发布消息。这是应用在 Slack 上模拟用户的唯一方式。

因此,要在您的工作区中进行这项工作,您需要要求每个用户安装您的应用一次,并在 Ouath 2.0 安装过程中为以后的用户收集他们的令牌。

这种方法有一些明显的安全问题需要考虑,例如您的应用将访问您工作区中每个用户的每条消息。

一种解决方法是手动设置您的应用发送的消息的用户名和图标(通过相应地设置icon_urlusername 以及在调用chat.postMessageas_user = false)。您可以从users.info 检索图标和用户名。不过,消息仍会带有 APP 标签以将其标记为来自机器人。

【讨论】:

  • 是的,你是对的,我能够从这个解决方案中解决这个问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2019-10-23
  • 2022-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多