返回顶部
d

dingtalk-message钉钉消息

钉钉消息发送。当用户提到"钉钉消息"、"发消息"、"发通知"、"群通知"、"群消息"、"Webhook"、"机器人消息"、"机器人发消息"、"工作通知"、"单聊消息"、"群聊消息"、"撤回消息"、"消息已读"、"发送Markdown"、"发卡片消息"、"ActionCard"、"@某人"、"@员工"、"at某人"、"提醒某人"、"dingtalk message"、"send message"、"robot message"、"work notification"时使用此技能。支持:群自定义 Webhook 机器人(文本/Markdown/ActionCard/Link/FeedCard + 加签 + @某人)、企业内部应用机器人单聊和群聊发送、消息撤回、已读查询、工作通知等全部消息类操作。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.1
安全检测
已通过
319
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

dingtalk-message

钉钉消息技能

负责钉钉消息发送的所有操作。本文件为策略指南,仅包含决策逻辑和工作流程。完整 API 请求格式见文末的 references/api.md 查阅索引。



四种消息通道概览


通道适用场景认证方式特点
Webhook 机器人往指定群发通知无需 token,URL 自带凭证最简单;支持加签安全模式
企业内部应用机器人
单聊私信 / 群聊消息 | 新版 accessToken | 可撤回、查已读;需 userId 或 openConversationId |
| 工作通知 | 以应用身份推送到工作通知会话 | 旧版 access_token + agentId | 可推全员/部门;出现在工作通知而非聊天 |
| sessionWebhook | 回调中直接回复当前对话 | 无需任何认证 | 回调消息自带临时 URL,约 1.5 小时有效 |


工作流程(每次执行前)

  1. 1. 先理解用户意图 → 判断属于哪个消息通道(见下方「场景路由」)
  2. 读取配置 → 用一条 grep -E ^KEY1=|^KEY2= 命令一次性读取该通道所需的全部键值,不要分多次查询。(跨会话保留,所有 dingtalk-skills 共用同一文件)具体需要哪些配置,见各通道所需配置表格
  3. 仅收集该通道所需的缺失配置 → 一次性询问,不要逐条问
  4. 持久化 → 写入 config,后续无需再问
  5. 执行任务

各通道所需配置

通道所需配置来源说明
WebhookDINGTALKWEBHOOKURL群设置 → 智能群助手 → 添加自定义机器人
Webhook(加签)
额外 DINGTALKWEBHOOKSECRET | 创建机器人时选择加签模式获得 | | 机器人消息 | DINGTALKAPPKEY + DINGTALKAPPSECRET | 开放平台 → 应用管理 → 凭证信息 | | 工作通知 | DINGTALKAPPKEY + DINGTALKAPPSECRET + DINGTALKAGENTID | agentId 在应用管理 → 基本信息 |
  • - robotCode = appKey(完全一致,无需额外配置)
  • 凭证禁止在输出中完整打印,确认时仅显示前 4 位 +

执行规范(推荐)

始终使用脚本文件执行:凡是包含变量替换($(...))、管道(|)或多行逻辑的命令,一律用 create_file 写到 /tmp/.sh 再 bash /tmp/.sh 执行,不要内联到终端。内联命令会被终端工具截断或污染,导致变量读取失败。

