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开发环境配置与使用
Nov 17 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
May 12 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
PHP+MYSQL会员系统的开发实例教程
2014/08/23 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
python生成大写32位uuid代码
2020/03/03 Python
python如何删除文件、目录
2020/06/23 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
日语专业推荐信
2013/11/12 职场文书
业务内勤岗位职责
2014/04/30 职场文书
学习经验演讲稿
2014/05/10 职场文书
委托证明范本
2014/11/25 职场文书
九寨沟导游词
2015/02/02 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
python opencv通过4坐标剪裁图片
2021/06/05 Python
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android