我可以通过SlackAPI将图像上传到Slack,可以上传文件,也可以上传带有注释的图像-但是我不能对没有图像的文件执行此操作。 我确定这是我的消息结构的问题-看一下:所有这些都是通过HttpClient完成的!
这是我的工作文件上传方法:
public MultipartFormDataContent SendFileToChannel()
{
var requestContent = new MultipartFormDataContent();
var fileContent = new StreamContent(GetFile.ReadFile());
requestContent.Add(new StringContent(token), "token");
requestContent.Add(fileContent, "file", Path.GetFileName(GetFile.path));
return requestContent;
}
此方法中没有“频道”,因为我还不想发布它。 然后,将“ public_url_shared”设置为true,并获取公共URL(使用另一种方法)。 在响应中,evreything似乎没问题,shared设置为true,我得到了permalink_public-value,我将该值传递到包含此文件的消息中,但是...
现在,当我使用从第二种方法获得的permalink_url时,我应该能够发布一条消息。这适用于图像。但是它不适用于文件。 我总是得到错误响应“ no_file_data”。 这是我的方法:
public MultipartFormDataContent SendMessageWithFile(SlackFileResponse resp)
{
var requestContent = new MultipartFormDataContent();
requestContent.Add(new StringContent(token), "token");
requestContent.Add(new StringContent(channel), "channel");
requestContent.Add(new StringContent(text), "text");
requestContent.Add(new StringContent("[{ \"fallback\":\"Anhang\", \"text\":\"\", \"\":\"" + resp.permalink_public + "\"}]"), "attachments");
return requestContent;
}
我在这里做错什么了吗?因为可以通过RTM-Slack轻松地将文件拖放到其中,并向其中添加一条消息。因此,它也必须通过SlackAPI成为可能。对吧?
答案 0 :(得分:1)
这就是为什么这种方法行不通的原因:
Slack对图像的威胁与其他文件不同。图片是仅类型的文件,您可以通过URL将其包括在邮件附件中。为此,我们具有附件的属性image_url
(和thumb_url
)。
签出this page以获得所有可用附件属性的列表。
如果您想在Slack频道中发布任何其他文件并能够对其进行评论,则需要通过files.upload
上传并立即共享。这很重要,因为当前无法通过官方API在以后共享频道中先前上传的文件。
要在文件上传中添加评论,只需在API调用中设置initial_comment
属性即可。
示例:
var requestContent = new MultipartFormDataContent();
var fileContent = new StreamContent(GetFile.ReadFile());
requestContent.Add(new StringContent(token), "token");
requestContent.Add(new StringContent("my_channel"), "channels");
requestContent.Add(new StringContent("Check out this amazing new file"), "initial_comment");
requestContent.Add(fileContent, "file", Path.GetFileName(GetFile.path));