В слабой команде мы можем отправить сообщение пользователю с помощью python? Я видел различные API, они предлагают сообщение для канала, но не для конкретного пользователя. Можем ли мы это сделать?
Можем ли мы отправить сообщение пользователю в slack, используя python script?
Ответ 1
Да, это можно сделать. Вместо "#channel_name" в API используется "@user". Пользователь получит сообщение от slackbot, поскольку мы используем API, а не прямое сообщение от любого другого пользователя. И если вы хотите отправить сообщение этому пользователю в качестве аутентифицированного пользователя, используйте as_user= true
.
slack.chat.post_message('@to_user',msg,username='@from_user')
Подробнее см. https://api.slack.com/methods/chat.postMessage
Ответ 2
Это было решение Python, которое я нашел с помощью пакета 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"
)
Ответ 3
Вы можете получить список пользовательских IM-каналов и отправить сообщение на любой IM-канал (Прямой обмен сообщениями).
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)
Ответ 4
Как сказал Deepali, просто передайте @user в параметр канала. Вы также можете использовать API конечной точки Slack postMessage для RapidAPI здесь. Эта страница позволит вам сгенерировать код, необходимый для вызова API в python и проверить вызов API.
Код RapidAPI будет генерировать, так как вы будете выглядеть следующим образом:
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': ''
})
Ответ 5
Я основывал свой пример на этом уроке: build-first-slack-bot-python
С этим я смог решить проблему, просто позвонив:
userChannel = slack_client.api_call(
"im.open",
user=auser
)
затем отправьте сообщение
slack_client.api_call(
"chat.postMessage",
channel=userChannel['channel']['id'],
text=response or default_response,
as_user=True
)
После этого все, казалось, работало так, как ожидалось. Я хотел бы создать нечто похожее на интерфейс "/gifs" в будущем.
Ответ 6
Простое решение использует Slack Web API
и requests
:
import requests
# slack access bot token
slack_token = "xpxb-9534042403-731932630054-KSwhrmhg87TXGuF23Z4ipTRm"
data = {
'token': slack_token,
'channel': 'UJ24R2MPE', # User ID.
'as_user': True,
'text': "GO Home!"
}
requests.post(url='https://slack.com/api/chat.postMessage',
data=data)
userID вы можете получить здесь: