房产中介的私域和其他行业不一样:客户从咨询到成交少则三个月、多则半年。这带来两个行业特有的浪费——一是经纪人流动性大,人一走,他微信里几百个客户就等于丢了;二是沉睡客户没人管,三个月前咨询过的客户最近有购房资格了,没人知道,等他自己找上门,可能已经跟别家签了。

本教程用个人微信机器人开发 API 搭一套房产客户跟进系统:新客需求自动采集 → 房源卡片精准推送 → 带看预约承接 → 沉睡客户定时唤醒。基于标准 HTTP + Webhook 接口实现(本文以 WTAPI 为例,Python 代码),所有接口路径与参数均已对照官方开发文档核实,可直接作为搭建文档使用。

一、链路设计:围绕"长周期"建四层

新客咨询(MsgType=1)
  → ① 需求采集:预算/区域/户型 → 标签落库
  → ② 房源匹配:forwardUrl 推送房源链接卡片
  → ③ 带看信号("想看看/什么时候方便看")→ 推经纪人承接
  → ④ 沉睡唤醒:30 天未互动客户 → 定向内容触达

核心思路:机器保证每个客户在 6 个月里都被"有理由地"联系着,经纪人只出现在客户主动升温的时刻。

二、承接层:回调骨架

官方开发文档回调规范:3 秒内响应、去重键 Appid + Data.NewMsgId、文本消息 MsgType=1。标准三段式(去重 → 入队 → 立即返回):

import json, queue
import requests
from flask import Flask, request

API_BASE = "https://wx.chuapi.com"
APP_ID = "YOUR_APPID"
HEADERS = {
    "X-finder-TOKEN": "YOUR_TOKEN",
    "Authorization": "Bearer YOUR_JWT",   # 部分环境需要
    "Content-Type": "application/json",
}

task_queue = queue.Queue()
_seen = set()

app = Flask(__name__)

@app.route("/wtapi/callback", methods=["POST"])
def callback():
    msg = request.get_json(silent=True) or {}
    if msg.get("TypeName") == "AddMsg":
        d = msg.get("Data", {})
        # 过滤本号发出的消息,避免机器人回复自己
        if d.get("FromUserName", {}).get("string") == msg.get("Wxid"):
            return "", 200
        key = f"{msg.get('Appid')}:{d.get('NewMsgId')}"
        if key not in _seen and d.get("MsgType") == 1:
            _seen.add(key)
            task_queue.put(msg)
    return "", 200

三、需求采集:三句话问出客户画像

新客首次咨询,机器人不急着推房源,先采需求——房产推荐错了方向,客户直接流失:

def on_new_client(wx_id):
    post_text(wx_id,
        "您好,为给您匹配合适的房源,先了解三点:\n"
        "1️⃣ 大概预算区间?(如 300-400 万)\n"
        "2️⃣ 考虑哪个区域?\n"
        "3️⃣ 几室户型?自住还是投资?")

def post_text(to_wxid, content):
    """官方发消息接口 postText,参数仅 appId/toWxid/content"""
    requests.post(
        f"{API_BASE}/finder/v2/api/message/postText",
        headers=HEADERS,
        data=json.dumps({"appId": APP_ID, "toWxid": to_wxid, "content": content}),
        timeout=10,
    )

客户回答后,LLM 抽取结构化字段(预算/区域/户型)存入本地 CRM,同时写微信侧标签:预算-300-400万、区域-XX区、阶段-已采需求。标签接口用官方 POST /finder/v2/api/label/modifyMemberList,注意文档强调的全量修改语义:已有标签 1、2 要新增 3,labelIds 必须传 "1,2,3",只传新标签会把旧的冲掉(先用 POST /finder/v2/api/label/list 拿 labelName/labelId 映射,本地维护客户标签集合,合并后全量提交)。

四、房源推送与带看承接

匹配到房源后,别甩裸链接。用官方链接卡片接口 POST /finder/v2/api/message/forwardUrl(参数 appId/toWxid/xml,xml 为链接卡片结构,以官方文档 message 模块为准)推送房源详情页——有封面图、有标题的卡片,打开率是裸链的几倍:

def push_house(wx_id, house):
    post_text(wx_id, f"按您 {house['budget']} 预算、{house['area']} 的需求,"
                     f"新上一套 {house['rooms']},单价 {house['price']},"
                     "比同小区挂牌低 5%,详情👇")
    send_card(wx_id, title=house["title"], url=house["url"])  # forwardUrl

客户回复"想看看"“什么时候能看”,立即转经纪人:发一句"已为您安排专属顾问约看,马上联系您",同时把客户画像、需求标签、聊天记录摘要推到门店群。带看是房产唯一的成交前置动作,机器到此为止。

五、沉睡唤醒:本篇的核心竞争力

30 天未互动的客户进入唤醒池。唤醒不是群发广告,是带着客户标签的定向内容——他关心 XX 区,就发 XX 区的新房源或成交行情:

def wakeup_task():
    # 每日定时任务:捞 30 天未互动客户,按标签定向触达
    for client in db.get_sleeping_clients(days=30):
        content = build_wakeup_content(client.tags)  # 按标签生成定向话术
        post_text(client.wx_id, content)
        time.sleep(INTERVAL)  # 串行发送,控制频率

两个工程要点:

  1. 频率红线:同一客户每月自动触达不超过 2 次,发送串行执行。唤醒的本质是"让他记得你",不是"让他烦你";
  2. 客户池定期盘点:经纪人离职时,用官方接口 POST /finder/v2/api/contacts/fetchContactsList(body 仅 {"appId"})拉取该实例好友列表,与 CRM 比对,确保客户资产在公司系统里而不是个人微信里——这一条直接解决开头说的"人走客户丢"。

六、调试与上线

调试环境:WTAPI 开发文档站 weiti.apifox.cn 提供 7 天接口调用权限,后台附带 Demo 示例可供本地调试,本文所有接口路径与字段以文档实时内容为准。建议先在控制台「微信实例」扫码拿 appId,用 toWxid=filehelper(文件传输助手)自测推送链路,再接真实客户。

上线前三个提醒:

  1. 房源话术过合规:“绝版”“稳涨”"学区房 guarantee 入学"这类词进黑名单,房源描述以实际挂牌信息为准;
  2. 唤醒内容必须有信息增量(新房源/真实成交行情/政策变动),空问候式唤醒等于骚扰;
  3. 新实例先养后接:官方文档提示新设备部分功能有 1-3 天限制期,刚登录先低频跑几天。

合规声明:本文自动化能力仅用于客户主动咨询后的服务响应与存量客户维护,请遵守微信平台运营规范与房产中介行业监管要求,不使用任何非官方破解协议,不进行骚扰式批量营销。

Logo

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

更多推荐