weworkbot
Version:
140 lines (122 loc) • 7.66 kB
Markdown
# weworkbot
企业微信群聊机器人, Node js >= v10
官方文档地址
https://developer.work.weixin.qq.com/document/path/91770
### 安装
```
npm i weworkbot
```
### 注意
因为企业微信限制了每个机器人最大以20条/分钟发送,所以集成了bull队列用来控制发送频率。如果没有用过bull的话,可以参考一下bull的文档。如果没有设置bull队列的话,则会直接发送消息,但是就有可能会受到机器人消息限流
### 使用
``` js
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