slack-api - programming - slack mx
Como mencionar al usuario en slack.client (2)
Esta podría ser una pregunta simple, pero no puedo hacer que funcione.
Estoy usando Slack Python Api para mencionar a un usuario en un canal, y me refiero al documento aquí, https://api.slack.com/methods/chat.postMessage , y mi código es tan simple como
from slackclient import SlackClient
sc = SlackClient(token)
message = sc.api_call(
''chat.postMessage'',
channel=''#channelname'',
text=''This is a test.''
)
Esto enviará un mensaje al canal, pero no puedo encontrar ninguna opción para mencionar a los usuarios. Y traté de poner @someone
dentro del mensaje como
text=''@someone This is a test.''
El mensaje será publicado pero en texto plano, pero realmente mencionando a alguien. Por cierto, estoy usando un Test Token. (¿O tal vez esta función solo está disponible para un token autorizado?)
¿Hay alguna opción o método para hacer esto?
Gracias de antemano.
Después de un poco de exploración, obtuve la solución que es bastante simple. No sé cómo podría perderme.
message = sc.api_call(
''chat.postMessage'',
link_names=1,
channel=''#channelname'',
text=''@someone This is a test.''
)
use la opción link_names=1
para vincular canales o nombres de usuarios automáticamente en el mensaje de texto. Esto hará el truco.
Gracias a todos.
Publicar una respuesta actualizada ya que este método ya no funciona desde que Slack actualizó su API. Ahora tienes que descubrir la ID del usuario usando users.list
, o simplemente buscándolo en la aplicación Slack en su perfil.
Luego, para un ID de usuario determinado, los menciona configurando el texto de la siguiente manera: <@ ID de usuario >. El argumento link_names
ahora es irrelevante. Así que este sería el código a usar ahora:
message = sc.api_call(
''chat.postMessage'',
channel=''#channelname'',
text=''<@userID> This is a test.''
)
SIN EMBARGO, si desea mencionar un grupo de usuarios, entonces el método anterior aún se aplica: solo @mention les y, en ese caso , establezca los link_names
de link_names
como verdaderos.