Trong một nhóm slack, chúng tôi có thể gửi một tin nhắn cho người dùng bằng cách sử dụng python? Tôi đã thấy nhiều API khác nhau, chúng cung cấp thông báo cho kênh nhưng không cung cấp cho người dùng cụ thể. Chúng ta có thể làm điều đó?Chúng tôi có thể gửi tin nhắn cho người dùng bằng cách sử dụng kịch bản lệnh python không?
Trả lời
Có, điều này có thể được thực hiện. Thay vì "#channel_name", hãy sử dụng "@user" trong API. Người dùng sẽ nhận được tin nhắn từ slackbot vì chúng tôi đang sử dụng API và không phải là tin nhắn trực tiếp từ bất kỳ người dùng nào khác. Và nếu bạn muốn đăng người dùng đó làm người dùng đã được xác thực, hãy sử dụng as_user= true
.
slack.chat.post_message('@to_user',msg,username='@from_user')
Chi tiết có tại https://api.slack.com/methods/chat.postMessage
Bạn có thể có được một danh sách các kênh IM sử dụng và gửi thông điệp của bạn đến bất kỳ kênh IM (nhắn tin trực tiếp).
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)
Không có gì chống lại bạn hoặc mã của bạn, nhưng điều này thật xấu xí. Nếu tất cả những gì chúng ta có là tên của người dùng, trước tiên chúng ta cần tìm kiếm user_id rồi một im.list khác để tìm kênh đó? Ba cuộc gọi API để gửi tin nhắn cho người dùng? – Drew
Như Deepali đã nói, chỉ cần chuyển @user vào thông số kênh. Bạn cũng có thể sử dụng API điểm cuối postXessage Slack trên RapidAPI here. Trang này sẽ cho phép bạn tạo mã cần thiết để thực hiện cuộc gọi API trong python và kiểm tra cuộc gọi API.
Mã RapidAPI sẽ tạo ra cho bạn sẽ trông như thế này:
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': ''
})
Đây là giải pháp Python Tôi tìm thấy bằng cách sử dụng gói 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"
)
tôi dựa của tôi ví dụ tắt của hướng dẫn này: build-first-slack-bot-python
Với rằng tôi đã có thể giải quyết vấn đề chỉ đơn giản bằng cách gọi:
userChannel = slack_client.api_call(
"im.open",
user=auser
)
sau đó gửi tin nhắn
slack_client.api_call(
"chat.postMessage",
channel=userChannel['channel']['id'],
text=response or default_response,
as_user=True
)
Sau đó tất cả mọi thứ dường như làm việc như mong đợi. Tôi muốn tạo một cái gì đó tương tự như giao diện "/ gifs" trong tương lai.
- 1. Gửi TIN NHẮN tới một người trên facebook bằng cách sử dụng python
- 2. Python - imaplib - Xem tin nhắn cho người gửi cụ thể
- 3. Gửi tin nhắn cho (các) người bạn của tôi bằng ứng dụng Android của tôi
- 4. Gửi tin nhắn tới Tập lệnh Python
- 5. Gửi tin nhắn GCM đến người dùng cụ thể
- 6. Gửi tin nhắn cho người dùng trong WhatsApp từ ứng dụng của tôi (Android)
- 7. Gửi tin nhắn từ ứng dụng đến người dùng facebook
- 8. Tìm ID người dùng của riêng tôi để gửi tin nhắn bằng Telegram API
- 9. Cách tạo MUC và gửi tin nhắn đến MUC hiện có bằng Python và XMPP
- 10. Có thể gửi tin nhắn trò chuyện hangouts của Google bằng cách sử dụng node.js không?
- 11. Gửi tin nhắn trò chuyện từ kịch bản ứng dụng google
- 12. Kịch bản người dùng cuối
- 13. cách gửi tin nhắn thành công nếu chúng tôi sử dụng chế độ xem chung django
- 14. Gửi tin nhắn SM5100B bằng cách sử dụng cutecom
- 15. Làm thế nào để gửi/nhận tin nhắn SMS bằng cách sử dụng lệnh AT?
- 16. Cách gửi tin nhắn cho người dùng cụ thể Ratchet PHP Websocket
- 17. Gửi tin nhắn tới WhatsApp bằng cách sử dụng java
- 18. Gửi tin nhắn đến người dùng qua tín hiệu django
- 19. Cách gửi một tin nhắn bằng Nhắn tin Firebase
- 20. Gửi thông qua Người đưa thư bằng cách sử dụng Nhắn tin Firebase
- 21. Có giải pháp nào có thể gửi tin nhắn đến một nhóm người dùng (không phải tất cả người dùng) bằng web4ocket spring4 không?
- 22. Hàng đợi tin nhắn POSIX có thể được sử dụng cho người dùng chéo trên Linux không?
- 23. Thực hiện kịch bản lệnh python theo từng dòng bằng cách sử dụng C++ Python API
- 24. Sử dụng Telegram để gửi tin nhắn
- 25. Ủy quyền khi gửi tin nhắn văn bản bằng AmazonSNSClient
- 26. Cách nhận tin nhắn cho người dùng cụ thể bằng API FQL hoặc GRAPH?
- 27. Nhấp chuột bằng cách gửi tin nhắn
- 28. Gửi tin nhắn SMS/Tin nhắn văn bản qua PHP
- 29. Gửi tin nhắn MIDI bằng Python (trên Ubuntu)
- 30. cách nhận id người dùng có phạm vi trang fb để gửi tin nhắn
bạn có thể cung cấp thêm một số chi tiết không? –
Sử dụng cùng một mã python bạn đã sử dụng để gửi tin nhắn tới kênh. API cũng vẫn giữ nguyên. Thay đổi duy nhất thay vì "kênh" đề cập đến "người dùng" (người mà bạn muốn gửi tin nhắn). Tôi đã cung cấp mã ở trên phù hợp với tôi. Hãy thử nó một lần và nếu nó không làm việc chia sẻ các lỗi thực tế hoặc vấn đề bạn đang phải đối mặt. –
khi tôi đang sử dụng này, nó nói lỗi "'SlackClient' đối tượng không có thuộc tính 'chat'" –