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开发微信公众号后台服务实例
Sep 03 NodeJs
Nodejs Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
对mac下nodejs 更新到最新版本的最新方法(推荐)
May 17 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 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模板类代码
2008/09/07 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
php实现无限级分类
2014/12/24 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
JavaScript截屏功能的实现代码
2017/07/28 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
Python中的包和模块实例
2014/11/22 Python
python内存管理分析
2015/04/08 Python
python之Socket网络编程详解
2016/09/29 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python中reader的next用法
2018/07/24 Python
Django 开发环境配置过程详解
2019/07/18 Python
详解python破解zip文件密码的方法
2020/01/13 Python
什么是Python包的循环导入
2020/09/08 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
计算机求职信
2013/12/01 职场文书
安全技术说明书
2014/05/09 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
中学教师个人总结
2015/02/10 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
《纸船和风筝》教学反思
2016/02/18 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python