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处理图片的中间件node-images详解
May 08 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 NodeJs
NodeJS实现一个聊天室功能
Nov 25 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 NodeJs
在nodejs中创建child process的方法
Jan 26 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
vscode自定义vue模板的实现
2021/01/27 Vue.js
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
python pygame实现五子棋小游戏
2020/10/26 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
python3爬虫中异步协程的用法
2020/07/10 Python
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
事务机电主管工作职责
2014/02/25 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
给老师的一封感谢信
2015/01/20 职场文书
辞职信的写法
2015/02/27 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
AJAX学习笔记
2021/05/18 Javascript
Js类的构建与继承案例详解
2021/09/15 Javascript