在钉钉群聊中,通过开放接口以当前用户身份对群消息进行“引用回复”时,指定群成员的 openDingTalkId 进行 @,但实际无法生成有效的人员艾特。
复现步骤:
openMessageId 和发送者 openDingTalkId。openDingTalkId。<@openDingTalkId>,或者不写占位符、仅通过艾特人员参数传入。实际结果:
<@DIb7...> 原始占位符,而不是人员姓名。期望结果:
@人员姓名。<@openDingTalkId> 原始文本。补充验证:
openDingTalkId 与群成员接口返回的数据一致。希望官方确认:
atOpenDingtalkIds 与正文占位符的正确传参格式。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这是钉钉API的老毛病了。个人身份发消息,atOpenDingtalkIds 和正文 <@xxx> 必须严格对应且格式正确,否则客户端直接当纯文本显示,不触发通知。
别在引用回复里死磕 @ 功能了,坑太多。
建议做法:
放弃引用+@组合拳:如果必须艾特人并触发通知,直接发普通消息(非引用),带上 atOpenDingtalkIds。
用卡片替代:调用“发送互动卡片”接口。虽然不能直接关联原消息ID,但可以在卡片标题写“关于[原消息内容]的回复”,并在卡片里通过按钮或文本实现类似效果。卡片支持颜色、布局,体验远好于纯文本。
手动补链:如果非要引用,就只发引用文本,然后在群里单独再发一条带 @ 的消息提醒相关人员。
这问题官方短期不会改,只能靠业务逻辑绕过去。