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学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
nodejs实现简单的gulp打包
Dec 21 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
详解nodejs内置模块
May 06 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引擎的发展
2006/11/16 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
10个php函数实用却不常见
2015/10/13 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
python解决网站的反爬虫策略总结
2016/10/26 Python
儿童编程python入门
2018/05/08 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
印度服装购物网站:Limeroad
2018/09/26 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
美国珠宝精品店:Opulent Jewelers
2019/08/20 全球购物
温泉秘密:Onsen Secret
2020/07/06 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
女儿十岁生日答谢词
2014/01/27 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python