Files
2026-09-02 11:44:52 +08:00

6.1 KiB
Raw Permalink Blame History

message-actions:消息编辑、撤回、回复与对象操作

返回入口:DingTalk Chat Skill

用于对真实消息执行编辑、撤回、引用回复、转发、Pin、Top、Favorite 和表情回应写操作, 并包含必要的紧邻验证。需要跨多个阶段传递真实结果的组合流程由 01-messaging.md 说明;本文件不重复完整工作流。

入口选择

用户终点 推荐入口
撤回当前用户消息 dws chat +messages-recall --msg-id <openMessageId>
引用回复 dws chat +messages-reply
编辑已发送消息 dws chat message edit
单条/合并/话题转发 +messages-forward / +messages-combine-forward / +messages-forward-topic
Pin / Unpin +messages-set-pin / +messages-unset-pin
消息 Top / 取消 Top +messages-set-top / +messages-unset-top
Favorite / 取消 Favorite +flag-create / +flag-cancel
默认 emoji 回应 +messages-add-emoji / +messages-remove-emoji

所有写操作以最终 Runtime gate 和精确 leaf Schema 为准。确认对象、消息和影响后再执行; 不要因为文档示例自行制造或省略 confirmation。

稳定 ID 规则

  • openTaskId 是发送任务 ID,不是消息 ID。
  • 撤回、编辑、回复、转发、Pin、Top 和 reaction 使用真实查询结果中的 messageId
  • 同时保留消息的 conversationId、thread、发送者和引用上下文。
  • 子消息使用自己的 messageId;只在缺会话 ID 时继承父消息 conversationId
  • Bot 撤回使用 processQueryKey,不使用本文件的 openMessageId 路线。

刚由用户身份发送的消息如果只得到 openTaskId,先查询发送状态:

+messages-send 或 message send
→ openTaskId
→ message query-send-status
→ openMessageId + openConversationId
→ 编辑或撤回

撤回与编辑

+messages-recall 可只传 --msg-id;省略会话 ID 时 CLI 会通过只读消息详情补齐。 兼容单值 --message-ids,但不要把 processQueryKey 当消息 ID。

dws chat +messages-recall --msg-id <openMessageId> --format json
dws chat +messages-recall --conversation-id <openConversationId> --msg-id <openMessageId> --format json

编辑使用 message edit --conversation-id <cid> --msg-id <id>,并在 --text--content 中二选一。--text 由 CLI 生成 Markdown content--content 必须是完整 content JSON。

dws chat message edit --conversation-id <openConversationId> --msg-id <openMessageId> --text "更新后的内容"
dws chat message edit --conversation-id <openConversationId> --msg-id <openMessageId> --content '{"title":"标题","text":"更新后的内容"}'

群聊 @所有人使用 --at-all;指定人员使用 --at-open-dingtalk-ids。正文中的占位符以 Runtime 规范化结果为准,不把裸展示名当稳定身份。

引用回复与转发

引用回复默认使用 +messages-reply--group 和消息 ID 来自真实查询; --ref-sender 可省略时让 CLI 只读补齐,不手工猜发送者身份。

dws chat +messages-reply --group <openConversationId> \
  --message-id <openMessageId> --content "收到" --format json
动作 入口 关键上下文
单条转发 +messages-forward 源消息 ID、源会话、目标会话
合并转发 +messages-combine-forward 多个真实消息 ID、源/目标会话
话题转发 +messages-forward-topic 源消息、源会话、源 thread、目标会话

只有 Shortcut 尚未发布真实必需字段时,才评估原子 message replyforwardcombine-forwardforward-topic,并先读取精确 leaf Schema。不要复制正文伪装原生转发。

Pin、Top 与 Favorite

对象 写入入口 说明
消息 Pin +messages-set-pin / +messages-unset-pin 作用于一条消息
消息 Top +messages-set-top / +messages-unset-top 作用于会话内一条消息
Favorite +flag-create / +flag-cancel 当前用户收藏
会话 Top +conversation-set-top 作用于整个会话,不属于本文件

用户要求确认 Pin 已生效时,使用 +messages-list-pin 检查真实结果中的 messageId;取消 Pin 后仅在用户要求确认取消结果时再次查询。典型短链为:+messages-set-pin+messages-list-pin+messages-unset-pin

需要原子 fallback 时,消息 Pin 对应 message set-pin-msg/unset-pin-msg,消息 Top 对应 message set-top-msg/unset-top-msgFavorite 对应 message add-favorite/remove-favorite。 四种对象不能互换,即使用户都使用“收藏、钉住、置顶”等自然语言。

表情回应

优先在 chat-emoji-list.md 按表情名称查默认 emoji,不必全文理解表格。

场景 入口
添加/移除默认 emoji +messages-add-emoji / +messages-remove-emoji
默认表情无合适项时创建文字表情 +messages-create-text-emotion
添加/移除文字表情 +messages-add-text-emotion / +messages-remove-text-emotion
替换文字表情 message update-text-emotion

reaction 查询属于 message-query.md,不要为了查看回应执行写命令。

流式卡片与文本工具

流式卡片使用根 Skill 直接链接的 card/create.mdcard/update.mdcard/schema.md;本文件不复制卡片参数。

纯文本翻译使用:

dws chat text translate --query "你好世界" --to en_US

用户只要求翻译文本时不要误走消息发送。

完成与错误

  • 写操作检查任务级结果、投递状态和失败项,不只看退出码。
  • 投递状态 unknown 时保留幂等键,不自动换目标重发。
  • unknown flag 时读取精确 leaf Help,最多修正一次。
  • 目标消息不存在、会话不匹配或发送者上下文缺失时停止,不猜 ID。
  • 已知稳定消息 ID 的单一动作及其紧邻验证均在本文件完成。