{"id":13427727,"url":"https://github.com/x-cold/dingtalk-robot","last_synced_at":"2025-03-16T00:32:04.596Z","repository":{"id":52676052,"uuid":"99318843","full_name":"x-cold/dingtalk-robot","owner":"x-cold","description":"钉钉机器人消息推送 Nodejs SDK。","archived":false,"fork":false,"pushed_at":"2024-02-23T09:13:43.000Z","size":71,"stargazers_count":148,"open_issues_count":4,"forks_count":23,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-10-28T07:44:59.396Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/x-cold.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-04T07:56:51.000Z","updated_at":"2024-07-31T05:39:09.000Z","dependencies_parsed_at":"2024-02-23T10:29:37.806Z","dependency_job_id":"edae98f0-6891-4b7d-bbea-135a794f1975","html_url":"https://github.com/x-cold/dingtalk-robot","commit_stats":{"total_commits":40,"total_committers":7,"mean_commits":5.714285714285714,"dds":0.275,"last_synced_commit":"c23450bd461db1f05b07746c544a189e77284a03"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x-cold%2Fdingtalk-robot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x-cold%2Fdingtalk-robot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x-cold%2Fdingtalk-robot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/x-cold%2Fdingtalk-robot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/x-cold","download_url":"https://codeload.github.com/x-cold/dingtalk-robot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243809865,"owners_count":20351403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T01:00:39.370Z","updated_at":"2025-03-16T00:32:04.273Z","avatar_url":"https://github.com/x-cold.png","language":"JavaScript","funding_links":[],"categories":["开发库和SDK"],"sub_categories":["Node.js"],"readme":"# Dingtalk Robot\n\n[![download](https://img.shields.io/npm/v/dingtalk-robot-sender.svg?style=flat-square)](https://npmjs.org/package/dingtalk-robot-sender) [![](https://travis-ci.org/x-cold/dingtalk-robot.svg?branch=master)](https://travis-ci.org/x-cold/dingtalk-robot) [![codecov](https://codecov.io/gh/x-cold/dingtalk-robot/branch/master/graph/badge.svg)](https://codecov.io/gh/x-cold/dingtalk-robot) [![download](https://badgen.net/npm/dt/dingtalk-robot-sender)](https://npmjs.org/package/dingtalk-robot-sender)\n\n钉钉机器人Node.js SDK，基于官方提供的文档稍微抽象封装了一层，方便调用。\n\n官网链接：https://open-doc.dingtalk.com/microapp/serverapi3/iydd5h\n\n## 1. 用法\n\n### 1.0 安装模块\n\n```\nnpm i dingtalk-robot-sender --save\n```\n\n### 1.1 创建机器人实例\n\n```js\nconst ChatBot = require('dingtalk-robot-sender');\n// 直接使用 webhook\nconst robot = new ChatBot({\n  webhook: 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx'\n});\n\n// 组合 baseUrl 和 accessToken 如果采用加签方式的安全设置，同时填写secret\nconst robot = new ChatBot({\n  baseUrl: 'https://oapi.dingtalk.com/robot/send',\n  accessToken: 'xxxxxxxxx',\n  secret: 'xxxxxxxx',\n});\n\n// 自定义 httpclient\nconst robot = new ChatBot({\n  baseUrl: 'https://oapi.dingtalk.com/robot/send',\n  accessToken: 'xxxxxxxxx',\n  secret: 'xxxxxxxx',\n  httpclient: require('urllib')\n});\n```\n\n### 1.2 发送钉钉消息\n\n```js\n// 发送钉钉消息\nlet textContent = {\n  \"msgtype\": \"text\", \n  \"text\": {\n    \"content\": \"我就是我, 是不一样的烟火\"\n  }, \n  \"at\": {\n    \"atMobiles\": [\n      \"156xxxx8827\", \n      \"189xxxx8325\"\n    ], \n    \"isAtAll\": false\n  }\n}\nrobot.send(textContent)\n  .then((res) =\u003e {\n    // TODO\n  });\n```\n\n### 1.3 快速发送各种格式的消息(强烈建议阅读源码中的注释部分)\n\n1.3.1 发送普通文本\n\n```js\nlet content = '我就是我, 是不一样的烟火';\nlet at = {\n   \"atMobiles\": [\n    \"156xxxx8827\", \n    \"189xxxx8325\"\n  ], \n  \"isAtAll\": false\n};\n// 快速发送文本消息\nrobot.text(content, at);\n```\n\n1.3.2 发送链接\n\n```js\nlet link = {\n  \"text\": \"这个即将发布的新版本，创始人陈航（花名“无招”）称它为“红树林”。而在此之前，每当面临重大升级，产品经理们都会取一个应景的代号，这一次，为什么是“红树林”？\", \n  \"title\": \"时代的火车向前开\", \n  \"picUrl\": \"\", \n  \"messageUrl\": \"https://mp.weixin.qq.com/s?__biz=MzA4NjMwMTA2Ng==\u0026mid=2650316842\u0026idx=1\u0026sn=60da3ea2b29f1dcc43a7c8e4a7c97a16\u0026scene=2\u0026srcid=09189AnRJEdIiWVaKltFzNTw\u0026from=timeline\u0026isappinstalled=0\u0026key=\u0026ascene=2\u0026uin=\u0026devicetype=android-23\u0026version=26031933\u0026nettype=WIFI\"\n};\nrobot.link(link);\n```\n\n1.3.3 发送Markdown\n\n```js\nlet title = '杭州天气';\nlet text = \"#### 杭州天气 @156xxxx8827\\n\" +\n          \"\u003e 9度，西北风1级，空气良89，相对温度73%\\n\\n\" +\n          \"\u003e ![screenshot](http://image.jpg)\\n\"  +\n          \"\u003e ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \\n\";\nlet at2 = {\n   \"atMobiles\": [\n    \"156xxxx8827\", \n    \"189xxxx8325\"\n  ], \n  \"isAtAll\": false\n};\nrobot.markdown(title, text, at2);\n```\n\n1.3.4 发送actionCard\n\n```js\nlet card = {\n  \"title\": \"乔布斯 20 年前想打造一间苹果咖啡厅，而它正是 Apple Store 的前身\",\n  \"text\": `![screenshot](@lADOpwk3K80C0M0FoA) \n                ### 乔布斯 20 年前想打造的苹果咖啡厅 \n                Apple Store 的设计正从原来满满的科技感走向生活化，而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划`,\n  \"hideAvatar\": \"0\",\n  \"btnOrientation\": \"0\",\n  \"btns\": [\n    {\n      \"title\": \"内容不错\",\n      \"actionURL\": \"https://www.dingtalk.com/\"\n    },\n    {\n      \"title\": \"不感兴趣\",\n      \"actionURL\": \"https://www.dingtalk.com/\"\n    }\n  ]\n};\nrobot.actionCard(card);\n```\n\n1.3.5 发送feedCard\n\n```js\nlet links = [\n  {\n    \"title\": \"时代的火车向前开\",\n    \"messageURL\": \"https://mp.weixin.qq.com/s?__biz=MzA4NjMwMTA2Ng==\u0026mid=2650316842\u0026idx=1\u0026sn=60da3ea2b29f1dcc43a7c8e4a7c97a16\u0026scene=2\u0026srcid=09189AnRJEdIiWVaKltFzNTw\u0026from=timeline\u0026isappinstalled=0\u0026key=\u0026ascene=2\u0026uin=\u0026devicetype=android-23\u0026version=26031933\u0026nettype=WIFI\",\n    \"picURL\": \"https://www.dingtalk.com/\"\n  },\n  {\n    \"title\": \"时代的火车向前开2\",\n    \"messageURL\": \"https://mp.weixin.qq.com/s?__biz=MzA4NjMwMTA2Ng==\u0026mid=2650316842\u0026idx=1\u0026sn=60da3ea2b29f1dcc43a7c8e4a7c97a16\u0026scene=2\u0026srcid=09189AnRJEdIiWVaKltFzNTw\u0026from=timeline\u0026isappinstalled=0\u0026key=\u0026ascene=2\u0026uin=\u0026devicetype=android-23\u0026version=26031933\u0026nettype=WIFI\",\n    \"picURL\": \"https://www.dingtalk.com/\"\n  }\n]\nrobot.feedCard(links);\n```\n\n## Examples\n\nhttps://github.com/x-cold/dingtalk-robot/tree/master/examples\n\n## Environment\n\n+ Node.js \u003e 6\n\n## Test\n\n### Units Test\n\n```\nnpm test\n```\n\n### Coverage\n\n```\nnpm run ci\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fx-cold%2Fdingtalk-robot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fx-cold%2Fdingtalk-robot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fx-cold%2Fdingtalk-robot/lists"}