使用 Slack Bot 提及访客?

Posted

技术标签:

【中文标题】使用 Slack Bot 提及访客?【英文标题】:Mentioning Guest using Slack Bot? 【发布时间】:2019-06-09 05:19:06 【问题描述】:

我的频道中有很多客人。

我希望我的机器人在 @ 提及中提及这些访客,但机器人似乎看不到频道访客。它发现其他完整用户很好,只是没有客人。

这是对 Slack 的有意限制,还是机器人需要更多权限?

我正在使用 slackclient 模块 (Python) 并进行以下调用:

    sc.client.api_call(
        "chat.postMessage",
        channel="#channel",
        link_names=1,
        text="@aaron.layfield <-- Working @guest.name <-- Not working This is a message."
    )

【问题讨论】:

您是否在查找来宾用户的 ID 时遇到问题,或者当您使用 &lt;@U1234567&gt; 格式时,消息没有显示为标记他们? @Dandy 请更具体地说明您在做什么。您是否在 users.list 中寻找用户?最好将代码的相关部分添加到您的问题中。泰 @ColmDoyle 我尝试过使用未解析的用户 ID 和已解析的用户 ID。如果我使用我的标签(@aaron.layfield),这很完美,但如果我使用客人(@guest.name),机器人不会解析名称。 @ErikKalkoken 已更新以提供代码示例。抱歉,没有具体说明。 【参考方案1】:

如果您想从消息内部链接到用户,最好使用format 是&lt;@USERID&gt;,而不是@username。这是因为 Slack 有 moved away 使用用户名,并转向更灵活的显示名称概念,不能保证是唯一的或不可变的。

所以在这种情况下,你会做类似的事情

curl --request 'POST' 'https://slack.com/api/chat.postMessage?token=xoxb-21321321-1231321321321-dsfasdgdsfaghsdfhsdfh&channel=C9UFK5F5S&text=Hey <@UFBKH3B63>'

将呈现为

嘿@Co​​lm Doyle

【讨论】:

【参考方案2】:

正如科尔姆的回答已经解释的那样,@username 语法已被贬低,您应该使用 ID 语法来代替提及。

要获取您的来宾用户的 ID,请致电 users.list 以获取您工作区中所有用户的列表。然后遍历该列表以匹配客人姓名和 ID。

【讨论】:

以上是关于使用 Slack Bot 提及访客?的主要内容,如果未能解决你的问题,请参考以下文章

Slack 通道不适用于 MS Bot Framework

Slack Bot 从历史中返回消息

python Slack bot模板用于部署

通过 webhook 中的 slack 提及用户

Python 3 urllib Discord 与 Slack Bot

在 prometheus alertmanager 通知中提及 slack 用户