聊天室管理

大约 17 分钟

聊天室管理

本文介绍聊天室管理相关接口,包括添加、获取、修改和解散聊天室等相关操作。

提示

仅聊天室超级管理员具有在客户端创建聊天室的权限。

前提条件

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

公共参数

请求参数

参数类型是否必需描述
hostString即时通讯 IM 分配的用于访问 RESTful API 的域名。
app_idString声网为每个项目自动分配的 App ID,作为项目唯一标识。
chatroom_idString聊天室 ID。
usernameString用户 ID。
nameString聊天室名称,最大长度为 128 个字符。
descriptionString聊天室描述,最大长度为 512 个字符。
maxusersInt聊天室成员数上限,创建聊天室时设置。该参数的默认最大值为 10,000,如需调整请联系商务。

响应参数

参数类型描述
actionString请求方法。
hostString即时通讯 IM 分配的用于访问 RESTful API 的域名,与请求参数 host 相同。
uriString请求 URL。
pathString请求路径,属于请求 URL 的一部分,开发者无需关注。
idString聊天室 ID,聊天室唯一标识,由即时通讯 IM 服务器生成。
entitiesJSON响应实体。
dataJSON数据详情。
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 请求到响应的时长,单位为毫秒。

认证方式

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

Authorization: Bearer YourAppToken

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

获取 app 中的聊天室

分页获取应用下的聊天室列表和信息。

HTTP 请求

GET https://{host}/app-id/{app_id}/chatrooms?limit={N}&cursor={cursor}
路径参数

参数及描述详见 公共参数

查询参数
参数类型是否必需描述
limitInt每次期望返回的聊天室数量。取值范围为 [1,1000],默认值为 10。该参数仅在分页获取时为必需。若传入的值超过了 1000,则返回 1000 个聊天室。
cursorString数据查询的起始位置。该参数仅在分页获取时为必需。

提示

若请求中均未设置 limitcursor,声网服务器返回聊天室列表的第一页中前 10 个聊天室。

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

HTTP 响应

响应 body

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

字段类型描述
data.idString聊天室 ID,聊天室唯一标识,由即时通讯 IM 服务器生成。
data.nameString聊天室名称。
data.ownerString聊天室创建者的用户 ID。例如:{“owner”: “user1”}。
data.affiliations_countInt聊天室现有成员总数(包含聊天室创建者)。

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

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

示例

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

