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学习笔记之NET模块
Jan 13 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 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
一个程序下载的管理程序(一)
2006/10/09 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
将时间以距今多久的形式表示,PHP,js双版本
2012/09/25 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
PHP中exec函数和shell_exec函数的区别
2014/08/20 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
JavaScript 特殊字符
2007/04/05 Javascript
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
python循环监控远程端口的方法
2015/03/14 Python
Python中有趣在__call__函数
2015/06/21 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
2019/03/22 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
Django密码系统实现过程详解
2019/07/19 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
好军嫂事迹材料
2014/01/15 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
北京英语导游词
2015/02/12 职场文书
单位综合评价意见
2015/06/05 职场文书
研讨会致辞
2015/07/31 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
Django框架中视图的用法
2022/06/10 Python
python 镜像环境搭建总结
2022/09/23 Python