【问题标题】:How can a slack bot find out its own id?Slack 机器人如何找到自己的 id?
【发布时间】:2019-06-25 06:53:33
【问题描述】:

我正在编写一个可侦听频道中所有消息的 Slack 机器人。他的反应应该根据消息是否提到他而有所不同。问题是我无法弄清楚如何“正确”找出机器人的 ID。该机器人订阅了message.channels 事件,当有人发布提到该机器人的消息时,我得到这个:

{"client_msg_id":"b94dcc57-d640-4815-9eeb-23c048564bf0",
 "type":"message",
 "text":"<@UFT98YYYY> how are you?",
 "user":"UD45QXXXX",
 "ts":"1548958008.003400",
 "channel":"CFK3AZZZZ",
 "event_ts":"1548958008.003400",
 "channel_type":"channel"}

知道UFT98YYYY 是机器人的ID 的正确方法是什么?当然有解决这个问题的方法(查看日志,在配置中设置 bot 的 id),但它们看起来丑陋、脆弱,并且在安装 bot 时需要一些额外的步骤。机器人是否可以使用 Slack API 调用来查找其 ID?

顺便说一句,我知道我只能订阅提及,但我也需要倾听并回应未提及的消息。

【问题讨论】:

    标签: slack slack-api


    【解决方案1】:

    知道了。要使用的 API 方法是 auth.test,它返回用户 ID(加上一些额外的字段)。

    【讨论】:

      【解决方案2】:

      当您的应用通过 OAuth 安装到工作区时,您将获得一个特定的机器人令牌以及该工作区的机器人 ID。

      以下是 Slack 的响应示例,其中包含机器人令牌和机器人用户 ID:

      {
          "access_token": "xoxp-XXXXXXXX-XXXXXXXX-XXXXX",
          "scope": "incoming-webhook,commands,bot",
          "team_name": "Team Installing Your Hook",
          "team_id": "XXXXXXXXXX",
          "user_id": "XXXXXXXXXX",
          "incoming_webhook": {
              "url": "https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX",
              "channel": "#channel-it-will-post-to",
              "configuration_url": "https://teamname.slack.com/services/BXXXXX"
          },
          "bot":{
              "bot_user_id":"UTTTTTTTTTTR",
              "bot_access_token":"xoxb-XXXXXXXXXXXX-TTTTTTTTTTTTTT"
          }
      }
      

      请注意,响应还包括安装您的应用的用户的用户 ID(尽管官方文档中没有显示)。确保使用bot_user_id,而不是user_id

      有关机器人令牌的官方文档,请参阅 here

      【讨论】:

      • 这似乎只适用于我的应用被添加到另一个工作区并使用 OAuth 进行授权时。但是,我的应用程序是私有的,在应用程序管理页面上获得了凭据(机器人访问令牌和签名密钥)。
      • 是的,我的解决方案仅在您使用 Oauth 将应用安装到工作区时才有效。
      猜你喜欢
      • 2019-08-09
      • 2012-12-03
      • 2016-03-02
      • 2017-02-23
      • 1970-01-01
      • 2017-11-26
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多