Como fazer upload de qualquer arquivo no Slack via Slack-App em c #

Preciso de ajuda com o upload de arquivos para o Slac

Tenho um Slack-App que está funcionando com meu código (abaixo) até agora. Mas tudo o que posso fazer é postar mensagens. Não consigo anexar imagens às mensagens - porque não entendo como usar os chamados "métodos" e a sintaxe que o Slack está "aparecendo" na página da API.

Isso cria meu "conteúdo" e, abaixo, é apenas um Stream para ler um arquivo que eu poderia enviar:

    public class PostMessage
    {


        public FormUrlEncodedContent Content(string message, string file)
        {
            var values = new Dictionary<string, string>
            {
                {"token", "xoxp-myToken"},
                { "username", "X"},         
                { "channel", "myChannel"},
                { "as_user", "false"},     
                {"text", message},
                { "content", file},
                { "attachments","[{ \"fallback\":\"dummy\", \"text\":\"this is a waste of time\"}]"}
            };

            var content = new FormUrlEncodedContent(values);

            return content;
        }
    }

    public class PostFile
    {
        String path = @"C:\Users\f.held\Desktop\Held-Docs\dagged.jpg";

        public string ReadImageFile()
        {            
            FileInfo fileInfo = new FileInfo(path);
            long imageFileLength = fileInfo.Length;
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);
            byte[] imageData = br.ReadBytes((int)imageFileLength);
            var str = Encoding.Default.GetString(imageData);
            return str;
        }
    }
}  

O cliente que se comunica:

public class SlackClient
{
        private readonly Uri _webhookUrl;
        private readonly HttpClient _httpClient = new HttpClient {};

        public SlackClient(Uri webhookUrl)
        {
            _webhookUrl = webhookUrl;
        }

        public async Task<HttpResponseMessage> SendMessageAsync(FormUrlEncodedContent content)
        {
            var response = await _httpClient.PostAsync(_webhookUrl, content);

            return response;
        }    
     }
}

O principal

public static void Main(string[] args)
{
    Task.WaitAll(IntegrateWithSlackAsync());
}

private static async Task IntegrateWithSlackAsync()
{
    var webhookUrl = new Uri("https://slack.com/api/files.upload");
    var slackClient = new SlackClient(webhookUrl);
    PostMessage PM = new PostMessage();
    PostFile PF = new PostFile();


    while (true)
    {
        Console.Write("Type a message: ");
        var message = Console.ReadLine();
        var testFile = PF.ReadImageFile();
        FormUrlEncodedContent payload = PM.Content(message, testFile);
        var response = await slackClient.SendMessageAsync(payload);
        var isValid = response.IsSuccessStatusCode ? "valid" : "invalid";
        Console.WriteLine($"Received {isValid} response.");
        Console.WriteLine(response);
        response.Dispose();
    }
}

}}

Se alguém tiver um exemplo de como deve ser o upload. Ou melhor ainda,

se alguém pudesse realmente explicar a sintaxe que essas Slack-Messages devem te

Isso seria bom! Eu ainda não sei onde e como devo colocar o chamado "Tipos de conteúdo aceitos: multipart / form-data, application / x-www-form-urlencoded" para o meu upload. Eu simplesmente não consigo encontrar exemplos sobre isso ...

Editar

O que me confunde é que Slack afirma que eles têm um método extra chamadofile.upload - mas não devemos mais usá-lo, devemos usar apenaspostMessage.

Mas como eu "empacotaria" um arquivo em uma mensagem? Minha sintaxe sempre parece estar desativada. Especialmente quando se trata de "conteúdo" ... Eu simplesmente não consigo descobrir como é o código c #. Onde declaro o "tipo de conteúdo" mencionado acima?

Outro problema é que ele sempre envia minhas mensagens - significa que recebo 200 respostas do servidor. Mas ele nunca mostra o arquivo (o que provavelmente significa que a sintaxe está desativada). Ou recebo a resposta de 200, mas a mensagem nunca aparece no Slac

questionAnswers(3)

yourAnswerToTheQuestion