прикрепление изображения с помощью chat.postMessage - Slack API - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь использовать chat.postMesage с API Slack, но не могу отправить вложение как часть сообщения. Я подумал, что могу использовать image_url как часть attachment объекта, чтобы показать изображение как часть моего сообщения.

Я не получаю никакой ошибки в ответе, но и не вижу любое вложение. Сообщение публикуется, но никаких вложений нет.

Вот что я пытаюсь сделать

public async Task<string>  PostMessage()
{
    var response = string.Empty;

    var slacAttributes = new stackAttributes
    {
        channel = "testapp",
        text = $" {DateTime.Now} > {Environment.NewLine} Good Morning all!!!{Environment.NewLine} new line",
        attachments = new slackAttachments { fallback = "exception", text = "image text",title="kuku", image_url = "https://i.imgur.com/jO9N3eJ.jpg" }
    };

    try
    {
        using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "xoxp-927360717313-937536168112-927367533025-c1065234477a3de10257bc69f523f789");
            var atttrJson = slacAttributes;
        var json = new JavaScriptSerializer().Serialize(atttrJson);
        var buffer = System.Text.Encoding.UTF8.GetBytes(json);
        var byteContent = new ByteArrayContent(buffer);
        byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        HttpResponseMessage result =  await client.PostAsync("https://slack.com/api/chat.postMessage", byteContent);
        if(result.IsSuccessStatusCode)
        {
            var content = await result.Content?.ReadAsByteArrayAsync();
            response = Encoding.UTF8.GetString(content, 0, content.Length);
        }
    }
    }
    catch(Exception e)
    {
        throw new Exception($"An error occured while Posting to slack.{e}");
    }

    return response;  
}

1 Ответ

1 голос
/ 13 февраля 2020

Свойство attachments должно быть массивом объектов вложения. Из вашего кода похоже, что вы предоставляете только один объект вложения, но не массив.

...