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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
nodeJs的安装与npm全局环境变量的配置详解
Jan 06 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 实现多服务器共享 SESSION 数据
2009/08/15 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
json原理分析及实例介绍
2012/11/29 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
python3调用windows dos命令的例子
2019/08/14 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
业务经理岗位职责
2013/11/11 职场文书
法制宣传月活动方案
2014/05/11 职场文书
供用电专业求职信
2014/07/07 职场文书
会计试用期自我评价
2014/09/19 职场文书
英文感谢信格式
2015/01/21 职场文书
员工自我评价范文
2015/03/11 职场文书
廉洁自律证明
2015/06/24 职场文书
运动会3000米加油稿
2015/07/21 职场文书
勤俭节约主题班会
2015/08/13 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers