ChatManager 负责消息域动作、查询与事件订阅

Constructors

Properties

key: "chatManager" = ...

Methods

  • 发送一条已创建的消息。文本、图片、文件、语音、视频、位置、命令、自定义和合并消息均通过该入口发送。

    事件触发:接收方(含发送方的其他设备)会收到 onMessage 事件。 附件类消息(图片/文件/语音/视频)会先自动上传到服务器,上传成功后再发送。

    Parameters

    Returns Promise<Message>

    发送成功后的消息对象。

    Code 含义 HTTP 处理建议 可重试
    1 消息发送已取消 - 确认 SDK 实例仍有效;如为用户主动取消,无需重试 否
    100 App Key 不合法 - 检查 SDK 初始化使用的 appKey 否
    110 参数无效 - 通过 ChatManager 的 create*Message 方法创建消息,确保发送者与当前用户一致,并检查附件数据和上传配置 否
    300 服务器不可达 - 等待连接成功后重试 是
    301 消息发送超时 - 检查网络连接后重试;重试前可根据 msgLocalId 查询业务侧发送状态 是
    303 消息发送失败 - 检查 details.serverCode 和 details.reason;若持续出现,请联系技术支持 否
    402 附件上传失败 - 检查文件、网络和上传权限后重试 是
    405 附件文件过大 - 压缩文件或更换更小的文件后重试 否
    406 附件内容不合规 - 更换合规文件后重试 否
    500 消息异常:编码失败 - 检查消息体、扩展字段和附件信息是否合法 否
    4 消息发送超过服务限制 - 降低发送频率、减少定向用户数量,或联系服务端提升配额 否
    108 Token 已过期 - 刷新 Token 并重新登录后发送 否
    202 消息发送鉴权失败 - 重新获取有效 Token 并登录 否
    210 无权限执行消息操作 - 检查账号权限、会话关系和服务开通状态 否
    213 当前登录态绑定到其他设备 - 检查多设备登录策略和设备绑定关系后重新登录 否
    214 登录设备数超过限制 - 退出其他设备或联系服务端提升设备数限制 否
    215 用户在群组或聊天室中被禁言 - 等待禁言解除或联系群组/聊天室管理员 否
    219 用户被全局禁言 - 联系管理员解除全局禁言 否
    220 当前登录设备发生变化 - 检查设备标识并重新登录 否
    221 非好友禁止发送消息 - 先添加对方为联系人,或调整应用的陌生人消息策略 否
    222 消息发送失败:被接收方拉黑 - 停止重试,并提示用户检查与接收方的关系状态 否
    305 消息服务不可用 - 检查控制台服务开通状态或联系技术支持 否
    501 消息包含违规内容 - 修改消息内容后重试 否
    505 相关消息服务未开通 - 在控制台开通对应服务后重试 否
    506 消息已过期 - 重新创建消息后发送 否
    507 当前用户不在消息白名单中 - 联系管理员将当前用户加入白名单 否
    508 消息被外部逻辑拦截 - 根据业务审核规则调整消息,或联系服务端排查 否
    509 消息发送过于频繁 - 降低发送频率后重试 是
    510 消息体超过大小限制 - 缩短消息内容、减少扩展字段或拆分消息后重试 否
    602 当前用户不在群组或聊天室中 - 加入目标群组或聊天室后重试 否
    603 无群组消息操作权限 - 检查群组角色和消息权限配置 否
    606 群组不存在 - 确认 groupId 正确且群组仍存在 否
    607 群组已禁用 - 恢复群组可用状态后重试 否
    1200 第三方内容审核拒绝 - 修改消息内容后重试 否
    1299 第三方服务拒绝消息 - 检查 details.reason,并联系对应第三方服务排查 否
  • 创建文本消息对象。创建后需调用 ChatManager.sendMessage 发送。

    Parameters

    Returns Message

    文本消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法的 conversationId、conversationType 和非空 content;receiverList 仅用于群聊或聊天室,needReadReceipt 不支持 chatRoom 否
  • 创建图片消息对象。支持传入本地文件或远程图片地址。

    Parameters

    Returns Message

    图片消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 至少传入 data 或 originalUrl,并确保图片元数据为合法类型和值 否
  • 创建文件消息对象。支持传入本地文件或远程文件地址。

    Parameters

    Returns Message

    文件消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 至少传入 data 或 originalUrl,并确保文件元数据合法 否
  • 创建语音消息对象。支持传入本地语音文件或远程语音地址。

    Parameters

    Returns Message

    语音消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 至少传入 data 或 originalUrl,并传入大于 0 的 duration 否
  • 创建视频消息对象。支持传入本地视频文件或远程视频地址。

    Parameters

    Returns Message

    视频消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 至少传入 data 或 originalUrl,并传入大于 0 的 duration 否
  • 创建位置消息对象。

    Parameters

    Returns Message

    位置消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法的 conversationId、conversationType、latitude 和 longitude 否
  • 创建命令消息对象。命令消息通常用于业务自定义控制信令。

    Parameters

    Returns Message

    命令消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法的 conversationId、conversationType 和非空 action 否
  • 创建自定义消息对象。可通过 event 与 params 承载业务自定义内容。

    Parameters

    Returns Message

    自定义消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法的 conversationId、conversationType 和非空 event;params 使用字符串键值 否
  • 创建合并消息对象,用于发送聊天记录合集。

    Parameters

    Returns Message

    合并消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法的标题、摘要和 1 到 300 条可合并消息 否
    4 超过服务限制 - 减少合并消息嵌套层级后重试 否
    500 消息异常:编码失败 - 检查被合并消息的消息体和扩展字段是否合法 否
  • 从本地会话列表缓存中获取会话,支持通过 filter 过滤。

    Parameters

    Returns readonly ConversationItem[]

    匹配条件的会话数组。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 使用 SDK 上一次返回的 cursor,并确保 pageSize 为正整数、includeEmptyConversations 为布尔值 否
  • 设置当前正在浏览的会话。设置后,该会话收到在线消息时 SDK 仍会更新最后消息和列表排序,但不会累加本地未读数。该状态只保存在当前 SDK 会话内存中,切换页面或关闭会话时应调用 resetCurrentConversation()。

    Parameters

    Returns void

    无返回值。

  • 重置当前正在浏览的会话。重置后,收到在线消息会按默认规则累加对应会话的本地未读数。

    Returns void

    无返回值。

  • 删除指定会话,可选择同时删除服务端漫游消息。 删除成功后,SDK 会同步删除本地会话列表缓存;如果本地会话列表发生变化,会触发 onConversationListUpdate,reason 为 local。

    Parameters

    Returns Promise<ConversationMutationResult>

    会话删除结果。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法会话 ID、会话类型,并确保 deleteRoamingMessages 为布尔值 否
  • 清空当前用户的所有会话和服务端漫游消息。 清空成功后,SDK 会同步清空本地 conversation/session-list 缓存;如果本地会话列表发生变化,会触发 onConversationListUpdate,reason 为 local。

    Returns Promise<void>

    清空完成后 resolve。

  • 在指定会话中置顶一条消息。

    事件触发:除当前操作设备外,会话成员及当前用户的其他设备会收到 onPinnedMessageChanged 事件(operation='pin');当前操作设备通过 Promise 处理成功结果。

    Parameters

    Returns Promise<void>

    置顶消息结果。

    Code 含义 HTTP 处理建议 可重试
    110 消息 ID 非法 - 修正请求参数或操作类型后重试 否
    4 置顶消息数量达到上限 - 降低用量或调整服务配额后重试 否
    110 待置顶消息不存在 - 确认目标资源存在后重试 否
  • 取消置顶指定会话中的一条消息。

    事件触发:除当前操作设备外,会话成员及当前用户的其他设备会收到 onPinnedMessageChanged 事件(operation='unpin');当前操作设备通过 Promise 处理成功结果。

    Parameters

    Returns Promise<void>

    取消置顶消息结果。

    Code 含义 HTTP 处理建议 可重试
    110 消息 ID 非法 - 修正请求参数或操作类型后重试 否
    110 待取消置顶消息不存在 - 确认目标资源存在后重试 否
  • 获取指定会话内的置顶消息列表。该接口不分页,不接收 messageId,最多返回 20 条。

    Parameters

    Returns Promise<PinnedMessageListResult>

    置顶消息列表。

    Code 含义 HTTP 处理建议 可重试
    111 当前服务端不支持获取置顶消息列表 - 修正请求参数或操作类型后重试 否
    110 置顶消息不存在 - 确认目标资源存在后重试 否
  • 注册消息域事件处理器。

    Parameters

    • id: string

      事件处理器唯一标识。

    • handlers: ChatEventHandlerMap

      消息事件处理器集合。

    可监听事件

    onMessage, onStreamMessage, onConversationListUpdate, onMessageReadReceipts, onMessageDelivered, onMessageRecalled, onMessageUpdated, onReactionChanged, onPinnedMessageChanged, onMultiDeviceContact, onMultiDeviceGroup, onMultiDeviceThread, onMultiDeviceConversation, onMultiDeviceMessageRemoved, onSyncDataStart, onSyncDataFinished

    ChatEventName

    Returns void

    无返回值。

  • 移除已注册的消息域事件处理器。

    Parameters

    • id: string

      事件处理器唯一标识。

    Returns void

    无返回值。

  • 清空指定会话的未读消息数。

    SDK 会优先更新本地会话 unreadCount 与 readAt,并在本地快照变化时派发 onConversationListUpdate,随后尽力同步服务端。 本地存在目标会话时,即使当前未连接或服务端同步失败,该方法也会按本地清理成功处理;本地不存在目标会话且远端同步失败时才会抛出错误。 该动作不会发送给会话对端;只有当前用户的其他设备会收到 operation 为 CONVERSATION_UNREAD_MESSAGE_COUNT_CLEARED 的 onMultiDeviceConversation。

    Parameters

    Returns Promise<void>

    标记完成后 resolve。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法会话 ID,并使用 singleChat 或 groupChat 否
    201 未登录 - 登录或刷新 token 后重试 是
    300 未连接服务器 - 恢复连接后重试 是
    500 会话中无消息 - 修正请求参数或操作类型后重试 否
  • 批量发送消息已读回执。仅支持同一个会话内的 1 至 50 条单聊或群聊消息。

    该接口不会推进会话 readAt,也不会直接修改本地 unreadCount。 事件触发:消息原始发送方会收到 onMessageReadReceipts;本地调用方不会收到该事件。

    Parameters

    • params: SendMessageReadReceiptsParams

      批量消息已读参数:conversationId 为目标会话 ID,conversationType 仅支持 singleChat 或 groupChat,messageIds 为同一会话内 1 至 50 条非空消息 ID。

    Returns Promise<void>

    全部已读回执发送完成后 resolve。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法 conversationId、singleChat/groupChat 会话类型和同一会话内 1 至 50 条非空 messageIds 否
    110 只能对接收的消息发送已读回执 - 修正请求参数或操作类型后重试 否
    300 未连接服务器 - 恢复连接后重试 是
  • 清空所有会话的未读消息数。

    本机调用成功后仅更新本地 unread 快照并派发 onConversationListUpdate; 其他设备收到 operation 为 ALL_CONVERSATIONS_UNREAD_MESSAGE_COUNT_CLEARED 的 onMultiDeviceConversation。

    Returns Promise<void>

    清空成功后无返回值。

    Code 含义 HTTP 处理建议 可重试
    201 未登录 - 登录或刷新 token 后重试 是
    300 未连接服务器 - 恢复连接后重试 是
    500 会话中无消息 - 修正请求参数或操作类型后重试 否
  • 撤回一条已发送消息。

    事件触发:除当前操作设备外,会话成员及撤回者的其他设备会收到 onMessageRecalled;当前操作设备通过 Promise 处理成功结果。 注意:默认 2 分钟内可撤回(可在控制台配置最长 7 天);群主/管理员可撤回他人消息;除 CMD 外所有类型均支持。

    Parameters

    Returns Promise<ChatActionResult>

    撤回动作结果。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法会话定位参数和待撤回消息 ID 否
    110 消息无效或未发送成功 - 修正请求参数或操作类型后重试 否
    201 未登录 - 登录或刷新 token 后重试 是
    300 未连接服务器 - 恢复连接后重试 是
    504 超过撤回时间限制 - 降低用量或调整服务配额后重试 否
    505 撤回功能未开通 - 确认已开通对应服务后重试 否
  • 编辑一条消息内容。当前仅支持文本消息和自定义消息。

    事件触发:除当前操作设备外,会话成员及编辑者的其他设备会收到 onMessageUpdated;当前操作设备通过 Promise 处理成功结果。 注意:最多编辑 10 次;编辑后消息漫游有效期重新计算。

    Parameters

    Returns Promise<Message>

    编辑后的消息对象。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法会话定位参数和待编辑消息 ID 否
    111 操作不支持 - 仅传入 type 为 text 或 custom 的消息内容 否
    110 消息无效 - 修正请求参数或操作类型后重试 否
    111 操作不支持 - 仅传入 type 为 text 或 custom 的消息内容 否
    201 未登录 - 登录或刷新 token 后重试 是
    210 无权编辑该消息 - 确认关系与操作权限后重试 否
    300 未连接服务器 - 恢复连接后重试 是
    511 消息编辑失败 - 稍后重试;持续失败时联系服务端排查 是
  • 从服务端获取历史消息。

    Parameters

    Returns Promise<MessageHistoryPage>

    历史消息分页结果。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法会话定位参数,并确保 pageSize 为正整数 否
    505 消息漫游服务未开通 - 确认已开通对应服务后重试 否
    110 分页参数超限 - 降低用量或调整服务配额后重试 否
  • 服务端消息搜索,根据关键词和过滤条件搜索历史消息。

    Parameters

    Returns Promise<SearchMessagesResult>

    搜索结果。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 检查关键词列表(非空、最多5个、每个≤150字符)、conversationId/conversationType 须配对使用、startTime/endTime 须同时提供 否
    110 搜索参数错误 400 检查请求参数是否符合搜索接口要求 否
    202 token 无效或过期 401 重新登录获取有效 token 否
    505 消息搜索服务未开通 403 在环信 Console 开通 Message Search 服务 否
    110 appKey 对应应用不存在 404 确认 appKey 配置正确 否
    303 服务端内部错误或索引服务不可用 500 稍后重试,若持续失败请联系技术支持 是
  • 下载消息附件,适用于图片、语音、视频和文件等附件消息。

    Parameters

    Returns Promise<MessageAttachmentDownloadResult>

    附件下载结果。

    Code 含义 HTTP 处理建议 可重试
    401 附件无效或消息类型不支持下载 - 仅对包含远程附件地址的图片、语音、视频或文件消息调用 否
    400 附件不存在 404 确认目标资源存在后重试 否
    401 附件无效或消息类型不支持下载 - 修正请求参数或操作类型后重试 否
    403 附件下载失败 - 稍后重试;持续失败时联系服务端排查 是
    407 附件已过期 404 根据错误原因修正后重试 否
  • 下载并解析合并消息内容,返回合并消息中的子消息列表。

    Parameters

    • params: DownloadCombineMessageInput

      合并消息解析参数;可传完整合并消息,也可传合并消息体中的最小下载参数。

    Returns Promise<readonly Message[]>

    合并消息中的原始消息列表。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入 type 为 combine 且包含有效 url 的消息,或直接传入合并消息体中的有效 url/secret 否
    110 消息为空 - 修正请求参数或操作类型后重试 否
    500 消息不是合并消息类型 - 修正请求参数或操作类型后重试 否
    401 合并消息解析失败 - 稍后重试;持续失败时联系服务端排查 是
    403 合并消息下载失败 - 稍后重试;持续失败时联系服务端排查 是
  • 删除服务端历史消息,可按消息 ID 列表或时间戳删除。

    Parameters

    Returns Promise<void>

    删除完成后 resolve。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入非空 messageIds,或传入大于 0 的 beforeTimestamp 否
    505 消息漫游服务未开通 - 确认已开通对应服务后重试 否
    112 删除消息数量超限 - 降低用量或调整服务配额后重试 否
  • 获取指定群消息的已读成员列表。

    启用 enableUserInfoSync 后,SDK 优先读取本地用户资料缓存。仅当用户资料缓存未命中时,SDK 才会同时补拉用户资料和群名片,并通过 onUserInfoUpdated(当前用户为 onOwnInfoUpdated)派发补拉到的资料。未启用时,user 仅保证包含 userId。

    Parameters

    Returns Promise<GroupMessageReadUsersResult>

    群消息已读成员分页结果。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法 groupId、messageId,并确保 pageSize 为正整数 否
    500 消息不存在 - 确认目标资源存在后重试 否
  • 批量获取群消息已读回执详情。

    messageIds 必须为非空数组;SDK 使用单次批量 REST 请求查询,不会拆分为多次请求。 服务端当前最多接受 20 条,超限时该 Promise 会以服务端 illegal_argument 错误 reject。

    Parameters

    Returns Promise<readonly MessageReadReceiptDetail[]>

    按消息返回的已读人数详情。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法 groupId 和非空 messageIds 列表 否
    110 参数无效 400 检查请求体与消息 ID;若超过 20 条,请由调用方拆分后重试 否
    202 用户鉴权失败 401 更新为有效 token 后重试 否
    210 用户无权限 403 确认用户已加入目标群并具备查询权限 否
    303 服务内部异常 500 稍后重试;若持续失败,请联系服务端排查 是
  • 为消息添加 Reaction。

    事件触发:会话中的所有成员会收到 onReactionChanged 事件。 注意:仅支持单聊和群聊,不支持聊天室;每个用户对同一消息的同一 Reaction 只能添加一次。

    Parameters

    Returns Promise<void>

    添加完成后 resolve。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法 messageId 和非空 reaction 否
    1301 当前用户已经操作过该 Reaction - 根据错误原因修正后重试 否
    1300 Reaction 数量达到上限 - 降低用量或调整服务配额后重试 否
    602 当前用户不在该群组中 - 确认关系与操作权限后重试 否
    1302 Reaction 操作非法 - 修正请求参数或操作类型后重试 否
    505 Reaction 服务未开通 - 确认已开通对应服务后重试 否
    302 Reaction 服务繁忙 - 稍后重试;持续失败时联系服务端排查 是
  • 删除当前用户在消息上添加的 Reaction。

    事件触发:会话中的所有成员会收到 onReactionChanged 事件。

    Parameters

    Returns Promise<void>

    删除完成后 resolve。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法 messageId 和非空 reaction 否
    505 Reaction 服务未开通 - 确认已开通对应服务后重试 否
    1302 Reaction 操作非法 - 修正请求参数或操作类型后重试 否
  • 获取一条或多条消息的 Reaction 汇总列表。

    Parameters

    Returns Promise<readonly MessageReactionListItem[]>

    消息 Reaction 汇总列表。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法 messageId;conversationType 为 groupChat 时同时传入 groupId 否
    505 Reaction 服务未开通 - 确认已开通对应服务后重试 否
    600 groupId 无效 - 修正请求参数或操作类型后重试 否
  • 获取指定消息 Reaction 的用户详情。

    Parameters

    Returns Promise<MessageReactionDetailPage>

    Reaction 用户详情分页结果。

    Code 含义 HTTP 处理建议 可重试
    110 参数无效 - 传入合法 messageId、非空 reaction,并确保 pageSize 为正整数 否
    505 Reaction 服务未开通 - 确认已开通对应服务后重试 否
    1302 Reaction 操作非法 - 修正请求参数或操作类型后重试 否
  • 获取翻译服务支持的语言列表。

    Returns Promise<readonly TranslationLanguage[]>

    翻译支持语言列表。

    Code 含义 HTTP 处理建议 可重试
    505 翻译服务未开通 - 确认已开通对应服务后重试 否
  • 翻译文本消息内容到一个或多个目标语言。

    Parameters

    Returns Promise<MessageTranslationResult>

    消息翻译结果。

    Code 含义 HTTP 处理建议 可重试
    1110 目标语言不合法 - 仅传入包含非空文本内容的文本消息,并指定至少一个合法目标语言代码 否
    1110 翻译文本过长 - 根据错误原因修正后重试 否
    1110 目标语言不合法 - 修正请求参数或操作类型后重试 否
    1111 翻译服务未开通 - 确认已开通对应服务后重试 否
    1112 翻译服务配额已达上限 - 降低用量或调整服务配额后重试 否
    1113 翻译服务异常 - 稍后重试;持续失败时联系服务端排查 否
  • 将已发送或已接收的语音消息体转为文字。

    Parameters

    Returns Promise<VoiceToTextResult>

    语音转文字结果。

    Code 含义 HTTP 处理建议 可重试
    407 语音文件无效 - 传入带有效 url 的语音消息体,并确保 format、sampleRate、bitsPerSample、channels 类型合法 否
    410 语音文件不存在 - 确认语音消息已成功上传且 url 有效 否
    202 用户鉴权失败 - 刷新 token 后重试 是
    410 语音文件不存在 - 确认语音消息已成功上传且 url 有效 否
    407 语音文件无效 - 更换合法语音文件后重试 否
    408 语音时长超过限制 - 缩短语音时长后重试 否
    411 语音文件过大 - 压缩或缩短语音文件后重试 否
    505 语音转文字服务未开通 - 开通服务后重试 否
    4 超过服务限制 - 稍后重试或提升服务配额 是
    409 语音转文字失败 - 稍后重试;如果持续失败,联系服务端排查 是
  • 上传本地语音文件并转换为文字。

    Parameters

    Returns Promise<VoiceToTextResult>

    语音转文字结果。

    Code 含义 HTTP 处理建议 可重试
    407 语音文件无效 - 传入浏览器 File 或小程序 MiniAppFile,并确保语音识别参数类型合法 否
    110 参数无效:缺少必需字段 - 在支持上传的环境中调用,或为当前平台配置上传适配器 否
    202 用户鉴权失败 - 刷新 token 后重试 是
    402 上传文件错误 - 检查网络和文件后重试 是
    407 语音文件无效 - 更换合法语音文件后重试 否
    408 语音时长超过限制 - 缩短语音时长后重试 否
    411 语音文件过大 - 压缩或缩短语音文件后重试 否
    505 语音转文字服务未开通 - 开通服务后重试 否
    4 超过服务限制 - 稍后重试或提升服务配额 是
    409 语音转文字失败 - 稍后重试;如果持续失败,联系服务端排查 是