很多企业微信机器人刚开始做的时候,逻辑其实很简单:

用户发一句话 → 判断关键词 → 自动回复。

但真正接入业务以后,很快就会遇到问题:

同一个意思,用户可能有很多种说法;多个关键词同时出现时,到底回复哪一条;机器人已经回复过了,用户再次发送相同内容,要不要继续回复?

所以,企业微信机器人真正难的地方,不是“能不能回复”,而是关键词规则怎么设计。

一、先把关键词匹配规则定下来

最简单的是直接判断文本里有没有关键词,例如:

if "价格" in content:
    reply = "您好,请问您想了解哪一项服务?"

这种方式可以用于简单场景,但业务复杂以后建议把规则独立出来。

常见的匹配方式有:

  • 完全匹配:用户输入必须和关键词一致

  • 包含匹配:消息中包含关键词即可

  • 多个关键词:同时满足多个条件

  • 关键词优先级:多个规则命中时,优先执行高优先级

  • 正则匹配:适合比较复杂的文本规则

例如:

“价格”
“多少钱”
“怎么收费”
“套餐价格”

都可以归到“价格咨询”这个规则下面。

这样后面修改回复内容时,就不用一个个改。

二、关键词规则最好做成配置

不要把大量关键词全部写死在代码里。

可以单独维护一个规则表:

优先级关键词回复内容
10价格、收费、多少钱价格相关回复
20API、接口、开发API相关回复
30技术、对接、调用技术相关回复
40人工、客服、联系转人工

实际处理时:

收到消息 → 文本清洗 → 匹配关键词 → 按优先级筛选 → 执行回复 → 记录结果

这样后期增加规则会方便很多。

三、消息内容先做一次标准化

用户输入的内容可能有空格、大小写或者特殊字符。

例如:

API怎么调用?
api 怎么调用
API  怎么调用

如果直接判断,很容易出现同一个问题匹配不到的情况。

可以先统一处理:

content = content.strip().lower()
content = content.replace(" ", "")

然后再进行关键词匹配。

例如:

keywords = ["api", "接口", "开发"]

if any(word in content for word in keywords):
    reply = "可以进一步了解接口调用方式。"

这种处理方式比较简单,但对于企业微信接口调用这类场景已经能解决不少基础问题。

四、多个关键词同时命中怎么办?

这是自动回复比较容易出问题的地方。

比如用户发送:

API接口多少钱?

同时包含:

  • API

  • 接口

  • 多少钱

如果三个规则都执行,就可能连续回复三条消息。

所以需要增加规则优先级或者命中后停止机制

例如:

rules = [
    {
        "priority": 10,
        "keywords": ["api", "接口", "多少钱"],
        "reply": "这里属于API价格咨询"
    },
    {
        "priority": 20,
        "keywords": ["api", "接口"],
        "reply": "这里属于API技术咨询"
    }
]

先按照优先级排序:

用户消息 → 匹配规则 → 优先级排序 → 选择第一条 → 回复

这样可以避免一条消息触发多个自动回复。

五、企业微信自动化不要只判断关键词

实际项目中,关键词通常只是一个触发条件。

例如客户发送:

查一下我的订单

机器人不能只回复固定文本,而是可以进一步调用业务系统。

流程可以设计成:

用户消息 → 关键词识别 → 获取用户信息 → 查询业务系统 → 生成回复 → 企业微信消息推送

这时候企业微信自动化就不只是简单的“关键词回复”,而是把消息和业务逻辑连接起来。

例如:

if "订单" in content:
    order = get_order(user_id)

    if order:
        reply = f"您的订单状态:{order['status']}"
    else:
        reply = "暂时没有查询到相关订单。"

这种方式比较适合客服、订单查询、售后咨询等场景。

六、还要考虑机器人重复回复

自动回复还有一个经常被忽略的问题:

机器人自己发出去的消息,会不会再次被系统识别?

如果没有做好判断,就可能出现:

机器人回复 → 回调收到消息 → 再次匹配 → 再回复 → 无限循环。

所以在企业微信RPA或者接口自动化场景中,需要区分:

  • 用户消息

  • 机器人消息

  • 系统消息

  • 回调事件

只有符合条件的消息才进入关键词处理。

例如:

if message_from == "robot":
    return

if message_type != "text":
    return

handle_keyword(content)

具体判断条件需要根据实际接口返回的数据结构进行调整。

七、什么时候适合用关键词,什么时候应该转人工?

关键词自动回复并不是所有问题都适合处理。

比较适合:

  • 常见问题

  • 固定流程

  • 产品资料

  • 简单查询

  • 常用指令

比较复杂的问题,可以设置人工兜底。

例如:

用户发送消息
      ↓
关键词匹配
      ↓
是否命中?
   → 是 → 自动回复
   → 否 → 转人工

也可以设置:

连续3次没有匹配成功 → 转人工
用户发送“人工” → 直接转人工

这样比单纯堆关键词更实用。

八、实际开发时建议把规则和接口分开

如果项目后面还需要做企业微信API开发,建议不要把“关键词判断”和“消息发送”全部写在一个文件里。

可以简单拆成:

消息接收模块
    ↓
消息清洗模块
    ↓
关键词规则模块
    ↓
业务处理模块
    ↓
企业微信接口
    ↓
消息发送

关键词规则负责“判断回复什么”,接口模块负责“怎么发送”。

以后增加新的企业微信开放接口或者修改自动化逻辑时,不需要把整个机器人重新改一遍。

九、总结

一个稳定的关键词自动回复机器人,核心并不是关键词越多越好,而是规则要清楚。

重点可以放在这几个地方:

  1. 关键词统一管理

  2. 消息内容标准化

  3. 设置关键词优先级

  4. 避免一条消息重复触发

  5. 区分用户消息和机器人消息

  6. 复杂问题设置人工兜底

  7. 关键词判断和接口调用分开

  8. 保留日志方便排查

如果后面还需要继续扩展,可以在关键词的基础上增加用户身份、群聊场景、业务状态等条件,让企业微信机器人从简单的自动回复逐步变成完整的企业微信二次开发应用。

企业微信 API 文档:
查看企业微信 API 开发文档

Logo

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

更多推荐