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 相关文章推荐
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
nodejs文件夹深层复制功能
Sep 03 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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和MySQL保存和输出图片
2006/10/09 PHP
php学习之流程控制实现代码
2011/06/09 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
php之可变函数的实例详解
2017/09/13 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
[08:40]Navi Vs Newbee
2018/06/07 DOTA
python检测远程端口是否打开的方法
2015/03/14 Python
Python科学画图代码分享
2017/11/29 Python
Python实现购物车程序
2018/04/16 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
Django中的ajax请求
2018/10/19 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
保安员岗位职责
2013/11/17 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
高二美术教学反思
2014/01/14 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
幸福家庭标语
2014/06/27 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书