欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

nodejs通过钉钉群机器人推送消息的实现代码

程序员文章站 2022-06-24 13:11:53
intro 最近在用 nodejs 写爬虫,之前的 nodejs 爬虫代码用 js 写的,感觉可维护性太差,也没有智能提示,于是把js改用ts(typescript)重写...

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通过钉钉群机器人推送消息的实现代码,希望对大家有所帮助