Skip to content

Repository files navigation

NPM Version

钉钉支持 Stream 模式接入事件推送、机器人收消息以及卡片回调,该 SDK 实现了 Stream 模式。相比 Webhook 模式,Stream 模式可以更简单的接入各类事件和回调。

开发教程

教程文档 中,你可以找到钉钉 Stream 模式的教程文档和示例代码。

参考资料

调试方法

1、创建企业内部应用

进入钉钉开发者后台,创建企业内部应用,获取ClientID(即 AppKey)和ClientSecret( 即AppSecret)。

2、开通Stream 模式的机器人

进入开发者后台新建的应用,点击应用能力 - 添加应用能力 - 机器人,完善机器人信息,选择stream模式并发布。

3、使用demo项目测试,启动服务:

a、获取demo项目

git clone git@github.com:open-dingtalk/dingtalk-stream-sdk-nodejs.git b、在example/config.json里配置应用信息。

c、启动测试case

cd dingtalk-stream-sdk-nodejs yarn npm run build npm start

注意:示例通过 Node.js 的 ts-node/esm loader 启动;TypeScript 文件中的相对 import 仍需使用 .js 后缀,以匹配 ESM 运行时解析规则。

异步事件处理与背压

maxPendingEventHandlers 控制同时执行的 EVENT handler 数量, maxPendingCallbackHandlers 控制同时执行的异步 CALLBACK handler 数量, 默认值均为 100。EVENT 达到上限后,SDK 会直接回复 LATER;CALLBACK 达到上限后不会调用新 handler,也不会 ACK,由服务端稍后重投,避免慢 handler 持续堆积并耗尽内存。连接断开时,SDK 会中止当前连接的 EVENT AbortSignal

const client = new DWClient({
  clientId,
  clientSecret,
  maxPendingEventHandlers: 20,
  maxPendingCallbackHandlers: 20,
});

client.registerAllEventListener(async (event, signal) => {
  await processEvent(event, { signal });
  return { status: EventAck.SUCCESS };
});

业务 handler 应把 signal 继续传给支持取消的异步操作;忽略取消信号的 Promise 无法被 JavaScript 强制终止,但仍受全局并发上限保护。

About

Nodejs SDK for DingTalk Stream Mode API, Compared with the webhook mode, it is easier to access the DingTalk chatbot

Resources

Stars

37 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages