聊天室属性管理

大约 18 分钟

聊天室属性管理

本文介绍聊天室属性管理相关接口,包括获取和修改聊天室公告以及设置、获取、删除、强制设置和强制删改聊天室自定义属性。

前提条件

要调用环信即时通讯 RESTful API,请确保满足以下要求:

公共参数

请求参数

参数类型是否必需描述
hostString环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 获取环信即时通讯 IM 的信息
org_nameString环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 获取环信即时通讯 IM 的信息
app_nameString你在环信即时通讯云控制台创建应用时填入的应用名称。详见 获取环信即时通讯 IM 的信息
chatroom_idString聊天室 ID。
usernameString用户 ID。
nameString聊天室名称,最大长度为 128 个字符。
descriptionString聊天室描述,最大长度为 512 个字符。
maxusersInt聊天室成员数上限,创建聊天室时设置。该参数的默认最大值为 10,000,如需调整请联系商务。

响应参数

参数类型描述
actionString请求方法。
hostString环信即时通讯 IM 分配的用于访问 RESTful API 的域名,与请求参数 host 相同。
organizationString环信即时通讯 IM 为每个公司(组织)分配的唯一标识,与请求参数 org_name 相同。
applicationString系统内为应用生成的唯一标识,开发者无需关心。
applicationNameString你在环信即时通讯云控制台创建应用时填入的应用名称,与请求参数 app_name 相同。
uriString请求 URL。
pathString请求路径,属于请求 URL 的一部分,开发者无需关注。
idString聊天室 ID,聊天室唯一标识,由环信即时通讯 IM 服务器生成。
entitiesJSON响应实体。
dataJSON数据详情。
uuidString系统内为用户或者应用生成的系统内唯一标识,开发者无需关心。
createdString用户、群组或聊天室的创建时间,Unix 时间戳,单位为毫秒。
usernameString用户 ID。
affiliations_countInt聊天室现有成员总数。
affiliationsArray聊天室现有成员列表,数组类型,包含 ownermember 元素,即聊天室所有者和聊天室成员(包括聊天室管理员)。例如: “affiliations”:[{“owner”: “13800138001”},{“member”:”v3y0kf9arx”},{“member”:”xc6xrnbzci”}]。
ownerString聊天室所有者的用户 ID。例如:{“owner”: “13800138001”}。
memberString聊天室成员的用户 ID,包括聊天室管理员和普通成员的用户 ID。例如:{“member”:”xc6xrnbzci”}。
timestampLongHTTP 响应的 Unix 时间戳,单位为毫秒。
durationLong从发送 HTTP 请求到响应的时长,单位为毫秒。

认证方式

环信即时通讯 REST API 要求 Bearer HTTP 认证。每次发送 HTTP 请求时,都必须在请求头部填入如下 Authorization 字段:

Authorization: Bearer YourAppToken

为提高项目的安全性,环信使用 token(动态密钥)对即将登录即时通讯系统的用户进行鉴权。即时通讯 REST API 推荐使用 app token 的鉴权方式,详见 使用 App Token 鉴权

获取聊天室公告

获取指定聊天室 ID 的聊天室公告。

HTTP 请求

GET https://{host}/{org_name}/{app_name}/chatrooms/{chatroom_id}/announcement
路径参数

参数及描述详见 公共参数

请求 header
参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。

HTTP 响应

响应 body

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

在返回值中查看 data 字段包含的信息,获取到的聊天室公告信息。

参数类型描述
data.announcementString聊天室公告内容。

其他字段及描述详见 公共参数

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

示例

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

curl -X GET -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/XXXX/XXXX/chatrooms/12XXXX11/announcement'
响应示例
{
  "action": "get",
  "application": "52XXXXf0",
  "uri": "https://XXXX/XXXX/XXXX/chatrooms/12XXXX11/announcement",
  "entities": [],
  "data": {
    "announcement": "XXXX."
  },
  "timestamp": 1542363546590,
  "duration": 0,
  "organization": "XXXX",
  "applicationName": "testapp"
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
404resource_not_foundgrpID XX does not exist!聊天室 ID 不存在。传入存在的合法的聊天室 ID。

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

修改聊天室公告

修改指定聊天室 ID 的聊天室公告。聊天室公告内容不能超过 512 个字符。

HTTP 请求

POST https://{host}/{org_name}/{app_name}/chatrooms/{chatroom_id}/announcement
路径参数

参数及描述详见 公共参数

请求 header

参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
字段类型是否必需描述
announcementString修改后的聊天室公告。

HTTP 响应

响应 body

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

字段类型描述
data.idString聊天室 ID。
data.resultBool是否成功修改聊天室公告:
- true:是;
- false:否。

其他字段及描述详见 公共参数

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

示例

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

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/XXXX/XXXX/chatrooms/12XXXX11/announcement' -d '{"announcement" : "聊天室公告…"}'
响应示例
{
  "action": "post",
  "application": "52XXXXf0",
  "uri": "https://XXXX/XXXX/XXXX/chatrooms/12XXXX11/announcement",
  "entities": [],
  "data": {
    "id": "12XXXX11",
    "result": true
  },
  "timestamp": 1594808604236,
  "duration": 0,
  "organization": "XXXX",
  "applicationName": "testapp"
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403forbidden_opannounce info length exceeds limit!聊天室公告长度超过上限(不能超过 512 字符)。修改公告长度在限制( 最大 512 字符)以下。
404resource_not_foundgrpID XX does not exist!聊天室 ID 不存在。传入存在的合法的聊天室 ID。

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

设置聊天室自定义属性

指定用户设置特定聊天室的自定义属性。

HTTP 请求

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

其它参数及描述详见 公共参数

请求 header
参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 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':否。

HTTP 响应

响应 body

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

字段类型描述
data.successKeysArray设置成功的聊天室属性名称列表。
data.errorKeysObject设置失败的聊天室属性,返回键值对格式,key 为属性名称,value 为失败原因。

其他字段及描述详见 公共参数

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

示例

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

curl -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' -d '{
    "metaData": {
  			"key1": "value1",
				"key2": "value2"
    },
    "autoDelete": "DELETE"
 }' 'https://XXXX/XXXX/XXXX/metadata/chatroom/662XXXX13/user/user1'
响应示例
{
  "uri":"https://XXXX/XXXX/XXXX/metadata/chatroom",  
  "timestamp":1716887320215,
  "action":"put",
  "data": {
    "successKeys": ["key1"],
    "errorKeys": { "key2": "errorDesc" }
  }
}

错误码

如果返回的 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不允许更新他人的聊天室属性。无权更新其他人的聊天室属性。

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

由于该 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"
        }
    }
}

获取聊天室自定义属性

获取指定聊天室的自定义属性信息。

HTTP 请求

POST https://{host}/{org_name}/{app_name}/metadata/chatroom/{chatroom_id}
路径参数

参数及描述详见 公共参数

请求 header
参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需描述
keysArray聊天室自定义属性名称列表。

HTTP 响应

响应 body

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

字段类型描述
dataObject聊天室自定义属性,为键值对格式,key 为属性名称,value 为属性值。

其他字段及描述详见 公共参数

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

示例

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

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' -d '{
    "keys": ["key1","key2"]
 }' 'https://XXXX/XXXX/XXXX/metadata/chatroom/662XXXX13'
