快速开始

本文将带你从零配置并启动服务,成功向钉钉群发出第一条消息。

📦 预编译安装包
暂未提供预编译安装包
目前请通过下方源码运行步骤部署使用,后续会发布桌面应用

环境要求

  • Node.js 16 及以上(建议 18 LTS 及以上)
  • Linux(systemd 部署)或 macOS(开发调试)
  • 一个钉钉群自定义机器人的 Webhook 地址(及可选的加签密钥)
💡 如何拿到 Webhook?
在钉钉群「群设置 → 机器人 → 添加机器人 → 自定义」中创建机器人, 复制 Webhook 地址。若在「安全设置」里勾选了「加签」,需同时记录密钥 SEC 开头的那串字符,填入 DINGTALK_SECRET

本地运行

1. 配置环境变量

复制示例配置并填写:

cp .env.example .env
vi .env

关键字段:

DINGTALK_WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=xxx"
DINGTALK_SECRET="SECxxx"         # 未配置加签则留空
DINGTALK_API_TOKEN=""            # 可选,API 鉴权 token
PORT=3000                        # 可选,默认 3000

也可以直接用环境变量临时启动,无需文件:

export DINGTALK_WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=xxx"
export DINGTALK_SECRET="SECxxx"

2. 启动服务

npm start

看到如下日志即启动成功:

dingtalk-notice running on http://0.0.0.0:3000
⚠️ 注意
未配置 DINGTALK_WEBHOOK_URL 时服务会直接退出并报错。 启动前请先清理占用端口的残留进程: lsof -ti:3000 | xargs kill

发出第一条消息

服务运行后,向 /api/v1/push 发一条 POST 请求:

# text 消息
curl -X POST http://localhost:3000/api/v1/push \
  -H "Content-Type: application/json" \
  -d '{"msgtype":"text","content":"hello"}'

成功时响应:

{ "ok": true }

此时钉钉群应收到一条 hello 文本消息。如果失败,响应会透传钉钉的错误码,例如:

{ "ok": false, "errcode": 300005, "errmsg": "token is not exist" }

发一条 Markdown 消息

curl -X POST http://localhost:3000/api/v1/push \
  -H "Content-Type: application/json" \
  -d '{"msgtype":"markdown","title":"标题","content":"# hello\n**bold**"}'

下一步