您可以使用 files.upload 作为其他用户将文件上传到 Slack API 吗?
Can you upload a file to the Slack API using files.upload as a different user?
我正在尝试找到一种方法,通过 Slack API 将应用程序 post 文本片段发送到我们的支持渠道。使用 files.upload 方法,我可以创建一个文本片段并与频道共享,但是 post 似乎来自我(因为用于验证请求的令牌是我的)。
我正在寻找一种方法来执行此操作,但要让它显示自定义用户名和图标,就像使用 chat.postMessage 方法的用户名和 icon_url 参数一样。有办法实现吗?
有两种方法。
方式1. - 如果你只想在频道上传而不需要听任何对话,那么你可以使用incoming-webhooks。然后覆盖用户名和图标。在 Here 中阅读 "Customizing your username and icon"。
方法 2 - 您可以创建一个 bot 用户并让 bot 用户为您键入 post 此消息。我猜你现在正在使用 Slack 生成的测试令牌,所以你只能得到你的名字。但是,如果您使用 bot-user,那么您可以为您的机器人使用自定义名称和 icon_url。
我希望这能回答你的问题。
是的,正如@Abhinav Rai 建议的那样,您需要有机器人。 Slack 支持刚刚回答了我同样的问题。
To upload files as a bot you'll need to create an associated 'bot user' and post the file using the bot's token: https://api.slack.com/bot-users — all files must be owned by a user account and the bot user will fill this requirement.
有一种方法 3 使用 chat.postMessage 函数中的用户名函数。按照这个 -
import slack
import json
import os
def pureimg(data1):
data1 = '[{"text": "", "image_url": "'+data1+'"}]'
data1 = [json.loads(data1[1:-1])]
return data1
#This function will make the image url to correct format.
slacker = slack.WebClient(token='your-token-here')
payoff=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'filename.png')
#It gives cross OS compatibility on filepath.
response=slacker.files_upload(channel='#theta',file=payoff)
payoff=response['file']['permalink']
#First We upload the local file to Slack and fetch permalink.
#If you do not have any local file just put the external image URL in the payoff.
response=slacker.chat_postMessage(channel='#channel_name', text="Sample Text", username='Bot name', attachments=pureimg(payoff), icon_emoji=':emoji:')
#Then, We post to Slack Channel as a bot!
我正在尝试找到一种方法,通过 Slack API 将应用程序 post 文本片段发送到我们的支持渠道。使用 files.upload 方法,我可以创建一个文本片段并与频道共享,但是 post 似乎来自我(因为用于验证请求的令牌是我的)。
我正在寻找一种方法来执行此操作,但要让它显示自定义用户名和图标,就像使用 chat.postMessage 方法的用户名和 icon_url 参数一样。有办法实现吗?
有两种方法。
方式1. - 如果你只想在频道上传而不需要听任何对话,那么你可以使用incoming-webhooks。然后覆盖用户名和图标。在 Here 中阅读 "Customizing your username and icon"。
方法 2 - 您可以创建一个 bot 用户并让 bot 用户为您键入 post 此消息。我猜你现在正在使用 Slack 生成的测试令牌,所以你只能得到你的名字。但是,如果您使用 bot-user,那么您可以为您的机器人使用自定义名称和 icon_url。
我希望这能回答你的问题。
是的,正如@Abhinav Rai 建议的那样,您需要有机器人。 Slack 支持刚刚回答了我同样的问题。
To upload files as a bot you'll need to create an associated 'bot user' and post the file using the bot's token: https://api.slack.com/bot-users — all files must be owned by a user account and the bot user will fill this requirement.
有一种方法 3 使用 chat.postMessage 函数中的用户名函数。按照这个 -
import slack
import json
import os
def pureimg(data1):
data1 = '[{"text": "", "image_url": "'+data1+'"}]'
data1 = [json.loads(data1[1:-1])]
return data1
#This function will make the image url to correct format.
slacker = slack.WebClient(token='your-token-here')
payoff=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'filename.png')
#It gives cross OS compatibility on filepath.
response=slacker.files_upload(channel='#theta',file=payoff)
payoff=response['file']['permalink']
#First We upload the local file to Slack and fetch permalink.
#If you do not have any local file just put the external image URL in the payoff.
response=slacker.chat_postMessage(channel='#channel_name', text="Sample Text", username='Bot name', attachments=pureimg(payoff), icon_emoji=':emoji:')
#Then, We post to Slack Channel as a bot!