Dans une équipe souple, pouvons-nous envoyer un message à un utilisateur à l'aide de python? J'ai vu différentes API, elles offrent un message au canal, mais pas à un utilisateur en particulier. pouvons-nous faire cela?
Oui, cela peut être fait. Au lieu de "#channel_name", utilisez "@user" dans l'API. L'utilisateur recevra le message de slackbot car nous utilisons l'API et non un message direct d'un autre utilisateur. Et si vous souhaitez publier sur cet utilisateur en tant qu'utilisateur authentifié, utilisez as_user= true
.
slack.chat.post_message('@to_user',msg,username='@from_user')
Plus de détails sont à https://api.slack.com/methods/chat.postMessage
Voici la solution Python que j'ai trouvée en utilisant le paquet SlackClient:
from slackclient import SlackClient
slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)
sc.api_call(
"chat.postMessage",
channel="@username",
text="Test Message"
)
Vous pouvez obtenir une liste des canaux de messagerie instantanée utilisateur et poster votre message sur n’importe quel canal de messagerie instantanée (messagerie directe).
from slackclient import SlackClient
SLACK_TOKEN = "xoxb-bottoken" # or a TEST token. Get one from https://api.slack.com/docs/oauth-test-tokens
slack_client = SlackClient(SLACK_TOKEN)
api_call = slack_client.api_call("im.list")
# You should either know the user_slack_id to send a direct msg to the user
user_slack_id = "USLACKBOT"
if api_call.get('ok'):
for im in api_call.get("ims"):
if im.get("user") == user_slack_id:
im_channel = im.get("id")
slack_client.api_call("chat.postMessage", channel=im_channel,
text="Hi Buddy", as_user=True)
Comme Deepali l'a dit, il suffit de passer @user dans le paramètre channel. Vous pouvez également utiliser l'API de terminal Slack postMessage sur RapidAPI ici. Cette page vous permettra de générer le code nécessaire pour effectuer l'appel API en python et le tester.
Le code que RapidAPI va générer pour vous ressemblera à ceci:
from rapidconnect import RapidConnect
rapid = RapidConnect("SlackIntegration", "3b744317-91c6-48e8-bc90-305a52f36a5f")
result = rapid.call('Slack', 'postMessage', {
'token': '',
'channel': '',
'text': '',
'parse': '',
'linkNames': '',
'attachments': '',
'unfurlLinks': '',
'unfurlMedia': '',
'username': '',
'asUser': '',
'iconUrl': '',
'iconEmoji': ''
})
J'ai basé mon exemple sur ce tutoriel: build-first-slack-bot-python
Avec cela, j'ai pu résoudre le problème simplement en appelant:
userChannel = slack_client.api_call(
"im.open",
user=auser
)
puis envoi du message
slack_client.api_call(
"chat.postMessage",
channel=userChannel['channel']['id'],
text=response or default_response,
as_user=True
)
Après cela, tout a semblé fonctionner comme prévu. J'aimerais créer quelque chose de similaire à l'interface "/ gifs" à l'avenir.