GithubHelp home page GithubHelp logo

hubot-dingtalk's Introduction

hubot-dingtalk

Hubotdingtalk适配器,让钉钉机器人无缝接入hubot

注意: 需要先配置好hubot

目前支持:

  • 企业内部机器人(签名sign方式)
  • 自定义机器人(token匹配方式)

环境变量:

  • HUBOT_DINGTALK_AUTH_TYPE (认证类型:token,sign)
  • HUBOT_DINGTALK_TOKEN (认证类型为token时)
  • HUBOT_DINGTALK_SECRET (认证类型为sign时)
  • HUBOT_DINGTALK_MODE (会话类型,1:全部,2:单聊,3:群聊)
  • HUBOT_DINGTALK_BLACKLIST (会话黑名单,格式为cidyyyy==,cidxxxx=,优先极高)
  • HUBOT_DINGTALK_WHITELIST (会话白名单,格式为cidyyyy==,cidxxxx=)

Adapter 配置

添加自定义机器人

打开钉钉添加机器人页面,在底部找到POST 地址Token(需要开通Outgoing权限)

POST 地址

Adapter在启动之后会创建回调/hubot/dingtalk/message/用于接收消息。

POST 地址填入域名/hubot/dingtalk/message/

添加企业内部机器人

登录钉钉开发平台创建。

权限认证

1.token比较

配置环境变量:

  • HUBOT_DINGTALK_AUTH_TYPE=token
  • HUBOT_DINGTALK_TOKEN

HUBOT_DINGTALK_TOKEN对应钉钉自定义机器人outgoing回调token,用于校验POST 地址接收请求的有效性。

2.sign签名

配置环境变量:

  • HUBOT_DINGTALK_AUTH_TYPE=sign
  • HUBOT_DINGTALK_SECRET

HUBOT_DINGTALK_SECRET在企业机器人配置appSecret一栏。

会话控制

目前支持基础的会话控制,包含会话类型(单聊、群聊),会话黑白名单(基于conversationId

  • HUBOT_DINGTALK_MODE=1
  • HUBOT_DINGTALK_BLACKLIST=cidyyyy==,cidxxxx=
  • HUBOT_DINGTALK_WHITELIST=cidyyyy==,cidxxxx=

会优先使用黑名单,关于要使用哪种方式可以自由选取。

该方案目前是简单实现,conversationId的获取还没想到比较好的方式,因为时间问题,临时获取方式是在控制台中输出。

配置Webhook主动发送

在机器人目录conf目录(没有请创建),添加dingtalk-room.json文件。

同一个机器人在不同群的access_token是不一样的,所以要主动发送消息到群是要指定access_token

这里通过维护别名的方式来实现发送到指定群,room是自定义的名称,可以设置成群聊名称一样,envaccess_token的环境变量名称。

[
  {
    "room": "room1",
    "env": "HUBOT_DINGTALK_ACCESS_TOKEN"
  },
  {
    "room": "room2",
    "env": "HUBOT_DINGTALK_ACCESS_TOKEN2"
  }
]

如何发送?

调用robot.messageRoom时,传入你想要发送的群聊别名即可。

module.exports = (robot) ->
  robot.hear "dingtalk", (params) ->
    robot.messageRoom 'room1', "response"

这段代码使用了coffeescript,所以建立的文件扩展名必须是.coffee,当然你也可以转换为js语法,然后放到.js的文件里。

Todo

  • 接入主动发消息webhook
  • 优化消息显示

反馈

Github Issue 钉钉群
issues

如果喜欢的话

如果喜欢的话,欢迎请我喝一杯咖啡。star,follow也是对我工作的肯定和鼓励。

wechat-like

hubot-dingtalk's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

hubot-dingtalk's Issues

希望能增加对单聊、群聊、以及会话ID的单独权限控制

钉钉文档地址:
https://ding-doc.dingtalk.com/doc#/serverapi2/elzz1p

希望能增加对单聊、群聊、以及会话ID的单独权限控制,
第一个使用场景为只运行群聊、只允许单聊、允许群聊和单聊,通过 conversationType 控制;
第二个使用场景为只允许某些群使用,通过会话ID conversationId 控制

和钉钉官方提交过权限控制建议,钉钉官方建议通过 HTTP BODY 中的参数在代码中做控制。
非常感谢大神。

钉钉内部机器人发送内容无应答

你好,
我添加的是钉钉企业内部机器人,添加完成之后,hubot-dingtalk跑起来了,但是在群里@机器人 不会回复呀,我已经在脚本里面加了简单的应答了。

群聊的时候没有反应

在群里 @机器人的时候,有的时候可以用,有的时候没反应,没反应的时候 打印没反应

ERROR Error loading scripts from npm package - TypeError: require(...) is not a function

hubot@7b6192d48514:~$ ./bin/hubot -a dingtalk
up to date in 0.492s

7 packages are looking for funding
run npm fund for details

[Tue May 24 2022 01:48:44 GMT+0000 (Coordinated Universal Time)] INFO Constructor
[Tue May 24 2022 01:48:44 GMT+0000 (Coordinated Universal Time)] INFO Run
[Tue May 24 2022 01:48:44 GMT+0000 (Coordinated Universal Time)] ERROR Error loading scripts from npm package - TypeError: require(...) is not a function
at /home/hubot/node_modules/hubot/src/robot.js:409:52
at Array.forEach (:null:null)
at Robot.loadExternalScripts (/home/hubot/node_modules/hubot/src/robot.js:409:25)
at /home/hubot/node_modules/hubot/bin/hubot.js:207:13
at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3)
安装方式:npm install
hubot-dingtalk版本:1.5.0
nodejs版本:v12.22.12
npm版本:6.14.16
hubot版本:3.3.2
大佬好,初学HUBOT 使用此dingtalk适配器报错

详细文档

你好,这个有详细的文档吗?使用这份代码暂时没起作用

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.