Как создать сообщение Slack, содержащее загруженное изображение? - PullRequest
2 голосов
/ 01 октября 2019

Я хотел бы создать сообщение в общем канале моего Slackspace из скрипта PHP. Сообщение должно содержать текст и изображение, которое было создано локально на лету.

Я уже создал приложение, сгенерировал токен на предъявителя и сумел создать текстовое сообщение также как изображение-upload.

Но я не знал, как создать оба в одном сообщении , так как описанная выше процедура создает два сообщения, одно с текстом, а другое с изображением.

1 Ответ

0 голосов
/ 01 октября 2019

Существует два разных способа отправки сообщения Slack с изображением.

A. Загрузка изображения напрямую с сообщением

Вы можете загрузить изображение непосредственно в Slack и поделиться им в канале. В рамках этого запроса вы также можете добавить комментарий, который будет отображаться в виде сообщения над изображениями. Это самый простой подход, однако ваш комментарий ограничен одной строкой.

Метод API: files.upload со следующими аргументами:

  • channels:Идентификатор одного или нескольких каналов для отображения изображения в
  • initial_comment: Ваше сообщение

B. Опубликовать сообщение с блоком изображения / вложением

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

В нашем примере мы будем использовать Slack в качестве хостера изображений, но вы можете использовать любой хостер изображений (например, Imgur ) даже свой собственный веб-сервер, если вы получаете общедоступный URL-адрес для своего изображенияfile.

Шаг 1 - Загрузить изображение в Slack

Метод API: files.upload без особых аргументов, но обязательно получите идентификатор файла из ответа. Не включайте аргумент channels, иначе изображение будет опубликовано в этом канале.

Шаг 2. Создание общедоступного URL

Далее необходимо пометить загруженный файл как общедоступный. Только тогда он будет доступен через свойство public_url

Метод API: files.sharedPublicURL с идентификатором файла в качестве аргумента.

Далее необходимо построить прямую ссылку на изображение из ссылки на сайт / permalink_public свойство файла.

Ссылка на сайт, которую вы получаете с permalink_public, имеет формат:

https://slack-files.com/{team_id}-{file_id}-{pub_secret}

Прямая ссылка на изображение имеет формат:

https://files.slack.com/files-pri/{team_id}-{file_id}/{filename}?pub_secret={pub_secret}

Так что вам просто нужно извлечь pub_secret из permalink_public, и вы сможете построить прямую ссылкук изображению. Другие параметры, которые вы можете получить из вашего файлового объекта.

Шаг 3 - Отправьте сообщение

Наконец, составьте ваше сообщение с URL-адресом изображения либо как Блок изображения , либо как вторичное вложение и отправьте его, используя метод по вашему выбору.

Метод API: chat.PostMessage или любой другой метод отправки сообщения, вкл.

Ответ на OP

Если вам нужно придерживаться веб-крюков, как это видно из ваших комментариев, и у вас нет доступа к Slack API, я бы предложил загрузить изображение в хостер изображений (например Imgur), а затем используйте подход B.

См. также

...