开发者社区 问答 正文

钉钉群消息引用回复时,无法通过 openDingTalkId 正常 @ 指定人员

已解决

在钉钉群聊中,通过开放接口以当前用户身份对群消息进行“引用回复”时,指定群成员的 openDingTalkId 进行 @,但实际无法生成有效的人员艾特。

复现步骤:

  1. 获取群内某条消息的 openMessageId 和发送者 openDingTalkId。
  2. 调用群消息引用回复接口。
  3. 回复参数中传入目标群成员的 openDingTalkId。
  4. 回复正文中使用 <@openDingTalkId>,或者不写占位符、仅通过艾特人员参数传入。
  5. 消息可以正常发送,也能正确引用原消息。

实际结果:

  • 引用回复发送成功。
  • 被引用消息展示正常。
  • 目标人员没有被真正艾特,也没有收到 @ 通知。
  • 消息中直接显示 <@DIb7...> 原始占位符,而不是人员姓名。
  • 即使不在正文中手写占位符,由接口自动补充,结果仍然相同。

期望结果:

  • 引用回复中正常显示 @人员姓名。
  • 被艾特人员收到钉钉的 @ 提醒。
  • 不应在客户端直接显示 <@openDingTalkId> 原始文本。

补充验证:

  • 目标人员确实是该群成员。
  • 使用的 openDingTalkId 与群成员接口返回的数据一致。
  • 普通引用回复功能正常,问题仅发生在“引用回复时 @ 指定人员”。
  • 将消息转换为 Thread 后,艾特可以解析为人员姓名,但话题回复对其他成员不可见,被艾特人员也无法看到,因此不能作为替代方案。
  • 问题已在多个测试群中复现。

希望官方确认:

  1. 当前用户身份的群消息引用回复接口是否支持 @ 指定人员。
  2. atOpenDingtalkIds 与正文占位符的正确传参格式。
  3. 该问题是接口限制、客户端兼容问题,还是开放接口缺陷。
  4. 是否有既能引用原消息、又能真实 @ 群成员并触发通知的官方实现方式。

展开
收起
acfan 2026-10-23 18:10:19 60 分享 版权
1 条回答
写回答
取消 提交回答
  • 采纳回答

    这是钉钉API的老毛病了。个人身份发消息,atOpenDingtalkIds 和正文 <@xxx> 必须严格对应且格式正确,否则客户端直接当纯文本显示,不触发通知。

    别在引用回复里死磕 @ 功能了,坑太多。

    建议做法:
    放弃引用+@组合拳:如果必须艾特人并触发通知,直接发普通消息(非引用),带上 atOpenDingtalkIds。
    用卡片替代:调用“发送互动卡片”接口。虽然不能直接关联原消息ID,但可以在卡片标题写“关于[原消息内容]的回复”,并在卡片里通过按钮或文本实现类似效果。卡片支持颜色、布局,体验远好于纯文本。
    手动补链:如果非要引用,就只发引用文本,然后在群里单独再发一条带 @ 的消息提醒相关人员。

    这问题官方短期不会改,只能靠业务逻辑绕过去。

    官方详细解决方案:https://www.aliyun.com/product/lingma

    2026-10-24 09:43:55
    赞同 75 展开评论
关联地址: