Slack API:如何确定app_mention消息中的僵尸名称?

时间:2019-01-21 16:33:40

标签: slack-api

我当时看着https://api.slack.com/events/app_mention是一种订阅机制,用于订阅发送到我的机器人的消息,这些消息将由我的应用程序处理。

该页面上的有效负载示例显示为:

{
    "token": "ZZZZZZWSxiZZZ2yIvs3peJ",
    "team_id": "T061EG9R6",
    "api_app_id": "A0MDYCDME",
    "event": {
        "type": "app_mention",
        "user": "U061F7AUR",
        "text": "What is the hour of the pearl, <@U0LAN0Z89>?",
        "ts": "1515449522.000016",
        "channel": "C0LAN2Q65",
        "event_ts": "1515449522000016"
    },
    "type": "event_callback",
    "event_id": "Ev0LAN670R",
    "event_time": 1515449522000016,
    "authed_users": [
        "U0LAN0Z89"
    ]
}

在这种情况下,我想删除消息中的僵尸名称<@ U0LAN0Z89>,但我不只是想正则表达式删除任何<@mentions>,而只是僵尸僵尸。

我可以指望属于bot的ID在authed_users中吗?还是我的应用有另一种方法来获取正在发送消息的机器人的ID?

2 个答案:

答案 0 :(得分:0)

从我阅读您的消息的方式来看,听起来您想从事件中获得几个不同的信息,所以我将尽力介绍这两个信息。随意忽略任何错误的假设。

首先是authed_users字段。 据我所知,您的假设是正确的,但我不是100%。

为绝对确定要删除正确的ID,可以解析event.text字段,并为每个值调用users.info。在users.info内部,您会看到一个user.profile.api_app_id字段。与您的应用ID匹配的一个绝对是您的漫游器。

我不确定的第二个问题是

  

获取正在发送消息的机器人的ID

假设您要获取创建触发该事件的消息的人员的UID,那么您需要的是event.user字段。

希望有帮助!

答案 1 :(得分:0)

authed_users事件中处理link_shared时,我也遇到了相同的行为。无论有多少用户通过该应用程序进行了身份验证,该列表将仅包含漫游器用户ID。

然后我注意到我在 Bot Events 下发生了link_shared事件。在将其移至应用程序配置页面中的工作区事件之后,现在它将获得没有bot ID的经过身份验证的用户的实际列表。

希望这可以阐明这个问题。