如何在slack.client中提及用户

Hai*_*gSu 27 slack-api slack

这可能是一个简单的问题,但我不能让它发挥作用.

我正在使用Slack Python Api来提及频道中的用户,我指的是这里的文档,https://api.slack.com/methods/chat.postMessage,我的代码很简单,

from slackclient import SlackClient
sc = SlackClient(token)
message = sc.api_call(
  'chat.postMessage',
  channel='#channelname',
  text='This is a test.'
  )
Run Code Online (Sandbox Code Playgroud)

这将向频道发送消息,但我找不到任何提及用户的选项.我试着把@someone信息放在里面

 text='@someone This is a test.'
Run Code Online (Sandbox Code Playgroud)

该消息将以纯文本形式发布,但确实提到了某人.顺便说一下,我正在使用测试令牌.(或者这个功能可能仅适用于授权令牌?)

有没有选项或方法来做到这一点?
先感谢您.

Hai*_*gSu 34

经过一番探索,我得到的解决方案非常简单.我不知道怎么会错过它.

message = sc.api_call(
  'chat.postMessage',
  link_names=1,
  channel='#channelname',
  text='@someone This is a test.'
  )
Run Code Online (Sandbox Code Playgroud)

使用该选项link_names=1在短信中自动链接频道或用户名.这样就可以了.

谢谢大家.

  • 改用`<@userID>`。当提及超过 1 个用户时,此方法不起作用。 (7认同)
  • `link_names` 也可以设置为 True/False,这比将其设置为 0 或 1 更有意义。 (5认同)
  • 真正的问题是:为什么 link_names 的默认值不设置为 1?谢谢一堆! (2认同)
  • @marengaz 在阅读(几乎所有)slack 文档后,我的感觉是 userId 是首选,一般来说。但是,我能够在 chat_postMessage 方法中获得两次提及(尽管我使用的是 https://github.com/slack-ruby/slack-ruby-client ) text: ": <@#{slack_user_name}> <@testuser >",而且效果很好 (2认同)

Tom*_*aff 16

发布更新的答案,因为此方法不再有效,因为Slack更新了他们的API.现在,您必须使用users.list或仅在其配置文件中的Slack应用程序中查找用户的ID .

然后,对于给定的userID,您可以通过设置文本来提及它们:<@ userID >.这个link_names论点现在无关紧要.所以这将是现在使用的代码:

message = sc.api_call(
  'chat.postMessage',
  channel='#channelname',
  text='<@userID> This is a test.'
  )
Run Code Online (Sandbox Code Playgroud)

但是,如果你想提一个用户组,那么旧的方法仍然适用-只是@mention他们,在这种情况下,设置link_names为true.