Как упомянуть пользователя в 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.'
  )

Это отправит сообщение на канал, но я не могу найти никакой возможности упомянуть пользователей. И я попытался поставить @someone внутри сообщения, например

 text='@someone This is a test.'

сообщение будет опубликовано, но в обычном тексте, но действительно упоминает кого-то. Кстати, я использую тестовый токен.(Или, может быть, эта функция доступна только для авторизованных знак? )

есть ли какой-либо вариант или метод для этого?
Заранее спасибо.

2 ответов


после небольшого исследования, я получил решение, которое довольно просто. Не знаю, как я мог это пропустить.

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

использовать параметр link_names=1 автоматически связывать каналы или имена пользователей в текстовом сообщении. Это поможет.

спасибо всем.


публикация обновленного ответа, поскольку этот метод больше не работает, так как Slack обновил свой API. Теперь вы должны обнаружить ID пользователя, используя users.list, или просто ищет его в приложении Slack в своем профиле.

тогда для данного userID, вы упоминаете их, устанавливая текст следующим образом:userID>. The link_names аргумент теперь не имеет значения. Таким образом, это будет код для использования сейчас:

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

однако, если вы хотите упомянуть в группу, тогда старый метод все еще применяется-просто @ упомяните их и в этом случае do set link_names в true.