发送应用消息
企业微信开放了消息发送接口,企业可以使用这些接口让自定义应用与企业微信后台或用户间进行双向通信。
通过消息推送,企业应用可以主动向成员、部门、标签等发送文本、图片、图文、文件以及 markdown 格式的消息,在***的企业微信版本中,可以发送展示功能更加丰富的模板卡片消息。
通过本教程,你讲了解以下内容:
在开始本教程之前,请确保你已经完成了以下准备工作:
查看官方 代码示例 ,打开命令行工具,执行以下命令,下载服务端代码。
git clone https://github.com/WecomTeam/InnerAppCodeSample.git
打开下载的代码工程,在根目录将 main.config.demo.js 复制一份到 main.config.js 文件中,并根据实际项目情况补充以下配置信息:
module.exports = {// 企业信息corp_id: "",// 应用信息agent_id: "",app_secret:""}
提示:该文件配置的信息极其重要,切勿泄漏。
在已下载的示例代码项目根目录下,执行以下代码完成依赖安装:
npm install
执行以下命令,启动后端服务:
npm run buildnpm run start
在浏览器中访问 http://localhost:3000,打开页面。
根据根据教程 一:如何创建企业内部应用内容的指引,在企业管理后台创建内部应用,在应用创建成功后依据教程 二:如何获取应用接口凭证 的步骤,得到对应的 agent_id 和 secret。
通过向企业微信消息推送接口 POST 对应的消息结构体,即可实现应用消息的推送。
请求地址
https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
文本、图文消息、markdown类型的消息仅需要直接在业务后台服务器直接向企业微信消息推送接口发送对应数据请求即可。
在示例代码的 /server/messageController.js 文件中展示了向消息推送 Api 接口发送消息数据体的基本流程:
router.post('/message/send', async function (req, res, next) {// 从前端请求中获取对应的参数let {form:form_parames} = req.body || {};// 将 agentid 拼入请求的结构体中let request_data= {...form_parames,agentid:Config.agent_id,};request_data.safe = form_parames.safe ? '1' : '0';// 获取 Access Tokenconst access_token = await AccessToken.getAppToken();// 向消息推送的 Api 发送对应的数据结构体const {data} =await axios.post('https://qyapi.weixin.qq.com/cgi-bin/message/send', request_data,{params: {access_token}});// 返回请求的结果res.send(data);});
当要推送 图片、语音、视频、文件等媒体类型的消息时,需要将对应的文件通过临时素材的接口上传至企业微信临时素材库,请参考 上传临时素材。
在示例代码的 /server/mediaController.js 文件中,展示了通过企业微信临时素材接口上传临时素材的基本流程:
router.post('/media/upload', async function (req, res, next) {let { media: file } = req.files || {};console.log(req.files);let { type } = req.body || {};const access_token = await AccessToken.getAppToken();// 组件一个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/media/upload',form,{params: {access_token,type},headers: {"Content-Type": "multipart/form-data"},});res.send(data);});
在本节课程中,我们了解了如何通过企业内部应用的应用消息推送接口向成员、部门以及标签推送应用消息,可以参考文档 消息推送了解更多关于消息推送相关的信息。