我可以使用 Slack API 设置头像吗?

Can I use the Slack API to set the profile picture?

我是 运行 游戏社区的 Slack 团队。我的用户在游戏中都有头像,我已经在使用 Slack API 自动将他们的 Slack 用户名设置为他们的 in-game 名称,这样人们更容易被识别。

此外,我还想在 Slack 中自动将他们的头像设置为他们在游戏中的头像。但是我想不出办法,所以我的问题是可以做到吗?如果可以,怎么做?

我当前的起点是未记录的 API 方法 users.profile.set,它允许我设置用户的配置文件(请参阅下面的用户配置文件示例)。到目前为止,我已经能够修改:

用户个人资料还包含 URL 个人资料图片,但到目前为止我无法更改它。我尝试了外部 URLs,以及 URLs 已经上传到 Slack 的图像。

这是我的 "undocumented" Slack API 方法 users.profile.set 文档的 link,其中包含到目前为止我能想到的所有选项。

任何帮助将不胜感激。


2017 年 11 月更新

与此同时,Slack 添加了一个名为 users.setPhoto 的新 API 方法来设置个人资料照片。然而,这个新方法并没有解决这个问题,因为它只适用于你自己的用户(或者更准确地说,你有访问令牌的用户,例如你没有指定另一个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: "test@email.com"
},
is_admin: false,
is_owner: false,
is_primary_owner: false,
is_restricted: false,
is_ultra_restricted: false,
is_bot: false,
has_2fa: false
}

我认为个人资料图片 API 尚不可用。我前一段时间读到它在他们的 TODO 列表中。

稍微弄乱之后,可以使用未记录的 users.setPhoto 端点:

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

很遗憾,它会调整您的头像大小,从而无法上传动画 gif。

我能够使用 Jay Querie 的方法让它工作。 两个区别是我给出了完整路径,我把图像放在第一位。 所以就我而言:

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 可执行文件旁边,它就会找到它。