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 Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
nodejs中实现阻塞实例
Mar 24 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 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
yii框架中的Url生产问题小结
2012/01/16 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
2016/06/13 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
python中反射用法实例
2015/03/27 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
生产车间标语
2014/06/11 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
幼儿园见习报告
2014/10/30 职场文书
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技