首页 / 博客 / 场景·私域·运营

保险代理人微信展业机器人:获客、答疑与续期提醒全流程实现

分类:场景·私域·运营 · 标签:保险、微信展业、微信机器人

前言

保险代理人的日常工作高度依赖微信:拉新客户、发产品介绍、回答投保问题、定期发续期提醒。然而纯手工操作效率极低——一个代理人平均要同时跟进数十到数百位潜在客户,每天光是复制粘贴话术就占掉大量时间,还容易漏跟客户导致流失。

随着 HTTP 接口技术的普及,现在完全可以用编程方式接管微信账号,构建一套"展业机器人":自动推送、智能答疑、精准提醒,解放代理人双手。本文从业务拆解出发,逐步讲清楚如何用 Python + 微信 REST 接口实现一套完整的保险展业自动化系统。


一、保险展业的核心业务场景拆解

在动手写代码之前,先把业务逻辑理清楚,后续的技术选型和模块划分才有根基。

1.1 获客阶段

保险代理人的获客渠道通常是:朋友圈曝光 → 好友添加 → 初次沟通 → 发送产品介绍。机器人要介入的节点包括:

1.2 答疑阶段

客户在购买保险前通常有大量问题:等待期多久?能否报销自费药?有没有健康告知要求?这类问题重复度高,非常适合用规则引擎或 LLM 自动回复。

机器人要实现:

1.3 续期提醒阶段

已投保客户的续期提醒是代理人必做的维护动作,但手动管理几百份保单日期几乎不可能。机器人可以:


二、系统架构设计

整个展业机器人可以拆成四个模块:

┌─────────────────────────────────────────────┐
│              保险展业机器人                   │
├──────────────┬──────────────┬───────────────┤
│  消息收发层   │   业务逻辑层  │   数据存储层   │
│  (HTTP API)  │  (Python)   │  (SQLite/CSV) │
├──────────────┴──────────────┴───────────────┤
│              调度层 (APScheduler)             │
└─────────────────────────────────────────────┘

三、环境搭建与初始化

3.1 依赖安装

bashpip install requests flask apscheduler sqlite3

3.2 配置占位符

python# config.py
BASE    = "https://你的接口域名"   # 注册后在官方文档获取
TOKEN   = "你的Token"
APPID   = "你的appId"
HEADERS = {"token": TOKEN}         # 鉴权字段名以官方文档为准

# 代码为示例,具体接口/字段以官方文档为准

3.3 登录与在线维持

首次使用需要扫码登录,拿到 appId 后后续所有接口都用这个 ID 标识设备。

pythonimport requests

def get_qrcode():
    """获取登录二维码"""
    url = f"{BASE}/login/getLoginQrCode"
    resp = requests.post(url, headers=HEADERS, json={})
    data = resp.json()
    if data["ret"] == 200:
        # data["data"]["qrCodeUrl"] 是二维码图片地址
        return data["data"]
    raise RuntimeError(f"获取二维码失败: {data}")

def check_login(uuid):
    """轮询登录状态"""
    url = f"{BASE}/login/checkLogin"
    resp = requests.post(url, headers=HEADERS, json={"uuid": uuid})
    return resp.json()

def check_online():
    """检查当前账号是否在线"""
    url = f"{BASE}/login/checkOnline"
    resp = requests.post(url, headers=HEADERS, json={"appId": APPID})
    return resp.json()["data"]["isOnline"]

四、获客模块:自动通过好友 + 欢迎语

4.1 设置消息回调

所有入站消息(好友申请、文字、图片等)都通过回调接收。需要先注册回调地址:

pythondef set_callback(callback_url: str):
    """注册消息回调地址,需公网可达"""
    url = f"{BASE}/tools/setCallback"
    resp = requests.post(url, headers=HEADERS, json={
        "appId": APPID,
        "token": TOKEN,
        "callbackUrl": callback_url
    })
    return resp.json()

回调地址要能公网访问(本地开发可用 ngrok),并且收到 POST 后必须返回 HTTP 200,否则平台会重试。

4.2 Flask 回调服务

pythonfrom flask import Flask, request, jsonify
import json

app = Flask(__name__)

@app.route("/wechat_callback", methods=["POST"])
def wechat_callback():
    data = request.json
    msg_type = data.get("type")
    
    if msg_type == 37:          # 好友申请
        handle_friend_request(data)
    elif msg_type == 1:         # 文字消息
        handle_text_message(data)
    
    return jsonify({"code": 200})

def handle_friend_request(data):
    """自动通过好友申请并发送欢迎语"""
    from_wxid = data["fromWxid"]
    # 通过申请(具体接口字段以官方文档为准)
    requests.post(f"{BASE}/contacts/addContacts", headers=HEADERS, json={
        "appId": APPID,
        "wxid": from_wxid,
        "type": 1   # 1=通过申请
    })
    # 延迟2秒后发欢迎语,避免太机械
    import time
    time.sleep(2)
    send_welcome(from_wxid)

4.3 发送欢迎语

pythonWELCOME_MSG = """您好,我是[代理人姓名],专注保险规划10年+。
添加成功后可直接问我:
📋 想了解哪类保险(重疾/医疗/寿险/年金)
🎂 被保人年龄和健康情况
💰 预算范围

我会为您匹配最合适的方案,回复"方案"即可开始。"""

def send_welcome(to_wxid: str):
    requests.post(f"{BASE}/message/postText", headers=HEADERS, json={
        "appId": APPID,
        "toWxid": to_wxid,
        "content": WELCOME_MSG
    })

五、答疑模块:FAQ 关键词匹配 + 转人工

5.1 FAQ 库设计

用 Python 字典存储关键词到答案的映射,实际项目可改用数据库或配置文件:

pythonFAQ = {
    "等待期": "大多数重疾险等待期为90-180天,意外险无等待期。具体以保单条款为准。",
    "健康告知": "投保前需如实填写健康告知,常见问询包括:近5年内是否患过高血压、糖尿病、肿瘤等。如有疑问请直接咨询我。",
    "报销": "普通医疗险报销住院及门诊费用(视条款),百万医疗险通常赔付扣除免赔额后合规医疗费用的100%。",
    "续期": "保费续期一般在生效周年日前后30天内缴纳,逾期会有宽限期(通常60天),超期保单失效需复效。",
    "理赔": "理赔需提交:理赔申请书、诊断证明、住院病历、费用发票等。我可以帮您整理材料清单,请告知险种。",
    "方案": "好的,请告诉我:①被保人年龄 ②是否有既往症 ③预算(年缴)。我来为您匹配产品。",
}

ESCALATE_KEYWORDS = ["投诉", "退保", "骗", "假"]  # 触发转人工
AGENT_WXID = "代理人自己的微信ID"   # 转人工通知目标

5.2 消息处理逻辑

pythondef handle_text_message(data):
    from_wxid = data["fromWxid"]
    content    = data.get("content", "")
    
    # 检查是否需要转人工
    for kw in ESCALATE_KEYWORDS:
        if kw in content:
            escalate_to_agent(from_wxid, content)
            return
    
    # FAQ 匹配
    for kw, answer in FAQ.items():
        if kw in content:
            requests.post(f"{BASE}/message/postText", headers=HEADERS, json={
                "appId": APPID,
                "toWxid": from_wxid,
                "content": answer
            })
            return
    
    # 无匹配,发兜底话术
    requests.post(f"{BASE}/message/postText", headers=HEADERS, json={
        "appId": APPID,
        "toWxid": from_wxid,
        "content": "感谢您的提问,我已收到,稍后为您详细解答。如需快速回复请直接发送关键词:重疾险 / 医疗险 / 理赔 / 方案"
    })

def escalate_to_agent(client_wxid: str, content: str):
    """通知代理人介入处理"""
    notice = f"[转人工提醒]\n客户: {client_wxid}\n消息: {content}\n请尽快介入处理。"
    requests.post(f"{BASE}/message/postText", headers=HEADERS, json={
        "appId": APPID,
        "toWxid": AGENT_WXID,
        "content": notice
    })

六、续期提醒模块:基于保单数据库的定时推送

6.1 保单数据库初始化

pythonimport sqlite3
from datetime import datetime, timedelta

def init_db():
    conn = sqlite3.connect("policies.db")
    conn.execute("""
        CREATE TABLE IF NOT EXISTS policies (
            id          INTEGER PRIMARY KEY AUTOINCREMENT,
            client_wxid TEXT NOT NULL,
            client_name TEXT,
            policy_no   TEXT,
            product     TEXT,
            renew_date  DATE,
            reminded    INTEGER DEFAULT 0   -- 位掩码:1=30天 2=15天 4=7天 8=3天
        )
    """)
    conn.commit()
    conn.close()

