设置聊天室自定义属性

大约 3 分钟

设置聊天室自定义属性

功能说明

若聊天室基本属性(聊天室名称、描述和公告等)不满足业务要求,用户可增加自定义属性并同步给所有成员。利用自定义属性可以存储直播聊天室的类型、狼人杀等游戏中的角色信息和游戏状态以及实现语聊房的麦位管理和同步等。聊天室自定义属性以键值对(key-value)形式存储,属性信息变更会实时同步给聊天室成员。

  • 设置单个用户的特定聊天室的自定义属性(KV 对)。
  • 单次最多可设置 10 个键值对。

调用频率上限

100 次/秒/App Key

请求 URL

PUT https://{host}/{org_name}/{app_name}/metadata/chatroom/{chatroom_id}/user/{username}
参数类型是否必需描述
chatroom_idString聊天室 ID。
usernameString用户 ID。设置该用户的聊天室自定义属性。

关于请求 URL 中的其他参数的说明,详见 请求 URL 参数介绍

请求示例

# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X PUT 'https://XXXX/XXXX/XXXX/metadata/chatroom/662XXXX13/user/user1'    \
-H 'Content-Type: application/json'      \
-H 'Accept: application/json'      \
-H 'Authorization: Bearer <YourAppToken>'      \
-d '{
    "metaData": {
  			"key1": "value1",
			  "key2": "value2"
    },
    "autoDelete": "DELETE"
 }' 

请求 header 参数

关于 Content-TypeAcceptAuthorization 字段的说明,详见 请求 header 参数说明

请求 body 参数

参数类型是否必需描述
metaDataJSON聊天室的自定义属性,存储为键值对(key-value)集合,即 Map<String,String>。该集合中最多可包含 10 个键值对,在每个键值对中,key 为属性名称,最多可包含 128 个字符;value 为属性值,不能超过 4096 个字符。每个聊天室最多可有 100 个自定义属性,每个应用的聊天室自定义属性总大小为 10 GB。
key 支持以下字符集:
• 26 个小写英文字母 a-z;
• 26 个大写英文字母 A-Z;
• 10 个数字 0-9;
• "_", "-", "."。
autoDeleteString当前成员退出聊天室时是否自动删除该自定义属性。
• (默认)'DELETE':是;
• 'NO_DELETE':否。

响应示例

{
  "uri":"https://XXXX/XXXX/XXXX/metadata/chatroom",  
  "timestamp":1716887320215,
  "action":"put",
  "data": {
    "successKeys": ["key1"],
    "errorKeys": { "key2": "errorDesc" }
  }
}

由于该 API 批量设置聊天室自定义属性,一次可传入多个 key-value。即使其中有些 key-value 校验失败,也不会影响其他 key-value 正常写入,响应状态码仍为 200,示例如下:

{
    "uri": "%s/easemob-demo/chatdemoui/metadata/chatroom",
    "timestamp": 1720769458528,
    "action": "put",
    "data": {
        "successKeys": [],
        "errorKeys": {
            "key1": "properties key 'key1' is exceeding maximum limit 128",
            "key2": "properties key 'key2' is exceeding maximum limit 128"
        }
    }
}

响应 body 字段

如果返回的 HTTP 状态码为 200,表示请求成功,响应包体中的 data 字段如下:

字段类型描述
dataJSON实际获取的响应数据。
- successKeysArray设置成功的聊天室属性名称列表。
- errorKeysObject设置失败的聊天室属性,返回键值对格式,key 为属性名称,value 为失败原因。

响应体中的其他参数说明如下表所示:

参数类型描述
uriString请求 URL。
timestampLongUnix 时间戳,单位为毫秒。
actionString请求方法。

如果返回的 HTTP 状态码非 200,表示请求失败。你可以参考 错误码 了解可能的原因。

错误码

如果返回的 HTTP 状态码非 200,表示请求失败,可能提示以下错误码:

HTTP 状态码错误类型错误提示可能原因处理建议
400exceed allowed batch size 10要设置的 key 属性数量超过了 10 个。要设置的 key 的数量不要超过 10 个。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
401MetadataExceptionuser is not in chatroom用户不在聊天室内。使用正确的聊天室成员的用户 ID。
400others are not allowed to be set不允许更新他人的聊天室属性。无权更新其他人的聊天室属性。

关于其他错误,你可以参考 响应状态码 了解可能的原因。

上次编辑于: