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 的基础。

相关推荐
程序员佳佳1 天前
别再被GPT-5.3和Sora2吊打了!这篇OpenClaw+向量引擎实战,教你徒手捏个超级中转站(内附硬核配置)
人工智能·gpt·aigc·api·ai编程
企微支持12 天前
Python 实战:调用 RPA 接口实现外部群成员自动邀请
api
向量引擎2 天前
向量引擎OpenClaw配置实战:让GPT-5.2跑得比隔壁老王的特斯拉还快
gpt·aigc·api·ai编程·ai写作·key·agi
企微支持3 天前
并发控制与限流:Java 环境下高频调用企微外部群接口的深度实践
java·api
闲人编程3 天前
第三方API集成最佳实践:构建健壮的微服务连接器
服务器·spring·微服务·架构·接口·api·安全认证
API开发8 天前
apiSQL网关 for Docker 离线安装和升级教程
运维·docker·容器·api·api网关·apisql·替代graphql