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中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 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+mysql事务rollback&amp;commit示例
2010/02/08 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
Python 登录网站详解及实例
2017/04/11 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
Python类class参数self原理解析
2020/11/19 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
项目专员岗位职责
2013/12/04 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
面试必备的求职信
2014/05/25 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
科学发展观演讲稿
2014/09/11 职场文书
临时用工协议书范本
2014/10/29 职场文书
实训报告范文大全
2014/11/04 职场文书
信仰纪录片观后感
2015/06/08 职场文书
2016年党建工作简报
2015/11/26 职场文书
无线电知识基础入门篇
2022/02/18 无线电