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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
初探nodeJS
Jan 24 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 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
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python3.5运算符操作实例详解
2019/04/25 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
Python安装OpenCV的示例代码
2020/03/05 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
python实现人工蜂群算法
2020/09/18 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
上海期货面试题
2014/01/31 面试题
大学毕业生求职自荐书
2014/06/05 职场文书
会议欢迎词
2015/01/23 职场文书
检讨书格式
2019/04/25 职场文书
php中pcntl_fork详解
2021/04/01 PHP
比较几种Redis集群方案
2021/06/21 Redis
nginx安装以及配置的详细过程记录
2021/09/15 Servers