weworkbot
v1.3.0
Published
企业微信群聊机器人
Downloads
171
Readme
weworkbot
企业微信群聊机器人, Node js >= v10
官方文档地址
https://developer.work.weixin.qq.com/document/path/91770
安装
npm i weworkbot
注意
因为企业微信限制了每个机器人最大以20条/分钟发送,所以集成了bull队列用来控制发送频率。如果没有用过bull的话,可以参考一下bull的文档。如果没有设置bull队列的话,则会直接发送消息,但是就有可能会受到机器人消息限流
使用
import { WeWorkBot } from 'weworkbot'
const { mdContent } = require('./content')
/**
* 项目依赖bull队列来做限流,这里需要传入一个bull队列的实例,请自己实例化这个队列实例
并保证将限流设置为
limiter: {
max: 1,
duration: 3000,
groupKey: 'key' // 每个机器人一个限流
},
如果不设置队列也行,但是就有可能受到微信的限流
*/
WeWorkBot.setQueue(que)
const bot = new WeWorkBot({
key: 'xxxx',
})
/** 发送文本消息 */
bot.sendText({
content: '文本测试消息',
mentioned_list: ['@all'],
})
/** 发送markdown消息 */
bot.sendMarkDown(mdContent)
/** 发送图片消息 */
bot.sendImage('test/test_file.jpg')
/** 发送图文消息 */
bot.sendNews([
{
title: '测试图文标题',
url: 'https://www.qq.com',
description: '测试图文描述',
picurl:
'http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png',
},
])
/** 上传并发送文件 */
bot
.upload({
filePath: 'test/test_file.jpg',
})
.then((mid) => {
bot.sendFile(mid)
})
文本通知模版卡片
|字段|类型|必须|说明| |:------|:-----------|:---|:---| |card_type|String|是|模版卡片的模版类型,文本通知模版卡片的类型为text_notice| |source|Object|否|卡片来源样式信息,不需要来源样式可不填写| |source.icon_url|String|否|来源图片的url| |source.desc|String|否|来源图片的描述,建议不超过13个字| |source.desc_color|Int|否|来源文字的颜色,目前支持:0(默认) 灰色,1 黑色,2 红色,3 绿色| |main_title|Object|是|模版卡片的主要内容,包括一级标题和标题辅助信息| |main_title.title|String|否|一级标题,建议不超过26个字。模版卡片主要内容的一级标题main_title.title和二级普通文本sub_title_text必须有一项填写| |main_title.desc|String|否|标题辅助信息,建议不超过30个字| |emphasis_content|Object|否|关键数据样式| |emphasis_content.title|String|否|关键数据样式的数据内容,建议不超过10个字| |emphasis_content.desc|String|否|关键数据样式的数据描述内容,建议不超过15个字| |quote_area|Object|否|引用文献样式,建议不与关键数据共用| |quote_area.type|Int|否|引用文献样式区域点击事件,0或不填代表没有点击事件,1 代表跳转url,2 代表跳转小程序| |quote_area.url|String|否|点击跳转的url,quote_area.type是1时必填| |quote_area.appid|String|否|点击跳转的小程序的appid,quote_area.type是2时必填| |quote_area.pagepath|String|否|点击跳转的小程序的pagepath,quote_area.type是2时选填| |quote_area.title|String|否|引用文献样式的标题| |quote_area.quote_text|String|否|引用文献样式的引用文案| |sub_title_text|String|否|二级普通文本,建议不超过112个字。模版卡片主要内容的一级标题main_title.title和二级普通文本sub_title_text必须有一项填写| |horizontal_content_list|Object[]|否|二级标题+文本列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过6| |horizontal_content_list.type|Int|否|链接类型,0或不填代表是普通文本,1 代表跳转url,2 代表下载附件,3 代表@员工| |horizontal_content_list.keyname|String|是|二级标题,建议不超过5个字| |horizontal_content_list.value|String|否|二级文本,如果horizontal_content_list.type是2,该字段代表文件名称(要包含文件类型),建议不超过26个字| |horizontal_content_list.url|String|否|链接跳转的url,horizontal_content_list.type是1时必填| |horizontal_content_list.media_id|String|否|附件的media_id
图文展示模版卡片
|字段|类型|必须|说明| |:------|:-----------|:---|:---| |card_type|String|是|模版卡片的模版类型,图文展示模版卡片的类型为news_notice| |source|Object|否|卡片来源样式信息,不需要来源样式可不填写| |source.icon_url|String|否|来源图片的url| |source.desc|String|否|来源图片的描述,建议不超过13个字| |source.desc_color|Int|否|来源文字的颜色,目前支持:0(默认) 灰色,1 黑色,2 红色,3 绿色| |main_title|Object|是|模版卡片的主要内容,包括一级标题和标题辅助信息| |main_title.title|String|是|一级标题,建议不超过26个字| |main_title.desc|String|否|标题辅助信息,建议不超过30个字| |card_image|Object|是|图片样式| |card_image.url|String|是|图片的url| |card_image.aspect_ratio|Float|否|图片的宽高比,宽高比要小于2.25,大于1.3,不填该参数默认1.3| |image_text_area|Object|否|左图右文样式| |image_text_area.type|Int|否|左图右文样式区域点击事件,0或不填代表没有点击事件,1 代表跳转url,2 代表跳转小程序| |image_text_area.url|String|否|点击跳转的url,image_text_area.type是1时必填| |image_text_area.appid|String|否|点击跳转的小程序的appid,必须是与当前应用关联的小程序,image_text_area.type是2时必填| |image_text_area.pagepath|String|否|点击跳转的小程序的pagepath,image_text_area.type是2时选填| |image_text_area.title|String|否|左图右文样式的标题| |image_text_area.desc|String|否|左图右文样式的描述| |image_text_area.image_url|String|是|左图右文样式的图片url| |quote_area|Object|否|引用文献样式,建议不与关键数据共用| |quote_area.type|Int|否|引用文献样式区域点击事件,0或不填代表没有点击事件,1 代表跳转url,2 代表跳转小程序| |quote_area.url|String|否|点击跳转的url,quote_area.type是1时必填| |quote_area.appid|String|否|点击跳转的小程序的appid,quote_area.type是2时必填| |quote_area.pagepath|String|否|点击跳转的小程序的pagepath,quote_area.type是2时选填| |quote_area.title|String|否|引用文献样式的标题| |quote_area.quote_text|String|否|引用文献样式的引用文案| |vertical_content_list|Object[]|否|卡片二级垂直内容,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过4| |vertical_content_list.title|String|是|卡片二级标题,建议不超过26个字| |vertical_content_list.desc|String|否|二级普通文本,建议不超过112个字| |horizontal_content_list|Object[]|否|二级标题+文本列表,该字段可为空数组,但有数据的话需确认对应字段是否必填,列表长度不超过6| |horizontal_content_list.type|Int|否|模版卡片的二级标题信息内容支持的类型,1是url,2是文件附件| |horizontal_content_list.keyname|String|是|二级标题,建议不超过5个字| |horizontal_content_list.value|String|否|二级文本,如果horizontal_content_list.type是2,该字段代表文件名称(要包含文件类型),建议不超过26个字| |horizontal_content_list.url|String|否|链接跳转的url,horizontal_content_list.type是1时必填| |horizontal_content_list.media_id|String|否|附件的media_id