Können wir in einem lockeren Team eine Nachricht an einen Benutzer mit Python senden? Ich habe verschiedene APIs gesehen, sie bieten Nachrichten an einen Kanal, aber nicht an einen bestimmten Benutzer. Können wir das tun?Können wir mit Python-Skript Nachrichten an Benutzer senden?
Antwort
Ja, das kann gemacht werden. Anstelle von "#channel_name" verwende "@user" in der API. Der Benutzer wird die Nachricht von slackbot erhalten, da wir API verwenden und keine direkte Nachricht von einem anderen Benutzer. Wenn Sie diesen Benutzer als authentifizierten Benutzer anmelden möchten, verwenden Sie as_user= true
.
slack.chat.post_message('@to_user',msg,username='@from_user')
Weitere Details sind bei https://api.slack.com/methods/chat.postMessage
Sie eine Liste von Benutzer IM-Kanäle können und geben Sie Ihre Nachricht an einen IM-Kanal (Direct Messaging).
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)
Nichts gegen dich oder deinen Code, aber das ist so hässlich. Wenn alles, was wir haben, der Name des Benutzers ist, müssen wir zuerst nach der user_id suchen und dann eine andere im.list, um den Kanal zu finden? Drei API-Aufrufe zum Senden einer Nachricht an einen Benutzer? – Drew
Wie Deepali sagte, übergeben Sie einfach @user in den Kanalparameter. Sie können auch die Slack-postMessage-Endpunkt-API unter RapidAPI here. verwenden. Auf dieser Seite können Sie den Code generieren, der benötigt wird, um den API-Aufruf in Python auszuführen und den API-Aufruf zu testen.
Der Code RapidAPI generiert für Sie wird wie folgt aussehen:
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': ''
})
Dies ist die Python-Lösung war ich mit dem SlackClient Paket gefunden:
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"
)
ich anhand meiner Beispiel aus diesem Tutorial: build-first-slack-bot-python
Damit konnte ich das Problem einfach durch den Aufruf beheben:
slack_client.api_call(
"chat.postMessage",
channel=userChannel['channel']['id'],
text=response or default_response,
as_user=True
)
userChannel = slack_client.api_call(
"im.open",
user=auser
)
dann sendet die Meldung nach, dass alles wie erwartet zu funktionieren schien. Ich möchte in Zukunft etwas Ähnliches wie die "/ Gifs" -Schnittstelle erstellen.
- 1. Senden von Push-Nachrichten an alle Benutzer mit GCM
- 2. Können wir mit Python Daten an Excel-Tabellen senden?
- 3. Senden von Nachrichten an den Benutzer über django Signale
- 4. So senden Sie Nachrichten an bestimmte Benutzer Ratchet PHP Websocket
- 5. Können die eingehenden Webhooks Nachrichten an alle privaten Gruppen senden?
- 6. Senden von Nachrichten von Facebook App an den Benutzer
- 7. Senden von Nachrichten an Objekte
- 8. Wie können wir den Empfang von Nachrichten von MSMQ beschleunigen?
- 9. Nachrichten an Django Benutzer lokalisierte Sending
- 10. asp.net regelmäßig Nachrichten an Server senden
- 11. UDP-Nachrichten an Kafka senden Thema
- 12. Senden von Nachrichten an den WCF-Hostprozess
- 13. Nachrichten mit whatsapi.net senden?
- 14. Senden von Nachrichten an Gerrit von Jenkins?
- 15. Senden von Nachrichten an bestimmte Clients
- 16. Senden Sie Updates an einen Benutzer mit Socket.io und Nodejs
- 17. Senden Sie Nachrichten von contentscript an injectedScript
- 18. Senden von Nachrichten an ausgewählte Ips
- 19. Nachrichten an ein Android Wearable senden
- 20. Senden von OneSignal an bestimmte Benutzer
- 21. Unprovozierte Nachrichten mit NodeJS senden
- 22. Senden GCM-Nachricht an bestimmte Benutzer
- 23. Datenbankschema für das Senden an mehrere Benutzer
- 24. Können wir das Thema in Nachrichten in iOS 10 ändern?
- 25. Können wir mehrere Nachrichten aus der JMS-Warteschlange einzeln lesen?
- 26. Netty: Problem mit dem Senden von Nachrichten an viele Server
- 27. Nicht in der Lage, Nachrichten an RabbitMQ mit Spring senden
- 28. Senden von Nachrichten an MSMQ mit einem WCF-Dienst
- 29. Wie man mehrere Nachrichten mit python an eventhub senden
- 30. Senden von Nachrichten an Yahoo IM mit PHP
Können Sie etwas mehr Details geben? –
Verwenden Sie denselben Python-Code, den Sie zum Senden von Nachrichten an den Kanal verwendet haben. Die API bleibt auch gleich. Die einzige Änderung ist, dass anstelle von "Kanal" der "Benutzer" erwähnt wird (wem Sie die Nachricht senden möchten). Ich habe den Code oben angegeben, der für mich funktioniert. Probieren Sie es einmal aus und wenn es nicht funktioniert, teilen Sie den tatsächlichen Fehler oder das Problem, mit dem Sie konfrontiert sind. –
Wenn ich dies benutze, wird der Fehler "'SlackClient' Objekt hat kein Attribut 'Chat'" –