我试图找到一种让应用程序通过Slack API将文本片段发布到我们的支持渠道的方法。使用files.upload方法,我可以创建一个文本片段并与频道共享,但帖子似乎来自我(因为用于验证请求的令牌是我的)。
我正在寻找一种方法来实现这一点,但是使用自定义用户名和图标显示它,就像使用chat.postMessage方法的用户名和icon_url参数一样。有没有办法实现这个目标?
答案 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!