响应示例
{
  "uri": "https://XXXX/XXXX/XXXX/metadata/chatroom", 
  "timestamp": 1716891388636, 
  "action": "post", 
  "data": {
    "key1": "value1", 
    "key2": "value2"
  }
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
404resource_not_foundgrpID XX does not exist!聊天室 ID 不存在。传入存在的合法的聊天室 ID。

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

删除聊天室自定义属性

用户删除其设置的聊天室自定义属性。该方法只能删除当前用户设置的聊天室自定义属性,不能删除其他成员设置的自定义属性。

该方法每次最多可删除 10 个自定义属性。

HTTP 请求

DELETE https://{host}/{org_name}/{app_name}/metadata/chatroom/{chatroom_id}/user/{username}
路径参数
参数类型是否必需描述
usernameString要删除的聊天室自定义属性的所属用户 ID。

其它参数及描述详见 公共参数

请求 header
参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需描述
keysArray聊天室自定义属性名称列表。每次最多可传 10 个自定义属性名称。

HTTP 响应

响应 body

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

字段类型描述
data.successKeysArray成功删除的聊天室属性名称列表。
data.errorKeysObject删除失败的聊天室属性。这里返回键值对,key 为属性名称,value 为失败原因。

其他字段及描述详见 公共参数

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

示例

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

curl -X DELETE POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' -d '{
    "keys": ["key1","key2"]
 }' 'https://XXXX/XXXX/XXXX/metadata/chatroom/662XXXX13/user/user1'
响应示例
{
  "uri":"https://XXXX/XXXX/XXXX/metadata/chatroom",
  "status":"ok",
  "timestamp":1716887320215,
  "action":"delete",
  "data": {
    "successKeys": ["key1"],
    "errorKeys": { "key2": "errorDesc" }
  }
}

错误码

如果返回的 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。

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

强制设置聊天室自定义属性

用户强制设置指定聊天室的自定义属性信息,即该方法可覆盖其他用户设置的聊天室自定义属性。

HTTP 请求

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

其它参数及描述详见 公共参数

请求 header
参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。

请求 body

参数类型是否必需描述
metaDataJSON聊天室的自定义属性,存储为键值对(key-value pair)集合,即 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':否。

HTTP 响应

响应 body

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

字段类型描述
data.successKeysArray设置成功的聊天室属性名称列表。
data.errorKeysObject设置失败的聊天室属性。这里返回键值对,key 为属性名称,value 为失败原因。

其他字段及描述详见 公共参数

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

示例

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

curl -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' -d '{
    "metaData": {
        "key1": "value1",
		    "key2": "value2"
    },
    "autoDelete": "DELETE"
 }' 'https://XXXX/XXXX/XXXX/metadata/chatroom/662XXXX13/user/user1/forced'
响应示例
{
  "data": {
    "successKeys": ["key1"],
    "errorKeys": { "key2": "errorDesc" }
  }
}

错误码

如果返回的 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。

由于该 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"
        }
    }
}

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

强制删除聊天室自定义属性

用户强制删除聊天室的自定义属性信息,即该方法除了会删除当前用户设置的聊天室自定义属性,还可以删除其他用户设置的自定义属性。

该方法每次最多可删除 10 个自定义属性。

HTTP 请求

DELETE https://{host}/{org_name}/{app_name}/metadata/chatroom/{chatroom_id}/user/{username}/forced
路径参数
参数类型是否必需描述
usernameString强制删除的聊天室自定义属性的所属用户 ID。

其它参数及描述详见 公共参数

请求 header
参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需描述
keysArray聊天室自定义属性的名称列表。每次最多可传 10 个自定义属性名称。

HTTP 响应

响应 body

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

字段类型描述
data.successKeysArray成功删除的聊天室属性名称列表。
data.errorKeysObject删除失败的聊天室属性。这里返回键值对,key 为属性名称,value 为失败原因。

其他字段及描述详见 公共参数

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

示例

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

curl  -X DELETE -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' -d '{
    "keys": ["key1","key2"]
 }' 'https://XXXX/XXXX/XXXX/metadata/chatroom/662XXXX13/user/user1/forced'
响应示例
{
  "data": {
    "successKeys": ["key1"],
    "errorKeys": { "key2": "errorDesc" }
  }
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
400exceed allowed batch size 10要删除的 key 属性数量超过 10 个。要删除的 key 的数量不要超过 10 个。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。

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