Могу ли я использовать Slack API для установки изображения профиля?

Я управляю командой Slack в игровом сообществе. У всех моих пользователей есть аватары в игре, и я уже использую Slack API для автоматической установки их имени пользователя Slack на их внутриигровое имя, чтобы людей было легче узнавать.

Кроме того, я также хотел бы автоматически установить изображение их профиля в Slack с изображением аватара из игры. Однако я не мог придумать, как это сделать, поэтому мой вопрос: можно ли это сделать, и если да, то как?

Моя текущая отправная точка - это недокументированный метод API users.profile.set, который позволяет мне установить профиль пользователя (см. Ниже пример профиля пользователя). Пока мне удалось изменить:

  • имя
  • фамилия
  • заглавие
  • Телефон
  • скайп

Профиль пользователя также содержит URL-адрес изображения профиля, но мне пока не удалось его изменить. Я пробовал внешние URL-адреса и URL-адреса изображений, уже загруженных в Slack.

Вот ссылка на мою документацию по "недокументированному "Метод Slack API users.profile.set со всеми вариантами, которые мне удалось выяснить.

Любая помощь будет очень признательна.


Обновление, ноябрь 2017 г.

Тем временем Slack добавил новый метод API под названием users.setPhoto для настройки фотографий профиля. Однако этот новый метод не решает этот вопрос, потому что он работает только для вашего собственного пользователя (или, точнее, для пользователя, для которого у вас есть токен доступа, например, вы не указываете другой user ID).

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


Пример профиля пользователя:

{
id: "U12345678",
team_id: "T12345678",
name: "erik.kalkoken",
deleted: false,
status: null,
color: "9f69e7",
real_name: "Erik Kalkoken",
tz: "America/Chicago",
tz_label: "Central Daylight Time",
tz_offset: 3600,
profile: {
avatar_hash: "XXX",
first_name: "Erik",
last_name: "Kalkoken",
title: "",
phone: "",
skype: "",
image_24: "https://avatars.slack-edge.com/2016-03-19/XXX_24.jpg",
image_32: "https://avatars.slack-edge.com/2016-03-19/XXX_32.jpg",
image_48: "https://avatars.slack-edge.com/2016-03-19/XXX_48.jpg",
image_72: "https://avatars.slack-edge.com/2016-03-19/XXX_72.jpg",
image_192: "https://avatars.slack-edge.com/2016-03-19/XXX_192.jpg",
image_512: "https://avatars.slack-edge.com/2016-03-19/XXX_512.jpg",
image_1024: "https://avatars.slack-edge.com/2016-03-19/XXX_512.jpg",
image_original: "https://avatars.slack-edge.com/2016-03-19/XXX_original.jpg",
real_name: "Erik Kalkoken",
real_name_normalized: "Erik Kalkoken",
email: "[email protected]"
},
is_admin: false,
is_owner: false,
is_primary_owner: false,
is_restricted: false,
is_ultra_restricted: false,
is_bot: false,
has_2fa: false
}

person Erik Kalkoken    schedule 06.04.2016    source источник


Ответы (3)


Я не думаю, что API изображения профиля еще доступен. Некоторое время назад я читал, что это было в их списке TODO.

person Laurent    schedule 10.04.2016
comment
Да, это могло быть так. Однако я прочитал то же утверждение о другом недокументированном методе API, который действительно существует. Так что я надеюсь, что метод изменения изображения профиля существует и кто-то придумал, как его использовать. - person Erik Kalkoken; 10.04.2016

Немного поработав с этим, можно использовать недокументированную конечную точку users.setPhoto:

curl https://slack.com/api/users.setPhoto \
    -F "token=<removed>" \
    -F "image=@/path/to/image.jpg"

К сожалению, он изменит размер вашего аватара, что лишит возможности загружать анимированные гифки.

person Jay    schedule 25.08.2016
comment
Это выглядит многообещающе. К сожалению, у меня проблемы с установкой нового изображения. всегда получаю ошибку no_image. Не могли бы вы уточнить, как определяется параметр изображения? Может привести пример? Благодарю. - person Erik Kalkoken; 25.08.2016
comment
Также не должно быть пользовательского параметра? - person Erik Kalkoken; 25.08.2016
comment
@ является обязательным (зависит от cURL), а путь должен быть абсолютным. Пользователь, сгенерировавший токен, является пользователем по умолчанию, и я не особо подробно разбирался в настройке других изображений профиля пользователя. Если авторы этой конечной точки сохранили аналогичные параметры в API, вы можете указать пользователя с тем же полем user, которое используется в документированной конечной точке users.profile.set. - person Jay; 25.08.2016
comment
Slack добавил новый метод под названием setPhoto, который позволяет установить изображение профиля. Однако он работает только для текущего пользователя, поэтому на самом деле не решает цели этого вопроса. - person Erik Kalkoken; 17.10.2016
comment
@ErikKalkoken Вы когда-нибудь обходили ошибку no_image? - person 0xcaff; 19.08.2017
comment
@ 0xcaff нет, я не делал. и давно не пробовал - person Erik Kalkoken; 19.08.2017

Мне удалось заставить его работать, используя метод Джея Куэри. Два различия заключались в том, что я указал полный путь и первым поставил изображение. Так что в моем случае:

curl https://slack.com/api/users.setPhoto -F "image=@C:\Users\name\Pictures\dojocat.jpg" -F "token=xxxx-123-123-123-123"

Первоначально, когда я использовал gitbash для запуска curl, и он искал изображение в каталоге, где был установлен / запущен мой gitbash. Так что, если бы я поместил dojocat.jpg рядом с исполняемым файлом gitbash, он бы его нашел.

person Nikolay Arabadzhi    schedule 14.11.2017