• 2023 年最新企业微信官方会话机器人开发详细教程(更新中)


    目标是开发一个简易机器人,能接收消息并作出回复。

    获取企业 ID

    企业信息页面链接地址:https://work.weixin.qq.com/wework_admin/frame#profile

    在这里插入图片描述

    自建企业微信机器人

    在这里插入图片描述

    配置机器人应用详情

    在这里插入图片描述

    功能配置

    在这里插入图片描述

    接收消息服务器配置

    配置消息服务器配置

    在这里插入图片描述

    配置环境变量

    获取 agentId 和 Secret 信息
    在这里插入图片描述

    创建 .env 配置文件配置企业微信机器人应用的配置信息

    corpId=
    corpSecret=
    agentId=
    
    • 1
    • 2
    • 3

    发送应用消息配置

    配置应用消息:https://developer.work.weixin.qq.com/document/path/90236

    请求方式POST(HTTPS)
    请求地址https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN

    机器人应用支持推送文本、图片、视频、文件、图文等类型。

    配置 POST 请求参数
    在这里插入图片描述
    config.js 配置

    const request = require('request')
    const { config } = require('dotenv')
    config()
    
    const corpId = process.env.corpId
    const corpSecret = process.env.corpSecret
    const agentId = parseInt(process.env.agentId)
    const toUser = '@all'
    
    const tokenUrl = `https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpId}&corpsecret=${corpSecret}`
    const sendMsgUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=";
    
    function getToken(success, error) {
    	request(tokenUrl, function(error, response, body) {
    		if (!error && response.statusCode == 200) {
    			var json = JSON.parse(body);
    			console.log(json)
    			success(json.access_token)
    		} else {
    			error('Token in error.')
    		}
    	})
    }
    
    function sendMessage(token, content) {
    	const requestData = {
    		touser: toUser,
    		msgtype: "text",
    		agentid: agentId,
    		safe: 0,
    		text: {
    			content: content
    		}
    	}
    
    	request({
    		url: `${sendMsgUrl}${token}`,
    		method: "POST",
    		json: true,
    		headers: {
    			"content-type": "application/json",
    		},
    		body: requestData
    	}, function(error, response, body) {
    		console.log(body)
    		if (!error && response.statusCode == 200) {}
    	});
    }
    
    
    function sendText(content) {
    	getToken((token) => {
    		sendMessage(token, content)
    	}, (error) => {
    		console.log(error)
    	})
    }
    
    module.exports = {
    	sendText,
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    定时发送任务

    npm 下载 node-schedule 定时任务模块

    npm install node-schedule
    
    • 1

    配置定时发送任务

    const alarmWechat = require('./config.js')
    const schedule = require('node-schedule')
    
    const scheduleTask = ()=> {
        schedule.scheduleJob('30 * * * * *',() =>{
            console.log('scheduleCronstyle:' + new Date());
            alarmWechat.sendText('testmessage')
        }); 
    }
    
    scheduleTask();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    开发者调试工具

    在这里插入图片描述

    群机器人配置

    下载安装 axios 库

    npm install axios
    
    • 1

    创建 .env 环境变量配置文件

    HOOKURL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=【密钥】
    
    • 1

    具体实现

    const axios = require("axios")
    const { config } = require("dotenv")
    config()
    
    let data = {
        msgtype: "text",
        text: {
            content: "helloworld"
        }
    }
    
    axios.post(hookurl, data, {
        headers: {
            "Content-Type": "application/json"
        }
    }).then(res => {
        console.log(res)
    }).catch(err => {
        console.log(err)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    【网络原理】- 网络层 , 数据链路层的简单介绍
    Jupyter杂症二:目录不显示或展示不全
    极限多标签学习之-FastXML运行和评价EUR-Lex4k数据集
    java项目-第143期ssm母婴用品网站_java毕业设计_计算机毕业设计
    vue基础知识
    运行时间监控:如何确保网络设备运行时间
    外汇天眼:真实记录,投资者在盗版MT4平台SCE Group上做交易的经历!
    【Unity3D】自动构建Android包时指定aab或apk以及设置sdk版本
    MVC三层架构
    【前端之旅】Axios看这一篇就够了
  • 原文地址:https://blog.csdn.net/qq_47452807/article/details/134360070