W luźnym zespole, czy możemy wysłać wiadomość do użytkownika za pomocą Pythona? Widziałem różne interfejsy API, które oferują wiadomość do kanału, ale nie do konkretnego użytkownika. Czy możemy to zrobić?Czy możemy wysłać wiadomość do użytkownika w luzu za pomocą skryptu Pythona?
Odpowiedz
Tak, można to zrobić. Zamiast "# channelname" użyj "@user" w interfejsie API. Użytkownik otrzyma wiadomość od slackbota, ponieważ korzystamy z API, a nie bezpośredniej wiadomości od innego użytkownika. Jeśli chcesz wysłać do tego użytkownika jako uwierzytelnionego użytkownika, użyj as_user= true
.
slack.chat.post_message('@to_user',msg,username='@from_user')
Więcej szczegółów na https://api.slack.com/methods/chat.postMessage
Można uzyskać listę kanałów czatu użytkowników i wysłać wiadomość do dowolnego kanału wiadomości IM (bezpośredni).
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)
Nic przeciwko tobie lub twojemu kodowi, ale to jest takie brzydkie. Jeśli wszystko, co mamy, to nazwa użytkownika, musimy najpierw wykonać wyszukiwanie dla user_id, a następnie inny im.list, aby znaleźć kanał? Trzy wywołania API, aby wysłać wiadomość do użytkownika? – Drew
Jak powiedział Deepali, wystarczy przekazać @user do parametru kanału. Możesz także użyć API punktu końcowego PostMessage na RapidAPI here. Ta strona pozwoli Ci wygenerować kod potrzebny do wywołania API w Pythonie i przetestować wywołanie API.
Kod RapidAPI wygeneruje dla Ciebie będzie wyglądać następująco:
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': ''
})
Było to rozwiązanie Python Znalazłem przy użyciu pakietu 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"
)
oparłem przykład z tego samouczka: build-first-slack-bot-python
Dzięki, że udało mi się rozwiązać ten problem po prostu dzwoniąc:
userChannel = slack_client.api_call(
"im.open",
user=auser
)
następnie wysyłania wiadomości
slack_client.api_call(
"chat.postMessage",
channel=userChannel['channel']['id'],
text=response or default_response,
as_user=True
)
Po tym wszystko wydawało się działać zgodnie z oczekiwaniami. Chciałbym stworzyć coś podobnego do interfejsu "/ gifs" w przyszłości.
- 1. Wyślij wiadomość do skryptu w języku Python
- 2. Czy możemy przesłać pliki do google docs za pomocą skryptu powłoki Linux lub python
- 3. Korzystanie telegram wysłać wiadomość
- 4. Jak wysłać wiadomość powitalną do nowo zarejestrowanych użytkowników w Railsach za pomocą Devise?
- 5. Jak wysłać wiadomość do urządzenia za pomocą C2DM z serwera uwierzytelnionego za pomocą OAuth2?
- 6. Jak wysłać wiadomość e-mail z załącznikiem .csv za pomocą Pythona
- 7. Jak mogę wysłać wiadomość do innego węzła?
- 8. Logować wiadomość wysłać do zera?
- 9. Czy jeden emulator może wysłać wiadomość SMS do siebie?
- 10. delegowania do skryptu Pythona
- 11. Jak mogę zainstalować moduły Pythona programowo/za pomocą skryptu Python?
- 12. Uruchamianie skryptu Pythona jako innego użytkownika
- 13. Jak mogę wysłać dane POST i GET do skryptu Perl CGI za pomocą wiersza poleceń?
- 14. Czy serwer Ratchet WebSocket może wysłać wiadomość do samego klienta?
- 15. Wyślij wiadomość do użytkownika w WhatsApp z mojej aplikacji (Android)
- 16. Jak wysłać wiadomość do procesu macierzystego?
- 17. Czy mogę wysłać wiadomość do użytkownika Google Hangouts z Google Application Engine?
- 18. Twitter: wyślij bezpośrednią wiadomość za pomocą skryby
- 19. Jak wysłać alert do użytkownika za pomocą wtyczki bez użycia wyjątku InvalidPluginExecutionException?
- 20. Wysłać wiadomość e-mail do niestandardowego pola użytkownika przy zmianie, w narzędziu do śledzenia zdarzeń JIRA?
- 21. Jak wysłać wiadomość z usługi do działania
- 22. Czy jest możliwe aby wysłać zawartość vim za pomocą HTML
- 23. Jak wysłać wiadomość z serwera do klienta
- 24. Jak wysłać wiadomość do kanałów odsłuchowych Slack?
- 25. Jak wysłać wiadomość MMS do J2ME?
- 26. pyton tornado wysłać wiadomość do wszystkich połączeń
- 27. Jak zmodyfikować bufor Vima za pomocą skryptu Pythona?
- 28. Pytaj o dane wejściowe użytkownika za pomocą pythona instancja asyncio.create_server
- 29. Jak zamontować katalog sieciowy za pomocą pythona?
- 30. jQuery.getJSON wewnątrz skryptu użytkownika skryptu smarnego użytkownika
Czy możesz podać więcej szczegółów? –
Użyj tego samego kodu Pythona, który był używany do wysyłania wiadomości do kanału. Interfejs API pozostaje taki sam. Jedyna zmiana to "kanał" zamiast "użytkownik" (do którego chcesz wysłać wiadomość). Podałem powyższy kod, który działa dla mnie. Wypróbuj raz, a jeśli nie działa, podziel się faktycznym błędem lub problemem, przed którym stoisz. –
kiedy używam tego, mówi błąd "Obiekt SlackClient" nie ma atrybutu "czat" " –