禁止 heredoc(<

典型脚本模板(读取配置 → 获取 token(带缓存)→ 执行 API):
bash
#!/bin/bash
set -e
CONFIG=~/.dingtalk-skills/config

一次性读取所有所需配置

APPKEY=$(grep ^DINGTALKAPP_KEY= $CONFIG | cut -d= -f2-) APPSECRET=$(grep ^DINGTALKAPP_SECRET= $CONFIG | cut -d= -f2-)

Token 缓存:有效期内复用,避免重复请求

CACHEDTOKEN=$(grep ^DINGTALKACCESS_TOKEN= $CONFIG 2>/dev/null | cut -d= -f2-) TOKENEXPIRY=$(grep ^DINGTALKTOKEN_EXPIRY= $CONFIG 2>/dev/null | cut -d= -f2-) NOW=$(date +%s)

if [ -n $CACHEDTOKEN ] && [ -n $TOKENEXPIRY ] && [ $NOW -lt $TOKEN_EXPIRY ]; then
TOKEN=$CACHED_TOKEN
else
RESP=$(curl -s -X POST https://api.dingtalk.com/v1.0/oauth2/accessToken \
-H Content-Type: application/json \
-d {\appKey\:\$APPKEY\,\appSecret\:\$APPSECRET\})
TOKEN=$(echo $RESP | grep -o accessToken:[^]* | cut -d -f4)
EXPIRY=$((NOW + 7000)) # token 有效期 2h,提前约 13 分钟过期
# 更新缓存(先删旧值再追加)
sed -i /^DINGTALKACCESSTOKEN=/d;/^DINGTALKTOKENEXPIRY=/d $CONFIG
echo DINGTALKACCESSTOKEN=$TOKEN >> $CONFIG
echo DINGTALKTOKENEXPIRY=$EXPIRY >> $CONFIG
fi

在此追加具体 API 调用

JSON 字段提取:grep -o key:[^]* | cut -d -f4

消息内容缺失时的处理

用户未指定消息内容时,不要自行编造,应先询问用户想发送什么内容。仅当用户明确表示随便发一条测试时,才使用默认内容:这是一条来自钉钉机器人的测试消息。



场景路由(收到用户请求后的判断逻辑)

用户想发消息
├─ 发到群里?
│ ├─ 通用群消息(含 @某人)→ 询问用户选择发送方式(见下方「群消息发送方式选择」)
│ ├─ 明确需要撤回或查已读 → 企业机器人群聊(直接跳过询问)
│ └─ 正在处理机器人回调,直接回复 → sessionWebhook
├─ 发给个人?
│ ├─ 以机器人身份发私信 → 企业机器人单聊
│ └─ 以应用身份推工作通知 → 工作通知
├─ 撤回/查已读?
│ ├─ 机器人消息 → 企业机器人的撤回/已读 API
│ └─ 工作通知 → 工作通知的查询/撤回 API
└─ 回复机器人收到的消息? → sessionWebhook



群消息发送方式选择

用户发起群消息请求时,必须先询问他们选择哪种方式,并说明各自需要什么配置:

请问您想通过哪种方式发这条群消息?

方式需要提供如何获取说明
Webhook 机器人WEBHOOKURL群设置 → 智能群助手 → 添加自定义机器人 → 复制 URL无需应用权限,配置最简单;支持 @某人(at.atUserIds)
企业内部应用机器人
openConversationId(群会话 ID) | 机器人收到群消息时,回调体的 conversationId 字段即为该值 | 需要 APPKEY/APP_SECRET;支持撤回、查已读 |
推荐 Webhook,只需一个 URL 即可,无需任何应用权限。

收到用户选择后按以下方式收集配置:

  • - 选 Webhook:收集 DINGTALKWEBHOOKURL(若启用加签还需 DINGTALKWEBHOOKSECRET),持久化后执行
  • 企业机器人:收集 openConversationId,复用已有的 APPKEY/APPSECRET(若未配置则一并收集),调用 groupMessages/send



执行 API 前按通道获取对应 token:
通道token 类型获取方式使用方式
机器人消息新版 accessTokenPOST https://api.dingtalk.com/v1.0/oauth2/accessToken请求头 x-acs-dingtalk-access-token
工作通知
旧版 accesstoken | GET https://oapi.dingtalk.com/gettoken?appkey=&appsecret= | URL 参数 ?accesstoken= |
| Webhook | 无需 token | — | 直接 POST 到 Webhook URL |
| sessionWebhook | 无需 token | — | 直接 POST 到回调中的 sessionWebhook URL |

token 有效期均为 2 小时,遇 401 重新获取即可。具体请求/返回格式见 api.md 对应章节。


身份标识(关键决策知识)

所有消息发送 API 均只接受 userId(staffId),不接受 unionId。这一点已通过实际 API 调用验证。

| 标识 | 作用域 |

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 dingtalk-message-1776121682 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 dingtalk-message-1776121682 技能

通过命令行安装

skillhub install dingtalk-message-1776121682

下载

⬇ 下载 dingtalk-message v0.1.1(免费)

文件大小: 12.02 KB | 发布时间: 2026-4-15 12:30

v0.1.1 最新 2026-4-15 12:30
- No file changes were detected in this release.
- Documentation, strategy, and workflow remain unchanged from the previous version.
- No new features, fixes, or adjustments have been introduced in this version.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部