curl -L -X GET 'https://XXXX/app-id/XXXX/chatrooms?limit=10' \
--header 'Authorization: Bearer <YourAppToken>'
响应示例
{
  "data": {
    "id": "662XXXX13",
    "name": "testchatroom1",
    "owner": "user1",
    "affiliations_count": 2
  }
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。

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

获取用户加入的聊天室

根据用户 ID 分页获取该用户加入的聊天室。

HTTP 请求

GET https://{host}/app-id/{app_id}/users/{username}/joined_chatrooms?pagenum={N}&pagesize={N}
路径参数

参数及描述详见 公共参数

查询参数
参数类型是否必需描述
pagenumInt当前页码,默认值为 1。
pagesizeInt每页返回的聊天室数量,取值范围为 [1,1000],默认值为 1000。该参数仅在分页获取时为必需。若传入的值超过了 1000,则返回 1000 个聊天室。

提示

若查询参数 pagenumpagesize 均不传,服务器返回用户最新加入的 500 个聊天室。

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

HTTP 响应

响应 body

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

字段类型描述
dataJSON Array聊天室详情。
- idString聊天室 ID,聊天室唯一标识,由即时通讯 IM 服务器生成。
- nameString聊天室名称,最大长度为 128 字符。

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

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

示例

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

curl -X GET -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/app-id/XXXX/users/user1/joined_chatrooms?pagenum=1&pagesize=10'
响应示例
{
    "action": "get",
    "count": 2,
    "data": [
        {
            "id": "216295074234369",
            "name": "fd",
            "disabled": "false"
        },
        {
            "id": "216294461865985",
            "name": "testChatRoom",
            "disabled": "false"
        }
    ],
    "duration": 0,
    "entities": [],
    "params": {
        "pagesize": [
            "10"
        ],
        "pagenum": [
            "1"
        ]
    },
    "properties": {},
    "timestamp": 1685673568976,
    "uri": "http://XXXX/XXXX/XXXX/users/user2/joined_chatrooms"
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。

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

查询聊天室详情

查询一个或多个聊天室的详情。

HTTP 请求

GET https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}
路径参数
参数类型是否必需描述
chatroom_idString聊天室 ID,即时通讯服务分配给每个聊天室的唯一标识符,从获取 app 中的聊天室 的响应 body 中获取。
每次最多可查询 100 个聊天室,聊天室 ID 之间用英文逗号(",")分隔,逗号在 URL 中转义为 "%2C"。

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

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

HTTP 响应

响应 body

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

字段类型描述
data.idString聊天室 ID,聊天室唯一标识符,由即时通讯 IM 服务器生成。
data.nameString聊天室名称。
data.descriptionString聊天室描述。
data.membersonlyBool加入聊天室是否需要聊天室所有者或者聊天室管理员审批:
- true:是。
- false:否。
data.allowinvitesBool是否允许聊天室成员邀请其他用户加入该聊天室:
- true:允许聊天室成员邀请他人加入该聊天室。
- false:仅聊天室所有者和管理员可邀请他人加入该聊天室。
data.maxusersInt聊天室成员数上限,创建聊天室时设置。
data.ownerString聊天室所有者的用户 ID。例如:{“owner”: “user1”}。
data.createdLong创建聊天室时间,Unix 时间戳,单位为毫秒。
data.customString聊天室扩展信息。
data.affiliations_countInt现有聊天室成员总数。
data.affiliationsArray现有聊天室成员列表,包含聊天室所有者和成员(包括聊天室管理员)。例如:“affiliations”:[{“owner”: “user1”},{“member”:”user2”},{“member”:”user3”}]。
data.publicBool预留字段,无需关注。

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

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

示例

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

curl -X GET -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/app-id/XXXX/chatrooms/662XXXX13'
响应示例
{
  "data": {
    "id": "662XXXX13",
    "name": "testchatroom1",
    "description": "test",
    "membersonly": false,
    "allowinvites": false,
    "maxusers": 200,
    "owner": "user1",
    "created": 1542542951527,
    "custom": "",
    "affiliations_count": 2,
    "affiliations": [
      {
        "member": "user2"
      },
      {
        "owner": "user1"
      }
    ],
    "public": true
  }
}

错误码

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

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

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

创建聊天室

创建一个聊天室,需设置聊天室名称、聊天室描述、聊天室成员最大人数(包括管理员)、聊天室管理员和普通成员以及聊天室扩展信息。

HTTP 请求

POST https://{host}/app-id/{app_id}/chatrooms
路径参数

参数及描述详见 公共参数

请求 header
参数类型是否必需描述
Content-TypeString内容类型。请填 application/json
AcceptString内容类型。请填 application/json
AuthorizationStringApp 管理员的鉴权 token,格式为 Bearer YourAppToken,其中 Bearer 为固定字符,后面为英文空格和获取到的 app token。
请求 body
参数类型是否必需描述
nameString聊天室名称,最大长度为 128 个字符。
descriptionString聊天室描述,最大长度为 512 个字符。
maxusersInt聊天室最大成员数(包括聊天室所有者)。取值范围为 [1, 10,000],默认值为 1000。如需调整请联系商务。
ownerString聊天室所有者。
membersArray聊天室普通成员和管理员的用户 ID 数组,不包含聊天室所有者的用户 ID。该数组可包含的元素数量不超过 maxusers 的值。若传该参数,确保至少设置一个数组元素。

提示

创建聊天室时拉入的这些用户若从未登录过,会一直存在于聊天室中。

customString聊天室扩展信息,例如,可以给聊天室添加业务相关的标记,不能超过 8 KB。

HTTP 响应

响应 body

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

字段类型描述
data.idString创建的聊天室的 ID。

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

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

示例

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

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' -d '{
   "name": "testchatroom1",
   "description": "test",
   "maxusers": 300,
   "owner": "user1",
   "members": [
     "user2"
   ]
 }' 'https://XXXX/app-id/XXXX/chatrooms'
响应示例
{
  "data": {
    "id": "66XXXX33"
  }
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
400invalid_parameterXX must be providedXX 字段没有设置。请传入必传字段。
400illegal_argumentgroup ID XX already exists!groupId 重复。使用新的聊天室 ID。
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
403exceed_limitappKey:XX#XX has create too many chatrooms!appKey 创建聊天室达到上限。删除不用的聊天室或联系商务调整上限。
403exceed_limituser XX has joined too many chatrooms!用户加入的聊天室达到上限。退出不用的聊天室组或联系商务调整上限。
403exceed_limitmembers size is greater than max user size !创建聊天室加入的人超过最大限制(取值范围为 [1,10,000])。可联系商务提升该限制。
404resource_not_foundusername XXXX doesn't exist!创建聊天室时添加的用户不存在。

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

修改聊天室信息

修改指定聊天室的信息。仅支持修改聊天室名称、聊天室描述和聊天室最大成员数。

HTTP 请求

PUT https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}
路径参数

参数及描述详见 公共参数

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

你只能修改聊天室名称、聊天室描述和聊天室最大成员数。

参数类型是否必需描述
nameString聊天室名称,不能超过 128 个字符。
descriptionString聊天室描述,不能超过 512 个字符。
maxusersInt聊天室最大成员数(包括聊天室所有者),默认可设置的最大人数为 10,000,如需调整请联系商务。

HTTP 响应

响应 body

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

字段类型描述
data.groupnameBool聊天室名称是否修改成功。
- true:是。
false:否。
data.descriptionBool聊天室描述是否修改成功。
- true:是。
false:否。
data.maxusersBool聊天室最大成员数(包括聊天室所有者)是否修改成功。
- true:是。
false:否。

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

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

示例

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

curl -X PUT -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' -d '{
   "name": "testchatroom",
   "description": "test",
   "maxusers": 300
 }' 'https://XXXX/app-id/XXXX/chatrooms/662XXXX13'
响应示例
{
  "data": {
    "description": true,
    "maxusers": true,
    "groupname": true
  }
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
404resource_not_foundgrpID XX does not exist!聊天室 ID 不存在。传入存在的合法的聊天室 ID。
403exceed_limittitle cannot exceed to XXXX聊天室名称超限。传入长度在范围以内的聊天室名称。
403exceed_limitdesc cannot exceed to XXXX聊天室描述超限。传入长度在范围以内的聊天室描述。
403exceed_limitmaxUsers cannot exceed XXXX聊天室最大成员数超限。传入正确的最大成员数。
400invalid_parameter"some of [chatroom_id] are not valid fields"修改的群组信息时,传入的参数不支持,例如修改 chatroom_id。仅支持修改聊天室名称、聊天室描述和聊天室最大成员数。

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

转让聊天室

修改聊天室所有者为同一聊天室中的其他成员。

HTTP 请求

PUT https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}
路径参数
参数类型是否必需描述
chatroom_idString要转让的聊天室 ID。

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

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

HTTP 响应

响应 body

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

参数类型描述
dataJSON数据详情。
data.newownerBoolean操作结果:
- true:转让成功。
- false:转让失败。

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

示例

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

curl -X PUT -H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <YourAppToken>' \
-d '{
    "newowner": "user2"
   }' 'https://XXXX/app-id/XXXX/chatrooms/66XXXX85'
响应示例
{
  "action": "put",
  "uri": "https://XXXX/XXXX/XXXX/chatrooms/66XXXX85",
  "entities": [],
  "data": {
    "newowner": true
  },
  "timestamp": 1542537813420,
  "duration": 0
}

错误码

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

HTTP 状态码错误类型错误提示可能原因处理建议
401unauthorizedUnable to authenticate (OAuth)token 不合法,可能过期或 token 错误。使用新的 token 访问。
404resource_not_foundgrpID XX does not exist!聊天室 ID 不存在。传入存在的合法的聊天室 ID。
404resource_not_foundusername XX doesn't exist!传入的聊天室新所有者的用户 ID 不存在。传入存在的合法的用户 ID。
403forbidden_op"new owner and old owner are the same"新的聊天室所有者和旧的所有者不能是同一聊天室成员。传入的聊天室新所有者的用户 ID 不能与旧的所有者的用户 ID 相同。

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

解散聊天室

解散单个聊天室。如果要解散的聊天室不存在,会返回错误。

HTTP 请求

DELETE https://{host}/app-id/{app_id}/chatrooms/{chatroom_id}
路径参数

参数及描述详见 公共参数

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

参数及描述详见 公共参数

HTTP 响应

响应 body

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

参数类型描述
data.successBool是否成功解散聊天室:
- true:是;
- false:否。
data.idString解散的聊天室的 ID。

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

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

示例

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

curl -X DELETE -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/app-id/XXXX/chatrooms/662XXXX13'
响应示例
{
  "action": "delete",
  "uri": "https://XXXX/XXXX/XXXX/chatrooms/662XXXX13",
  "entities": [],
  "data": {
    "success": true,
    "id": "662XXXX13"
  },
  "timestamp": 1542545100474,
  "duration": 0
}

错误码

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

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

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

上次编辑于: