我正在尝试为松弛工作区中的用户更新自定义字段。
参考 API 文档 - https://api.slack.com/methods/users.profile.set
我的要求如下所示
curl -X POST -H "Authorization: Bearer $USER_TOKEN" \
-H "Content-type: application/json; charset=UTF-8" \
-d '{
"profile": {
"fields": {
"Xf015PPHEJKC": {
"value": "username-using-api",
"alt": ""
}
},
"status_text": "api-status",
"skype": ""
},
"user": "U02V1UA3YHL"
}' \
https://slack.com/api/users.profile.set | jq .
这里
Xf015PPHEJKC
是有问题的自定义字段的ID。
请求没有出错,它返回自定义字段的旧值的用户详细信息
上述请求成功更新了
status_text
值,该值不是自定义字段。但是无法将自定义字段值更新为username-using-api
.
如何使用 API 更新自定义字段值
您链接的文档说明了一些事情,第一,我怀疑可能已经是真的,因为您可以更改其中一个字段,但值得一问:
“除非您使用所有者或管理员生成的令牌(对于企业网格,这必须是组织所有者或组织管理员),否则您不能更改其他用户的个人资料详细信息。您不能更改用户的个人资料详细信息,除非以下两项都是正确的: 你的角色等级比他们高。角色级别从最高到最低是: Primary Owner > Owner > Admin > Member > Guest 。可以在此处找到有关角色的更多信息。 要更改所有者或管理员的资料,您必须使用由主要所有者生成的令牌。”
如果这是真的,那太好了,让我们进一步看: 运行 team.profile.get slack 方法时,返回的个人资料字段和 ID 是否与您在问题中发布的匹配?该字段可能是在错误的团队中创建的。
如果您发现该字段的 ID 确实匹配,那么您应该很好。
阅读文档说明如下:
字段对象是一组自定义配置文件字段的键:值对。
我注意到在你的代码中它看起来不是一个数组,而是两个带有逗号分隔符的对象。我对 CURL 不太熟悉,不知道是否应该将这些对象包装在表示列表或数组(如 [array])的东西中。如果添加该类型的语法没有任何作用,那么让我们继续。
我会尝试删除其他字段,即非自定义字段,并且只尝试更新自定义字段。原因是文档提到在“配置文件”有效负载中使用“字段”对象是更新自定义字段的方式,而不是非自定义字段,尽管我确实注意到您只对自定义字段使用字段对象,但它可以是它只允许为每个 http 请求设置自定义或非自定义。
他们的文档进一步说
fields 数组中的一个字段需要一个类型。这决定了信息值包含的类型。
但是他们的示例根本没有显示有效载荷中引用的这种“类型”。它可能是有效负载中所需的附加密钥,例如:
"profile": {
"fields": {
"Xf015PPHEJKC": {
"value": "username-using-api",
"alt": "",
"type":"text" //Adding Type key to the field object
}
},
"status_text": "api-status",
"skype": ""
}
让我知道进展如何!