如何使用C#通过SlackAPI上传文件(无图像)并同时将其注释到Slack [英] How to upload a file - NO image - and comment it at the same time to Slack via SlackAPI using c#

查看:0
本文介绍了如何使用C#通过SlackAPI上传文件(无图像)并同时将其注释到Slack的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以通过我的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;
    }

此方法中没有‘Channel’,因为我还不想发布它。 然后我设置"Public_url_Shared":true并获取公共URL(使用另一种方法)。 在响应Eevreything似乎一切正常,Shared被设置为True,并且我得到了一个PERMALINK_PUBLIC-值,我传递该值以发布包含此文件的消息,但是...

现在,我应该能够在使用从第二个方法获得的permarink_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实现。对吗?

推荐答案

以下是此方法不起作用的原因:

松弛威胁图像与其他文件不同。图像是您可以通过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));

这篇关于如何使用C#通过SlackAPI上传文件(无图像)并同时将其注释到Slack的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