公司做业务时,客服部门每天总会收到大量重复率极高的问题,比如“怎么退款”、“发什么快递”、“营业时间是几点”。如果全靠人工去回复,不仅效率低下,员工也容易产生职业疲劳。今天我们来详细拆解如何利用企业微信的“客服 API”,搭建一个 7×24 小时在线的智能自动回复系统。
业务架构与交互流程

要实现客服自动回复,单靠群机器人是不够的,必须接入企业微信的微信客服应用

  1. 用户咨询:客户在微信里通过小程序或者搜索找到你们公司的企业微信客服,发送了一条咨询消息。

  2. 事件回调(Callback):企业微信的服务器会把这条消息打包,通过 POST 请求推送到你预先配置好的服务器后端接口上。

  3. 意图识别与回复:你的后端服务收到消息后,对内容进行解析。如果匹配到关键词(如“退款”),就直接生成标准答案;如果没有匹配,则转接人工。最后,通过调用企业微信的客服发消息接口将内容送达客户。

下面我们用 Node.js (Express 框架) 写一个接收并处理客服消息的完整后端逻辑。

完整代码实现(Node.js / Express)
const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');

const app = express();
app.use(bodyParser.json());

// 模拟从企业微信后台获取的 Access Token(实际项目中需要加缓存和定期刷新逻辑)
const ACCESS_TOKEN = "YOUR_WECHAT_ACCESS_TOKEN";

/**
 * 接收企业微信客服消息推送的回调接口
 */
app.post('/api/kf/callback', async (req, res) => {
    try {
        const eventData = req.body;
        console.log("收到企业微信客服推送事件:", JSON.stringify(eventData));

        // 判断消息类型,假设这里处理的是用户发来的文本消息
        if (eventData.msgtype === 'text') {
            const userContent = eventData.text.content.trim();
            const externalUserId = eventData.external_userid; // 客户的唯一标识
            const openKfId = eventData.open_kfid;             // 客服账号ID

            let replyText = "您好!感谢您的咨询,请问有什么可以帮您?";

            // 简单的关键词匹配规则引擎
            if (userContent.includes("退款") || userContent.includes("退货")) {
                replyText = "非常抱歉给您带来不好的体验。如需办理退款,请提供您的【订单编号】和【退款原因】,我们将立即为您优先处理。";
            } else if (userContent.includes("营业时间") || userContent.includes("上班")) {
                replyText = "我们的官方营业时间为:周一至周五上午 9:00 至下午 18:00。";
            }

            // 调用企业微信客服接口发送回复
            await sendKfReplyMessage(openKfId, externalUserId, replyText);
        }

        // 必须向企业微信快速返回 success,否则企业微信会认为服务异常并进行多次重试
        res.status(200).send('success');
    } catch (error) {
        console.error("处理客服回调消息出错:", error);
        res.status(500).send('fail');
    }
});

/**
 * 调用企业微信 API 发送客服消息
 */
async function sendKfReplyMessage(openKfId, externalUserId, content) {
    const url = `https://qyapi.weixin.qq.com/cgi-bin/kf/send_msg?access_token=${ACCESS_TOKEN}`;
    
    const payload = {
        touser: externalUserId,
        open_kfid: openKfId,
        msgtype: "text",
        text: {
            content: content
        }
    };

    try {
        const response = await axios.post(url, payload);
        if (response.data.errcode === 0) {
            console.log(`成功回复客户 [${externalUserId}]: ${content}`);
        } else {
            console.error(`发送客服消息失败:`, response.data);
        }
    } catch (error) {
        console.error("调用客服发送消息接口网络异常:", error);
    }
}

// 启动服务器监听 3000 端口
app.listen(3000, () => {
    console.log('企业微信客服机器人后端服务已在 3000 端口成功启动...');
});

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