Cómo cargar cualquier archivo en Slack a través de Slack-App en c #

Necesito ayuda para cargar archivos a Slack.

Tengo una aplicación Slack que funciona con mi código (a continuación) hasta ahora. Pero todo lo que puedo hacer es publicar mensajes. No puedo adjuntar imágenes a los mensajes, porque no entiendo cómo usar los llamados "métodos" y la sintaxis que Slack está "mostrando" en su página API.

Esto crea mi "contenido" y debajo es solo un Stream para leer un archivo que podría cargar:

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

El 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;
        }    
     }
}

El 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();
    }
}

}}

Si alguien tiene un ejemplo de cómo debe verse una carga. O mejor

si alguien realmente pudiera explicar la sintaxis que estos mensajes flojos tienen que tener.

¡Eso seria genial! Todavía no sé dónde y cómo debo poner el llamado "Tipos de contenido aceptados: multipart / form-data, application / x-www-form-urlencoded" a mi carga. Simplemente no puedo encontrar ejemplos sobre esto ...

Editar

Lo que me confunde a simple vista es que Slack afirma que tienen un método adicional llamadofile.upload - pero ya no deberíamos usarlo, deberíamos usar solopostMessage.

¿Pero cómo "empacaría" un archivo en un mensaje? Mi sintaxis siempre parece estar apagada. Especialmente cuando se trata de "contenido" ... simplemente no puedo entender cómo debe ser el código c #. ¿Dónde declaro el "tipo de contenido" mencionado anteriormente?

Otro problema es que siempre envía mis mensajes, lo que significa que recibo una respuesta de 200 del servidor. Pero nunca muestra el archivo (lo que probablemente significa que la sintaxis está desactivada) O recibo la respuesta 200 pero el mensaje nunca se muestra en Slack.

Respuestas a la pregunta(3)

Su respuesta a la pregunta