透過C#程式送訊息到DC頻道
最近工作發現同事很愛把Log往DC去送,於是我也小研究了一下,發現還真的不難。
這邊假設有一個Job要每天送文字檔檔到DC的某頻道,下列程式碼是先產出檔案。
string filePath = $"text-{Guid.NewGuid().ToString()}.txt";
StreamWriter outputFile = new StreamWriter(filePath);
outputFile.Write(DateTime.Now.ToString());
outputFile.Close();
接下來就只是使用HttpClient
using var client = new HttpClient();
using var multipartContent = new MultipartFormDataContent();
// text content
multipartContent.Add(new StringContent("this is message"), "content");
// add a file
var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
var fileContent = new StreamContent(fileStream);
//https://www.runoob.com/http/http-content-type.html
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/plain");
multipartContent.Add(fileContent, "file", Path.GetFileName(filePath));
最後就只是透過HttpClient把Request送到DC的WebHook URL。
try
{
var response = await client.PostAsync(webhookUrl, multipartContent);
string responseContent = string.Empty;
if (response.IsSuccessStatusCode)
{
responseContent = await response.Content.ReadAsStringAsync();
}
else
{
Console.WriteLine($"發送失敗,狀態碼: {response.StatusCode}");
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
}
catch (Exception ex)
{
Console.WriteLine($"發送失敗: {ex.Message}");
}