Как поделиться загруженным изображением в канале? - PullRequest
1 голос
/ 01 апреля 2019

Я загружаю изображение, чтобы расслабиться, используя https://slack.com/api/files.upload не указывать channels поле в запросе. Я могу видеть изображение в веб-интерфейсе. Какой должен быть вызов API для передачи загруженного изображения в какой-то канал в будущем?

Я попытался загрузить изображение, и ответ от slack был:

 {
    "ok": true,
    "file": {
        "id": "FHJ9QTX1V",
        "created": 1554115093,
        "timestamp": 1554115093,
        "name": "scaled_IMG-20190324-WA0002.jpg",
        "title": "scaled IMG-20190324-WA0002",
        "mimetype": "image/jpeg",
        "filetype": "jpg",
        "pretty_type": "JPEG",
        "user": "UGRR6FCF7",
        "editable": false,
        "size": 217356,
        "mode": "hosted",
        "is_external": false,
        "external_type": "",
        "is_public": false,
        "public_url_shared": false,
        "display_as_bot": false,
        "username": "",
        "url_private": "https://files.slack.com/files-pri/TGQU3SCHF-FHJ9QTX1V/scaled_img-20190324-wa0002.jpg",
        "url_private_download": "https://files.slack.com/files-pri/TGQU3SCHF-FHJ9QTX1V/download/scaled_img-20190324-wa0002.jpg",
        "thumb_64": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_64.jpg",
        "thumb_80": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_80.jpg",
        "thumb_360": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_360.jpg",
        "thumb_360_w": 360,
        "thumb_360_h": 270,
        "thumb_480": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_480.jpg",
        "thumb_480_w": 480,
        "thumb_480_h": 360,
        "thumb_160": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_160.jpg",
        "thumb_720": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_720.jpg",
        "thumb_720_w": 720,
        "thumb_720_h": 540,
        "thumb_800": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_800.jpg",
        "thumb_800_w": 800,
        "thumb_800_h": 600,
        "thumb_960": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_960.jpg",
        "thumb_960_w": 960,
        "thumb_960_h": 720,
        "thumb_1024": "https://files.slack.com/files-tmb/TGQU3SCHF-FHJ9QTX1V-fa34003fce/scaled_img-20190324-wa0002_1024.jpg",
        "thumb_1024_w": 1024,
        "thumb_1024_h": 768,
        "image_exif_rotation": 1,
        "original_w": 1040,
        "original_h": 780,
        "permalink": "https://autolainen.slack.com/files/UGRR6FCF7/FHJ9QTX1V/scaled_img-20190324-wa0002.jpg",
        "permalink_public": "https://slack-files.com/TGQU3SCHF-FHJ9QTX1V-3366c52c9c",
        "comments_count": 0,
        "is_starred": false,
        "shares": {},
        "channels": [],
        "groups": [],
        "ims": [],
        "has_rich_preview": false
    }
}

А затем попытался поделиться изображением, используя /api/chat.postMessage:

{
    "channel": "CH68ZSHFA",
    "text": "test",
    "blocks": [
        {
            "type": "section",
            "text": {
                "type": "plain_text",
                "text": "test"
            }
        },
        {
            "type": "image",
            "image_url": "https://autolainen.slack.com/files/UGRR6FCF7/FHJ9QTX1V/scaled_img-20190324-wa0002.jpg",
            "alt_text": "attachment"
        }
    ],
    "as_user": false,
    "username": "Client name"
}

Я использовал url из url_private, url_private_download, permalink, permalink_public полей описания файла, но получил тот же ответ:

{
    "ok": false,
    "error": "invalid_blocks",
    "response_metadata": {
        "messages": [
            "[ERROR] downloading image failed [json-pointer:/1/image_url]"
        ]
    }
}

1 Ответ

1 голос
/ 01 апреля 2019

К сожалению, нет официального метода API для совместного использования файла в вашем рабочем пространстве после его загрузки.Таким образом, если вы не включили канал (ы) в свой первоначальный запрос files.upload, то нет официального способа поделиться этим файлом позже.

Но есть неофициальный метод API, который называется * 1005.*, который имеет ту самую функциональность.Он отлично работает, но вам понадобится устаревший токен, чтобы использовать его, так что это может не быть решением для вас.

Другой способ использовать изображение в Slack - это включить его в сообщение (как выпробуем в вашем примере кода).Технически говоря, это не то же самое, что общий доступ к файлу в Slack, поскольку он работает только для изображений и предоставляет ограниченную функциональность для пользователей.

Хотя это будет работать, но только если ваш URL-адрес изображения является общедоступным, поскольку chat.postMessage работает только с общедоступными URL-адресами, а изображения в Slack по умолчанию являются частными (это означает, что вам необходимо предоставить авторизацию в любом запросе).чтобы получить доступ к этому файлу из-за пределов Slack).

Чтобы получить общедоступный URL-адрес для вашего файла, вы можете вызвать метод API files.sharedPublicURL после его загрузки.В качестве ответа вы получите общедоступный URL-адрес, который затем сможете использовать для включения этого изображения в ваше сообщение.

...