Python开发:外部群消息自动回复

QiWe开放平台 · 个人名片

API驱动企微 外部群 自动化,让开发更高效

官方站点:https://www.qiweapi.com

对接通道:进入官方站点联系客服

团队定位:企微生态深度服务,专注 API+RPA 融合技术方案

快速实现企微外部群消息自动回复,支持关键词触发、话术自定义、多群适配,无需官方接口,适配客户咨询响应、群规引导等高频场景,轻量化落地且易维护。本文精简拆解核心逻辑、代码实现与实操要点。


一、核心实现逻辑

核心逻辑:Python封装QiWe API→配置回复规则(关键词+话术)→实时监听外部群消息→匹配回复规则→自动发送回复消息,全程非侵入式,支持多群、多规则同步生效。

  • 规则配置:设置关键词与对应回复话术(支持多关键词对应同一话术、单关键词对应多话术随机发送);

  • 消息监听:通过API联动RPA,实时捕获外部群新消息,过滤系统消息、自身回复消息,避免误触发;

  • 自动回复:Python匹配消息与回复规则,匹配成功后,调用API模拟真人发送回复,控制发送频率规避风控。


二、核心回复规则与实操要点

  • 规则配置:区分精准触发(如"群规"对应群规话术)与模糊触发(如"咨询"对应咨询引导话术),支持按群配置专属规则;

  • 话术优化:同一关键词配置2-3套差异化话术,随机发送,降低同质化,规避企微风控;话术避免广告化、敏感词汇;

  • 频率控制:单个群每分钟自动回复不超过3条,同一用户连续提问间隔5秒再回复,避免高频发送触发风控;

  • 避误触发:过滤自身发送的回复消息、群内系统通知,仅响应群成员主动发送的消息,杜绝循环回复。


三、核心Python代码实现

python 复制代码
import requests
import json
import time
import hashlib
import random

# 1. 鉴权参数与回复规则配置
QIWE_CONFIG = {
    "appid": "xxx",
    "token": "xxx",
    "device_id": "xxx",
    "reply_groups": ["客户咨询群1", "产品交流群2"],  # 需自动回复的外部群
    # 回复规则:key=关键词,value=回复话术列表(随机发送)
    "reply_rules": {
        "群规": ["群规说明:1. 禁止广告;2. 文明交流;3. 咨询请回复「咨询+需求」", "请遵守群规,禁止广告、辱骂,感谢配合~"],
        "咨询": ["您好,请问有什么可以帮您?可详细说明需求哦", "收到您的咨询,稍后会有专人对接,也可直接回复需求细节"],
        "价格": ["您好,不同套餐价格不同,回复「套餐」获取详细报价", "价格需根据您的需求定制,麻烦说明具体需求,为您报价"]
    },
    "self_nickname": "自动回复助手"  # 自身昵称,用于过滤自身消息
}

# 2. 生成API请求签名
def generate_sign(appid, token):
    timestamp = str(int(time.time()))
    sign_str = f"{appid}{token}{timestamp}"
    sign = hashlib.md5(sign_str.encode("utf-8")).hexdigest()
    return timestamp, sign

# 3. 发送回复消息函数
def send_reply_msg(group_name, content):
    timestamp, sign = generate_sign(QIWE_CONFIG["appid"], QIWE_CONFIG["token"])
    headers = {
        "appid": QIWE_CONFIG["appid"],
        "token": QIWE_CONFIG["token"],
        "timestamp": timestamp,
        "sign": sign,
        "Content-Type": "application/json"
    }
    params = {
        "device_id": QIWE_CONFIG["device_id"],
        "group_name": group_name,
        "msg_type": "text",
        "content": {"text": content}
    }
    try:
        response = requests.post(
            url="",
            headers=headers,
            data=json.dumps(params),
            timeout=15
        )
        return response.json()
    except Exception as e:
        print(f"回复发送失败:{str(e)}")
        return {"code": 500}

# 4. 外部群消息自动回复核心函数
def auto_reply_external_group():
    while True:
        timestamp, sign = generate_sign(QIWE_CONFIG["appid"], QIWE_CONFIG["token"])
        headers = {
            "appid": QIWE_CONFIG["appid"],
            "token": QIWE_CONFIG["token"],
            "timestamp": timestamp,
            "sign": sign,
            "Content-Type": "application/json"
        }
        params = {
            "device_id": QIWE_CONFIG["device_id"],
            "group_list": QIWE_CONFIG["reply_groups"]
        }
        try:
            response = requests.post(
                url="",
                headers=headers,
                data=json.dumps(params),
                timeout=15
            )
            messages = response.json().get("data", [])
            for msg in messages:
                # 过滤自身消息和系统消息
                if msg["sender"] == QIWE_CONFIG["self_nickname"] or "系统通知" in msg["sender"]:
                    continue
                # 匹配回复规则
                reply_content = None
                for kw, texts in QIWE_CONFIG["reply_rules"].items():
                    if kw in msg["content"]:
                        reply_content = random.choice(texts)
                        break
                # 发送回复
                if reply_content:
                    send_reply_msg(msg["group_name"], reply_content)
                    time.sleep(5)  # 控制回复频率
        except Exception as e:
            print(f"自动回复异常:{str(e)}")
        time.sleep(1)  # 控制监听频率

# 启动自动回复任务
if __name__ == "__main__":
    print("外部群自动回复启动,开始监听消息...")
    auto_reply_external_group()

四、避坑与总结

  • 核心避坑:严格过滤自身消息,避免循环回复;控制回复频率,随机切换话术,规避企微风控;关键词避免敏感词,防止误触发;

  • 优化技巧:回复规则封装为配置项,无需修改代码即可新增/修改关键词和话术;多群回复时,按群分组执行,提升稳定性;

  • 总结:Python+QiWe API可轻量化实现外部群自动回复,无需官方接口,核心是做好回复规则配置与频率管控,快速落地客户响应、群规引导等需求,降低人工成本。

相关推荐
qinaoaini1 小时前
Spring中Aware的用法以及实现
java·数据库·spring
OceanBase数据库官方博客2 小时前
从分库分表到原生分布式:高德基于 OceanBase 的数据底座演进之路
数据库·oceanbase·分布式数据库
康小庄2 小时前
Java自旋锁与读写锁
java·开发语言·spring boot·python·spring·intellij-idea
探序基因2 小时前
knockTF2.0数据库-找上游转录因子
数据库·经验分享·笔记
Web极客码2 小时前
修复Discuz 迁移后页面全部变成“????”乱码的问题
数据库·mysql·discuz·mariadb
沙河板混2 小时前
@Mapper注解和@MapperScan注解
java·spring boot·spring
霖霖总总2 小时前
[小技巧71]从回滚到 MVCC:全面解析 MySQL Undo Log 机制
数据库·mysql
墨染青竹梦悠然2 小时前
基于Django+vue的单词学习平台
前端·vue.js·后端·python·django·毕业设计·毕设
知识即是力量ol2 小时前
口语八股:MySQL 核心原理系列(一):索引篇
java·数据库·mysql·八股·索引·面试技巧