浏览 SDKs · WASM
平台
SDKsWASM商业版

修改消息

修改已发送消息的内容,并向其他客户端同步修改结果。

复制

调用 modifyMessage() 可修改会话中已发送的一条消息内容。它与批量删除消息和撤回消息具有明确的职责划分:删除仅影响当前账号侧视图,撤回展示撤回占位符,而修改则是直接将消息正文替换为新内容并同步给会话各端。

修改消息内容

modifyMessage() 接收消息所在的 conversationID 和修改后的完整 MessageItem:

参数说明

参数类型是否必填说明
conversationIDstring是消息所属的会话 ID。
messageMessageItem是修改后的完整消息对象;必须保留原 clientMsgID。
const { data: modifiedMessage } = await openimsdk.modifyMessage({
  conversationID,
  message: {
    ...message,
    textElem: {
      ...message.textElem,
      content: editedText,
    },
  },
});

replaceMessage(modifiedMessage);

调用修改接口时,需传入完整的消息对象结构,请从现有消息对象展开并仅修改目标正文字段,务必保留原有的 clientMsgID 等基础标识。消息可修改的时间窗口和权限由服务端规则校验。

返回结果

接口调用成功后,返回的 data 为经服务端确认的最新 MessageItem 对象。当前发送端可据此直接替换本地消息视图。

同时,会话内的其他客户端会收到 SdkEvent.OnMessageModified 事件,各端据此同步刷新消息展示。

监听消息修改

OnMessageModified 的完整监听示例集中在本页。删除相关事件见批量删除消息;撤回相关事件见撤回消息。

import { SdkEvent } from '@openim/wasm-client-sdk';

const handleMessageModified = ({ data }) => {
  replaceMessage(resolveConversationID(data), data.clientMsgID, data);
};

openimsdk.on(SdkEvent.OnMessageModified, handleMessageModified);

function removeMessageModifiedListener() {
  openimsdk.off(SdkEvent.OnMessageModified, handleMessageModified);
}

事件 data 为单条最新的 MessageItem。前端应通过 clientMsgID 找到目标消息并替换其渲染数据。在组件销毁、退出登录或切换账号时,请调用 removeMessageModifiedListener() 解绑监听。

相关页面