web-dev-qa-db-fra.com

Comment mentionner l'utilisateur dans slack.client

Cela pourrait être une question simple, mais je ne peux pas le faire fonctionner.

J'utilise Slack Python Api pour mentionner un utilisateur dans un canal, et je fais référence au document ici, https://api.slack.com/methods/chat. postMessage , et mon code est aussi simple que,

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

Cela enverra un message à la chaîne, mais je ne trouve aucune option pour mentionner les utilisateurs. Et j'ai essayé de mettre @someone à l'intérieur du message tel que

 text='@someone This is a test.'

Le message sera affiché mais en texte brut, mais mentionnant vraiment quelqu'un. BTW, j'utilise un jeton de test (ou peut-être que cette fonctionnalité n'est disponible que pour les jetons autorisés?)

Existe-t-il une option ou une méthode pour ce faire?
Merci d'avance.

22
HaipengSu

Après un peu d'exploration, j'ai obtenu la solution qui est assez simple. Je ne sais pas comment je pourrais le manquer.

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

utilisez l'option link_names=1 pour lier automatiquement les chaînes ou les noms d'utilisateur dans le SMS. Ça fera l'affaire.

Merci tout le monde.

29
HaipengSu

Publier une réponse mise à jour car cette méthode ne fonctionne plus depuis que Slack a mis à jour son API. Vous devez maintenant découvrir l'ID de l'utilisateur à l'aide de users.list, Ou simplement le rechercher dans l'application Slack sur son profil.

Ensuite, pour un serID donné, vous les mentionnez en définissant le texte comme suit: <@ serID>. L'argument link_names N'est plus pertinent. Ce serait donc le code à utiliser maintenant:

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

TOUTEFOIS, si vous voulez mentionner un groupe d'utilisateurs, alors l'ancienne méthode s'applique toujours - il suffit de les @mentionner et dans ce cas do définissez link_names Sur true.

12
Tom Wagstaff