6.2 续期提醒调度

pythonfrom apscheduler.schedulers.background import BackgroundScheduler

REMIND_DAYS = [30, 15, 7, 3]
BIT_MAP     = {30: 1, 15: 2, 7: 4, 3: 8}

def check_renewals():
    """每天早上09:00执行,检查需要提醒的保单"""
    conn   = sqlite3.connect("policies.db")
    cursor = conn.cursor()
    today  = datetime.today().date()
    
    for days in REMIND_DAYS:
        target_date = today + timedelta(days=days)
        bit         = BIT_MAP[days]
        
        cursor.execute(
            "SELECT client_wxid, client_name, policy_no, product, renew_date, reminded "
            "FROM policies WHERE renew_date = ? AND (reminded & ?) = 0",
            (target_date.isoformat(), bit)
        )
        rows = cursor.fetchall()
        
        for wxid, name, policy_no, product, renew_date, reminded in rows:
            send_renew_reminder(wxid, name, policy_no, product, renew_date, days)
            # 标记已提醒
            cursor.execute(
                "UPDATE policies SET reminded = reminded | ? WHERE client_wxid = ? AND policy_no = ?",
                (bit, wxid, policy_no)
            )
    
    conn.commit()
    conn.close()

def send_renew_reminder(wxid, name, policy_no, product, renew_date, days_left):
    msg = (
        f"[续期提醒] {name} 您好,\n"
        f"您的「{product}」保单(编号:{policy_no})将于 {renew_date} 到期,"
        f"还剩 {days_left} 天。\n"
        f"请确认续期缴费,保障不断档。如有疑问欢迎随时联系我。"
    )
    requests.post(f"{BASE}/message/postText", headers=HEADERS, json={
        "appId": APPID,
        "toWxid": wxid,
        "content": msg
    })

def start_scheduler():
    scheduler = BackgroundScheduler()
    scheduler.add_job(check_renewals, "cron", hour=9, minute=0)
    scheduler.start()
    return scheduler

七、朋友圈定投:产品种草与权益科普

对于潜在客户,朋友圈内容曝光是重要的"养客"手段。机器人可以定时发布科普内容,保持存在感。

需注意:新账号上线后要等至少 1 天再操作朋友圈;获取他人动态频率不超过 200 次/天;点赞评论之间加随机间隔(5-20 秒),避免触发风控。

pythonimport time
import random

MOMENTS_CONTENT = [
    "【重疾险小知识】重疾险赔付的是确诊金,不是报销医疗费,两者定位不同,建议搭配配置。",
    "【医疗险提醒】很多百万医疗险有免赔额(通常1万元),日常小病报销靠的是门诊医疗附加险。",
    "【年金险适合谁】对强制储蓄有需求、希望锁定利率、或规划子女教育金/退休金的人群。",
]

def post_moment(text: str):
    """发布文字朋友圈"""
    resp = requests.post(f"{BASE}/sns/sendTextSns", headers=HEADERS, json={
        "appId": APPID,
        "content": text
    })
    return resp.json()

def daily_moment_post():
    """每日选一条朋友圈内容发布"""
    from datetime import date
    idx     = date.today().toordinal() % len(MOMENTS_CONTENT)
    content = MOMENTS_CONTENT[idx]
    result  = post_moment(content)
    print(f"[朋友圈] 发布结果: {result}")

八、接口调用频率与风控建议

保险展业场景下账号安全尤为重要,频繁操作极易触发微信风控。以下是经过验证的合理频率参考:

操作类型建议频率注意事项
被动通过好友≤200 人/天超出易触发账号审查
主动添加好友24h 内 5-15 个每 2h 不超过 5 个,随机间隔
发文字消息无硬性上限避免群发模板,内容需个性化
朋友圈发布1-3 条/天新号上线 1 天后再操作
获取好友列表低频,按需不做高频轮询
点赞/评论随机间隔 5-20s避免机械等时间间隔

此外建议:

  1. 新账号上线后先在线 3 天,再启动自动加好友,降低封号风险
  2. 每条消息之间加 2-5 秒随机延迟,模拟人工操作节奏
  3. 将客户分组,分批次推送,不要同一时刻向全部好友群发

九、完整入口与部署

python# main.py
import threading
from flask import Flask

def main():
    init_db()
    
    # 检查在线状态
    if not check_online():
        print("账号不在线,请先扫码登录")
        qr = get_qrcode()
        print(f"二维码地址: {qr.get('qrCodeUrl', '见接口返回')}")
        return
    
    # 设置回调(替换为你的公网地址)
    set_callback("https://你的服务器域名/wechat_callback")
    
    # 启动定时任务
    scheduler = start_scheduler()
    # 朋友圈每天上午10点发布
    scheduler.add_job(daily_moment_post, "cron", hour=10, minute=0)
    
    # 启动 Flask 回调服务
    app.run(host="0.0.0.0", port=5000)

if __name__ == "__main__":
    main()

WechatApi 提供扫码登录、消息收发、好友与群管理等 REST 接口,HTTP 调用即可,适合像本文这类需要长期运行、多功能集成的展业机器人场景。

部署时推荐使用云服务器(阿里云/腾讯云等),保证回调地址公网可达,并用 supervisorsystemd 管理进程,实现开机自启和崩溃重启。

部署上线前,建议先在测试账号上跑通全流程:手动触发一次好友申请、回复一条消息、插入一条即将到期的保单记录并观察提醒是否准时发出。排查时重点检查回调地址是否可达、Token 是否过期、数据库路径是否正确。常见坑:服务器防火墙未放行 5000 端口导致回调收不到消息;APScheduler 在 Flask 开发模式下可能因 Reloader 重启调度器,生产环境应关闭 debug 模式(app.run(debug=False))。


十、实操注意事项

10.1 账号准备

建议使用专门注册的展业微信号,不要与个人日常账号混用。原因有三:一是自动化操作存在封号风险,独立账号被限制不影响日常社交;二是展业账号可以系统性维护客户标签和备注,数据更整洁;三是合规层面,展业行为与私人聊天分离,出现纠纷时记录更清晰。

10.2 话术合规

保险营销受《保险法》及监管规定约束,自动回复的内容需特别注意:不得夸大保险责任、不得承诺保证收益(年金险除外且措辞要准确)、不得发送未经审核的宣传材料。FAQ 库内容建议由合规部门审核后上线,并定期随产品条款更新同步修订。

10.3 客户分层运营

并非所有客户都适合高频触达。建议在数据库中增加 stage 字段(如 lead/prospect/client/vip),根据阶段设置不同的触达频率和话术风格:潜在客户每周 1-2 次科普推送;已投保客户以服务通知为主;高净值客户降低自动化比例、增加人工个性化跟进。

10.4 异常监控

机器人长期运行必然遇到账号掉线、接口超时等情况。建议增加简单的健康检查机制:每小时调用一次在线状态接口,掉线时通过邮件或企业微信机器人通知代理人手动重新扫码。对于消息发送失败的情况,记录到日志表并在下次检查时重试,避免客户因接口抖动而漏收重要提醒。


总结

本文从保险代理人的三个核心场景(获客、答疑、续期提醒)出发,逐模块实现了一套基于 Python + HTTP 接口的微信展业机器人,涵盖回调监听、FAQ 自动回复、保单数据库驱动的定时提醒以及朋友圈定投。额外补充了部署调试技巧、账号合规准备、客户分层策略和异常监控建议,帮助开发者在实际落地时少走弯路。代码中所有接口地址和字段均为示例占位,实际开发请以官方文档为准。

想动手试试?

WechatApi 提供扫码登录、消息收发、好友与群管理等 REST 接口,注册后几分钟跑通。

立即免费注册查看开发文档

相关产品页

🔗 微信机器人开发(产品页)🔗 微信群管理机器人(产品页)🔗 微信API接口对接(产品页)

相关文章

开源微信框架 vs 托管微信API,到底怎么选微信 SCRM 系统怎么搭建?技术方案详解私域流量自动化运营怎么做(微信侧实战)微信自动化营销获客实战(合规版)
© 2025 WechatApi · 企业级微信智能机器人接入平台
官网价格帮助文档博客
苏ICP备2024128799号 · 苏ICP备2023038368号