ファイル(画像なし)をアップロードし、同時に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;
    }

まだ公開したくないので、このメソッドには「チャネル」はありません。次に、「public_url_shared」:trueを設定し、パブリックURLを取得します(別のメソッドを使用)。応答では、evreythingは問題ないようで、sharedはtrueに設定されており、このファイルを含むメッセージを投稿するために渡すpermalink_public-valueを取得しますが...

これで、2番目のメソッドから取得した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を介しても可能である必要があります。正しい?

エリック・カルコーケン

このアプローチが機能しない理由は次のとおりです。

Slackは、他のファイルとは異なる方法で画像を脅かします。画像は、URLを介してメッセージの添付ファイルに含めることができる唯一の種類のファイルです。そのために、添付ファイルのプロパティimage_url(およびthumb_url)があります。

利用可能なすべての添付ファイルのプロパティのリストについては、このページ確認してください

Slackチャネルに他のファイルを投稿してコメントできるようにする場合は、経由files.uploadアップロードしてすぐに共有する必要があります現在、公式APIを介して、以前にアップロードしたファイルを後でチャネルで共有することはできないため、これは重要です。

ファイルのアップロードにコメントを含めるには、initial_commentAPI呼び出しでプロパティを設定するだけです。

例:

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));

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