你可以使用files.upload作为不同的用户将文件上传到Slack API吗?

时间:2016-06-03 21:33:17

标签: slack-api

我试图找到一种让应用程序通过Slack API将文本片段发布到我们的支持渠道的方法。使用files.upload方法,我可以创建一个文本片段并与频道共享,但帖子似乎来自我(因为用于验证请求的令牌是我的)。

我正在寻找一种方法来实现这一点,但是使用自定义用户名和图标显示它,就像使用chat.postMessage方法的用户名和icon_url参数一样。有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:3)

有两种方式。

方式1. - 如果您只想在频道中上传而不需要收听任何对话,那么您可以使用incoming-webhooks。然后覆盖用户名和图标。阅读Here中的“自定义用户名和图标”。

方式2 - 您可以创建机器人用户并让机器人用户键入此消息。我想你现在正在使用Slack生成的测试令牌,所以你只得到你的名字。但是如果您使用bot-user,那么您可以为您的bot使用自定义Name和icon_url。

我希望这能回答你的问题。

答案 1 :(得分:3)

是的,正如@Abhinav Rai所说,你需要有机器人。 Slack支持刚回答了我同样的问题。

  

要将文件作为机器人上传,您需要创建关联的“僵尸用户”并使用机器人的令牌发布文件:https://api.slack.com/bot-users - 所有文件必须由用户帐户拥有,僵尸用户将满足这个要求。

答案 2 :(得分:0)

有一种方法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!