Slack.com と通信するための単純なコンソール アプリケーションを C# でコーディングしています。私は彼らの WebApi を介してこれを行っています。現在、メッセージを投稿する方法(添付ファイル、色付き、リンク、ユーザーなど)とファイルをサーバーに送信する方法を知っています。
通常の方法でファイルを送信すると (入力テキストボックスの左側にある「ファイルをアップロード」)、このファイルはメインの会話ウィンドウに表示されます。しかし、どうすれば同じことを WebAPI で実現できるのでしょうか? 現在、ファイルを送信した後、すべてのファイルのみがリストされている右側のパネルに表示されます。
また、2 番目の質問があります。メッセージのテキストの色を変更することは可能ですか (添付ファイルの「行」はありません)。
これは、https://slack.com/api/files.upload経由でファイルを送信した後の応答です。
{
"ok": true,
"file": {
"id": "F04EX4***",
"created": 1429279966,
"timestamp": 1429279966,
"name": "Testing.txt",
"title": "Testing",
"mimetype": "text\/plain",
"filetype": "text",
"pretty_type": "Plain Text",
"user": "U*********",
"editable": true,
"size": 28,
"mode": "snippet",
"is_external": false,
"external_type": "",
"is_public": false,
"public_url_shared": false,
"url": "https:\/\/slack-files.com\/files-pub\/T*******\
/testing.txt",
"url_download": "https:\/\/slack-files.com\/files-pub\/T************\
/download\/testing.txt",
"url_private": "https:\/\/files.slack.com\/files-pri\/T*******\
/testing.txt",
"url_private_download": "https:\/\/files.slack.com\/files-pri\/T**********\
/download\/testing.txt",
"permalink": "https:\/\/******.slack.com\/files\/******\
/F0******\/testing.txt",
"permalink_public": "https:\/\/slack-files.com\/********",
"edit_link": "https:\/\/******.slack.com\/files\/****\/F******\/testing.txt\/edit",
"preview": "This is a test file number2.",
"preview_highlight": "<div class=\
"sssh-code\"><div class=\"sssh-line\"><pre>This is a test file number2.<\/pre><\/div>\n
<\/div>",
"lines": 1,
"lines_more": 0,
"channels": [],
"groups": [],
"ims": [],
"comments_count": 0
}
}
申し訳ありませんが、これを適切にフォーマットする方法がわかりません。
「is_external」と「is_public」はどちらも false です。これが理由かもしれませんが、どうすれば「true」に設定できますか?
>>>編集ありがとうございます!:) これは私が使用している関数全体です:
public static void SlackSendFile()
{
FileStream str = File.OpenRead(@"C:\Users\Eru\Desktop\Testing.txt");
byte[] fBytes = new byte[str.Length];
str.Read(fBytes, 0, fBytes.Length);
str.Close();
var webClient = new WebClient();
string boundary = "------------------------" + DateTime.Now.Ticks.ToString("x");
webClient.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary);
var fileData = webClient.Encoding.GetString(fBytes);
var package = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n{3}\r\n--{0}--\r\n", boundary, "Testing.txt", "multipart/form-data", fileData);
var nfile = webClient.Encoding.GetBytes(package);
string url = "https://slack.com/api/files.upload?token=" + Token + "&content=" + nfile + "&channels=[" + Channel + "]";
byte[] resp = webClient.UploadData(url, "POST", nfile);
var k = System.Text.Encoding.Default.GetString(resp);
Console.WriteLine(k);
Console.ReadKey();
}
EDIT1: この行で:
byte[] resp = webClient.UploadData(url, "POST", nfile);
URL は次のとおりです。
https://slack.com/api/files.upload?token=*********&content=System.Byte[]&channels=[%23*****]
次に、バイト配列を渡します。
編集:
私は問題を解決しました。問題は、チャンネルがチャンネルの名前ではなく、チャンネルのIDであるべきだということでした...愚かな間違い:(