浏览 SDKs · HarmonyOS
平台
SDKsHarmonyOS商业版

创建 @ 消息

创建一条用于群聊的 @ 文本消息。

复制

当前 HarmonyOS SDK 的接口要求同时提供正文、最多 10 个被提及成员以及一条引用消息。被提及成员使用稳定用户 ID,展示名使用其群内昵称。

import sdk, { AtInfo, CreateTextAtMessageReq, CreateTextAtMessageResp } from '@openimsdk/imsdk';

const mentionedUser: AtInfo = {
  atUserID: 'user_a',
  groupNickname: 'Alex',
};
const request: CreateTextAtMessageReq = {
  text: '@Alex 请确认',
  usersInfo: [mentionedUser],
  quoteMessage: sourceMessage,
};
const response: CreateTextAtMessageResp = await sdk.createTextAtMessage(request);
const message = response.message;

sourceMessage 应来自同一群聊的查询结果或消息事件。创建操作只在本地构造消息对象,不会改变会话的 @ 提醒状态,也不会触发新消息事件;后续调用 发送消息 时只填写目标 groupID。

提及全体成员

不要在业务代码中写死全体成员标记。先从 SDK 读取当前约定的标记,再用它构建 @ 消息:

import sdk, {
  AtInfo,
  CreateTextAtMessageReq,
  CreateTextAtMessageResp,
  GetAtAllTagResp,
} from '@openimsdk/imsdk';

const atAllResult: GetAtAllTagResp = await sdk.getAtAllTag();
const atAllUser: AtInfo = {
  atUserID: atAllResult.tag,
  groupNickname: '全体成员',
};
const request: CreateTextAtMessageReq = {
  text: `${atAllResult.tag} 请查看群公告`,
  usersInfo: [atAllUser],
  quoteMessage: sourceMessage,
};
const response: CreateTextAtMessageResp = await sdk.createTextAtMessage(request);
const message = response.message;

获取全体成员标记成功后返回 tag 字符串。该调用只读取 SDK 内部约定的特殊标记,不会创建消息,也不会触发事件。