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 相关文章推荐
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
nodejs中使用monk访问mongodb
Jul 06 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs实现UDP组播示例方法
Nov 04 NodeJs
Nodejs实现WebSocket代码实例
May 19 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
PHP5 安装方法
2006/10/09 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
js类型检查实现代码
2010/10/29 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
python 域名分析工具实现代码
2009/07/15 Python
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
python fabric使用笔记
2015/05/09 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
采购部长岗位职责
2014/06/13 职场文书
图书室标语
2014/06/21 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
教师节标语大全
2014/10/07 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
公司年会主持词范文!
2019/05/07 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
浅析Python中的随机采样和概率分布
2021/12/06 Python