nodejs通过钉钉群机器人推送消息的实现代码


Posted in NodeJs onMay 05, 2019

Intro

最近在用 nodejs 写爬虫,之前的 nodejs 爬虫代码用 js 写的,感觉可维护性太差,也没有智能提示,于是把js改用ts(typescript)重写一下,提升代码质量。

爬虫启动之后不定期会出现验证码反爬虫,需要输入验证码才能继续,于是想在需要输入验证码时推送一个消息给用户,让用户输入验证码以继续爬虫的整个流程。我们平时用钉钉办公,钉钉群有个机器人,很方便于是就实现了一个通过钉钉的群机器人实现消息推送。

实现

代码是 ts 实现的,用了 request 发起http请求,具体参数参考钉钉官方文档,只实现了文本消息的推送,其它消息类似,再进行一层封装,实现代码如下:

import * as request from "request";
import * as log4js from "log4js";
const logger = log4js.getLogger("DingdingBot");
const ApplicationTypeHeader:string = "application/json;charset=utf-8";
// DingdingBot
// https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq
export class DingdingBot{
  private readonly _webhookUrl:string;
  constructor(webhookUrl:string){
    this._webhookUrl = webhookUrl;
  }
  public pushMsg (msg: string, atMobiles?: Array<string>): boolean{
    try {
      let options: request.CoreOptions = {
        headers: {
         "Content-Type": ApplicationTypeHeader
        },
        json: {
          "msgtype": "text", 
          "text": {
            "content": msg
          }, 
          "at": {
            "atMobiles": atMobiles == null ? [] : atMobiles,
            "isAtAll": false
          }
        }
       };
      request.post(this._webhookUrl, options, function(error, response, body){
        logger.debug(`push msg ${msg}, response: ${JSON.stringify(body)}`);
      });
    }
    catch(err) {
      console.error(err);
      return false;
    }    
  }
}

使用方式:

// botWebhookUrl 为对应钉钉机器人的 webhook 地址
let bot = new DingdingBot(botWebhookUrl);;
// 直接推送消息
bot.pushMsg("测试消息");
// 推送消息并 @ 某些人
var mobiles = new Array<string>();
mobiles.push("13255573334");
bot.pushMsg("测试消息并@", mobiles);

总结

以上所述是小编给大家介绍的nodejs通过钉钉群机器人推送消息的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

NodeJs 相关文章推荐
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 #NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 #NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 #NodeJs
Nodejs实现用户注册功能
Apr 14 #NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 #NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 #NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 #NodeJs
You might like
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
php简单判断文本编码的方法
2015/07/30 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
Python 返回汉字的汉语拼音
2009/02/27 Python
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
python编写简单端口扫描器
2019/09/04 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
python访问hdfs的操作
2020/06/06 Python
C#笔试题集合
2013/06/21 面试题
加工操作管理制度
2014/01/19 职场文书
活动志愿者自荐信
2014/01/27 职场文书
银行开业庆典方案
2014/02/06 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
读后感作文评语
2014/12/25 职场文书
初中优秀学生评语
2014/12/29 职场文书
2015年度党员个人总结
2015/02/14 职场文书
《月光曲》教学反思
2016/02/16 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL