松弛机器人如何找到自己的ID?

时间:2019-01-31 18:16:53

标签: slack slack-api

我正在写一个松弛的机器人,它监听频道中的所有消息。他的回答应该变化基于该消息是否提到他与否。问题是我无法弄清楚如何“正确”地找出机器人的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吗?

顺便说一句,我知道我可以订阅只提到,但我需要倾听和应对非提过的消息。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

通过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