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 文本操作模块-fs模块(三)
Dec 22 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
nodejs文件夹深层复制功能
Sep 03 NodeJs
NodeJS实现一个聊天室功能
Nov 25 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
NodeJs使用webpack打包项目的方法详解
Feb 28 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批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
写js时遇到的一些小问题
2010/12/06 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
js读取cookie方法总结
2014/10/31 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
Python中operator模块的操作符使用示例总结
2016/06/28 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
python数值基础知识浅析
2019/11/19 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
奉献演讲稿范文
2014/05/21 职场文书
教师工作表现评语
2014/12/31 职场文书
公司员工体检通知
2015/04/21 职场文书
致运动员赞词
2015/07/22 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
队列队形口号
2015/12/25 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Python实现拼音转换
2021/06/07 Python
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android