Python 实战:实现外部群“入群欢迎语”自动推送

QiWe开放平台 · 个人名片

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

官方站点:www.qiweapi.com

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

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


在企业微信的私域运营中,及时响应进群动作非常重要。通过监听回调接口中的成员变更事件,我们可以实现比官方更灵活的欢迎逻辑。

1. 核心接口与字段解析

根据文档,我们需要关注两个环节:回调触发和消息发送。

回调事件字段(MemberChange 场景):

  • w_id: 当前登录的机器人账号 ID。
  • room_id: 发生变动的外部群 ID。
  • content: 消息内容(在成员入群事件中,这里通常包含入群者的信息)。
  • type: 消息类型。

发送消息接口字段(SendTextMsg):

  • w_id: 机器人账号 ID。
  • room_id: 接收消息的群 ID。
  • content: 消息文本内容。
  • at_list: 数组格式,用于 @ 指定成员。

2. Python 代码实现

我们将逻辑分为"识别入群"和"执行回复"两步。

Python 复制代码
import requests
import json

# 配置接口基础信息
API_BASE_URL = "http://127.0.0.1:8888" # 替换为你实际的服务地址
AUTH_TOKEN = "your_token"

def send_welcome_message(w_id, room_id, nickname):
    """
    执行发送欢迎语的操作
    """
    url = f"{API_BASE_URL}/api/SendTextMsg"
    
    # 构造文档要求的 Payload
    payload = {
        "w_id": w_id,
        "room_id": room_id,
        "content": f"欢迎新同学 @{nickname} 加入本群!\n进群请先查看群公告。",
        "at_list": [] # 如果有成员的wxid,可以填入实现强提醒
    }
    
    headers = {
        "Authorization": f"Bearer {AUTH_TOKEN}",
        "Content-Type": "application/json"
    }
    
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    return response.json()

# 模拟接收回调数据 (Callback Data)
def on_receive_callback(callback_data):
    # 严格匹配文档字段
    w_id = callback_data.get("w_id")
    room_id = callback_data.get("room_id")
    msg_type = callback_data.get("type")
    content = callback_data.get("content")

    # 逻辑:判断是否为群成员增加事件 (假设文档中该事件 type 为 10002)
    # 注意:实际 type 值请对照文档"消息类型定义"章节
    if msg_type == 10002: 
        print(f"检测到外部群 {room_id} 有新成员加入")
        
        # 从 content 中解析出新成员昵称 (根据文档实际返回格式处理)
        # 假设 content 内容为 "张三 顺着二维码加入了群聊"
        new_member_name = content.split(" ")[0] 
        
        # 调用发送接口
        result = send_welcome_message(w_id, room_id, new_member_name)
        print(f"欢迎语发送结果: {result}")

# 模拟一条入群回调数据
mock_data = {
    "w_id": "robot_01",
    "room_id": "2398472398@chatroom",
    "type": 10002,
    "content": "王小二 加入了群聊"
}

on_receive_callback(mock_data)

3. 技术要点拆解

  • w_id 的重要性 :在多账号矩阵(同时登录多个企业微信)时,必须指定 w_id,否则服务器不知道由哪个账号去发这条消息。
  • room_id 的唯一性 :外部群的 room_id 是持久化的,你可以将其存在数据库中,针对不同的群(如:技术交流群 vs 客户服务群)设置不同的欢迎语模板。
  • 字符串解析 :由于 RPA 接口返回的入群通知通常是系统文本,Python 开发者需要根据 content 里的固定格式(如"加入了群聊")用正则表达式或 split 函数提取出新人的昵称。

4. 常见问题:为什么发送失败?

如果你完全按照 doc.qiweapi.com 传参但失败了,请检查以下几点:

  1. JSON 格式 :确保 at_list 即使为空也要传空数组 []
  2. 账号状态 :检查该 w_id 对应的账号是否仍在群里。
  3. 转义字符content 里的换行请使用 \n

总结

通过严格对应文档字段,Python 脚本可以精准控制每一个机器人账号的行为。这种"监听+自动回复"的组合,是构建私域 SOP 的基础。

相关推荐
xcLeigh1 天前
IoTDB Python原生接口全攻略:从基础读写到高级实战
开发语言·数据库·python·api·iotdb·原生接口·读写数据
万邦科技Lafite3 天前
利用淘宝商品详情接口获取商品价格,监控商品价格浮动
数据库·api·开放api接口·淘宝开放接口
有味道的男人4 天前
抖音商品详情api接口
api
曲幽4 天前
FastAPI单元测试实战:别等上线被喷才后悔,TestClient用对了真香!
python·单元测试·pytest·api·fastapi·web·httpx·testclient·依赖项覆盖
云蝠呼叫大模型联络中心4 天前
医疗智能客服系统架构设计与云蝠VoiceAgent API集成实践
人工智能·系统架构·api·医疗·voiceagent·ai 客服选型·智能客服 2026
Swift社区4 天前
Stage 模型改变的不是生命周期,而是系统边界
api·stage
深念Y4 天前
Docker Desktop 版本与 IDEA 插件兼容性
docker·云原生·容器·api·idea·wsl
用户528739463345 天前
AI 简历优化工具,一键润色,突出优势,提升求职通过率
api
笒鬼鬼6 天前
【API接口】最新可用红果短剧接口
算法·api·笒鬼鬼·红果短剧·接口源码
SuperherRo6 天前
API攻防-接口类型&测试方法&端点提取&暴漏攻击&枚举规则&RESTful风格&GraphQL语法
api·restful·graphql