通过机器人,企业应用可以主动向群聊内发送文本、图片、图文、文件以及 markdown 格式的消息,在***的企业微信版本中,可以发送展示功能更加丰富的模板卡片消息。
通过本教程,开发者将了解以下内容:
- 如何为群聊添加和配置机器人
- 如何通过机器人向群聊内发送消息
- 如何发送展示形式多样的模板卡片消息
准备工作
在开始本教程之前,请确保你已经完成了一下准备工作:
- 已经注册了有效的企业微信账号,并且在客户端上已经登录
- 现有或者新建有效的包含多名企业微信成员的群聊
使用官方代码示例
一、下载官方代码示例
查看官方 代码示例 ,打开命令行工具,执行以下命令,下载服务端代码。
git clone https://github.com/WecomTeam/CodeSameples.git
二、配置项目信息
打开下载的代码工程,在根目录将 main.config.demo.js 复制一份到 main.config.js 文件中,并根据实际项目情况补充以下配置信息:
module.exports = {// 机器人 WebHookrobot_webhook:''}
三、安装启动服务
在已下载的示例代码项目根目录下,执行以下代码完成依赖安装:
执行以下命令,启动后端服务:
npm run buildnpm run start
四、访问示例页面
在浏览器中访问 http://localhost:8080/#/robot,打开页面。

创建群聊机器人



发送机器人消息
发送基本类型消息
文本、图文消息、markdown类型的消息,仅需要直接通过业务后台服务器直接 WebHook URL 发送对应数据请求即可。
在示例代码的 /server/robotController.js 文件中展示了向 Webhook Url 发送消息数据体的基本模式:
// 发送机器人消息router.post('/robot/send', async function (req, res, next) {// 从前端请求中获取对应的参数let { form: request_data, webhook } = req.body;// 机器人的 Webhook Urllet webhook_url = webhook || Config.robot;// 向对应的 Webhook Url 发送对应的数据结构const { data } = await axios.post(webhook_url, request_data);res.send(data);});

发送文件类型消息
当通过机器人向群聊中发送文件类型消息时,需要对应的文件通过机器人文件专属的接口,上传至专属的临时素材存储中,参考 群机器人配置说明。
在示例代码的 /server/robotController.js 文件中展示了通过企业微信机器人消息专属文件接口上传文件的基本流程:
const FormData = require('form-data');const axios = require('axios');const Config = require('../main.config');// 简单地从 URL 中获取 get 参数的方法function getQueryVariable(url) {let query = url.split('?')[1];let theRequest = new Object();strs = query.split("&");for (let i = 0; i < strs.length; i++) {theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);}return theRequest;}module.exports = function (router) {// 上传机器人消息用到的文件router.post('/robot/upload', async function (req, res, next) {// 从请求中读取文件对象let { file } = req.files || {};// 从 Webhook Url 中获取对应的 Keylet { webhook } = req.body || {};let webhook_url = webhook || Config.robot;let key = getQueryVariable(webhook_url)['key'] ;// 组建一个form,用来上传文件const form = new FormData();form.append('filename', file.name);form.append('filelength', file.size);form.append('media', file.data, file.name);// 向企业微信的机器人消息文件上传接口上传文件const { data } = await axios.post('https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media',form,{params: {key,type: 'file'},headers: {"Content-Type": "multipart/form-data"},});// 返回上传文件的 media_id 信息res.send(data);});};

小结
在本节课程,开发者了解了如何创建机器人,并通过机器人接口像群聊中发送消息。现在开发者已经拥有一个可以正常运行的机器人应用。 也可以在其中添加其他功能,参考 群机器人配置说明 了解更多。