100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 用node语言(egg框架) 接入自定义钉钉机器人

用node语言(egg框架) 接入自定义钉钉机器人

时间:2020-03-20 21:49:46

相关推荐

用node语言(egg框架) 接入自定义钉钉机器人

最近要在项目中接入一个钉钉机器人,在其中遇到了各种的问题,经过自我不断的思考,思考,思考。。问题终于解决了。

背景:用的egg框架

这个是service

const CryptoJS = require("crypto-js/crypto-js"); //引入加密js

主要方法dingRemind

async dingRemind() {const time = new Date().getTime(); //获取时间戳const secret = "***"; //密钥const sign = time + "\n" + secret;const q = CryptoJS.HmacSHA256(sign, secret); // HmacSHA256计算签名const hashInBase64 = CryptoJS.enc.Base64.stringify(q); //base64加密const encodesign = encodeURI(hashInBase64); //解密const access_token = "***"; //机器人tokenconst data = {"msgtype": "markdown", //推荐markdown 内容编辑度高"markdown": {"title": "*","text":"*"},"at":{"isAtAll":true}};let result = await this.ctx.curl(`/robot/send?access_token=${access_token}&timestamp=${time}&sign=${encodesign}`, {method: "POST",headers: {//自定义header"Accept": "*/*","Content-Type": "application/json;charset=utf-8"},data: data,dataType: 'json',});return result.data; }

可能会有朋友问 token 和secret怎么获得?

傻瓜式操作

点击钉钉头像-》机器人管理-》自定义

当然我这个是简易版的,各位可以在dingRemind方法里面接受几个参数,然后拼接在data常量里面的text内容,text里面是个字符串 可以在字符串里面写markdown语法 (这个自由度较高,会直接跳转浏览器打开链接 )比如:

接受二个参数 一个是name 一个是图片url

const data = {"msgtype": "markdown", "markdown": {"title": "展示","text":"### "+name+" \n> 马赛克马赛克 。 \n> ![]("+img_url+") \n> 1. [链接]() \n> 2. [链接]() \n>"},"at":{"isAtAll":true //@全体成员 默认false}};

可以在js中 请求接口(嘿嘿跨项目了 ,用postman展示一下)

这个不知道怎么配置egg路由的朋友可以看我上一篇博客 egg (一共没几篇文章,一看就知道是哪个了) 这个body是自己封装的,大家可以直接用钉钉自身返回的data

效果如下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。