当前位置:网站首页 >  攻略

Python手把手搭建自动话术引流留存实战系统

时间:2026年06月07日 02:16:45 来源:易频IT社区

环境准备与依赖安装

在开始构建系统之前,我们需要确保本地环境已经配置好Python运行环境。本系统基于Python 3.8+开发,使用轻量级Web框架Flask来接收消息,利用SQLite进行数据存储,无需额外安装数据库服务,确保零门槛快速启动。

在终端中执行以下命令安装核心依赖库Flask:

pip install flask

安装完成后,建议新建一个项目目录,例如chat_system,并在其中创建一个名为app.py的主程序文件。接下来的所有代码都将在这个文件中编写。

数据库设计与留存逻辑实现

留存的核心在于将用户数据结构化存储。我们将使用SQLite数据库创建两张表:users表用于存储用户基本信息及标签,message_logs表用于记录交互历史,便于后续分析话术效果。

请在app.py中写入以下数据库初始化代码。这段代码会在程序启动时自动检测数据库文件是否存在,如果不存在则自动创建表结构。

```python import sqlite3 import datetime from flask import Flask, request, jsonify app = Flask(__name__) DB_NAME = "retention.db" def init_db(): with sqlite3.connect(DB_NAME) as conn: cursor = conn.cursor() 创建用户表,用于留存用户信息和打标签 cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id user_id TEXT PRIMARY KEY, nickname TEXT, tag TEXT, source TEXT, last_active_time TEXT, create_time TEXT ) ''') 创建消息日志表,用于记录引流交互细节 cursor.execute(''' CREATE TABLE IF NOT EXISTS message_logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id TEXT, message_content TEXT, reply_content TEXT, timestamp TEXT ) ''') conn.commit() ```

话术配置与引流规则定义

为了实现精准引流,我们需要建立一套关键词匹配机制。这里使用Python字典来配置话术规则。当用户的消息包含特定关键词时,系统自动触发对应的回复。回复内容中包含引流链接或联系方式,实现“话术+引流”的闭环。

app.py中继续添加以下配置代码。你可以根据实际业务需求修改KEYWORD_RULES字典中的内容。

```python 定义话术规则:关键词 -> 回复内容 + 用户标签 KEYWORD_RULES = { "价格": { "reply": "我们的全套课程仅需99元,点击链接即可查看详情:http://your-domain.com/course", "tag": "potential_price_sensitive" }, "教程": { "reply": "这是为您准备的新手入门教程,加微信TechMaster领取完整PDF。", "tag": "potential_tutorial_seeker" }, "加群": { "reply": "群聊二维码已发送,请长按识别加入技术交流群。", "tag": "community_user" } } 默认回复,当未匹配到关键词时使用 DEFAULT_REPLY = "您好,请问是想了解课程价格还是领取技术教程?" ```

核心业务逻辑编写

这一部分是系统的引擎。我们需要编写一个处理函数,该函数接收用户ID和消息内容,执行三个步骤:匹配话术更新用户标签(留存)记录日志

请将以下核心逻辑函数添加到app.py中:

```python def handle_message(user_id, nickname, message): current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") reply = DEFAULT_REPLY matched_tag = "default_user" 1. 话术匹配逻辑 for keyword, action in KEYWORD_RULES.items(): if keyword in message: reply = action["reply"] matched_tag = action["tag"] break 2. 留存逻辑:更新或插入用户信息 with sqlite3.connect(DB_NAME) as conn: cursor = conn.cursor() try: cursor.execute(''' INSERT INTO users (user_id, nickname, tag, source, last_active_time, create_time) VALUES (?, ?, ?, ?, ?, ?) ''', (user_id, nickname, matched_tag, "api_input", current_time, current_time)) except sqlite3.IntegrityError: 如果用户已存在,更新标签和最后活跃时间 cursor.execute(''' UPDATE users SET tag = ?, last_active_time = ? WHERE user_id = ? ''', (matched_tag, current_time, user_id)) 3. 记录交互日志 cursor.execute(''' INSERT INTO message_logs (user_id, message_content, reply_content, timestamp) VALUES (?, ?, ?, ?) ''', (user_id, message, reply, current_time)) conn.commit() return reply ```

API接口搭建与运行

为了让外部系统(如微信公众号、钉钉机器人或测试脚本)能够调用我们的逻辑,我们需要暴露一个HTTP接口。这里使用Flask创建一个POST接口。

Python手把手搭建自动话术引流留存实战系统

app.py的最后添加路由配置和启动命令:

```python @app.route('/api/chat', methods=['POST']) def chat(): 获取JSON数据 data = request.get_json() user_id = data.get('user_id', 'unknown') nickname = data.get('nickname', 'guest') message = data.get('message', '') if not message: return jsonify({"error": "Message content is required"}), 400 调用核心处理逻辑 reply_content = handle_message(user_id, nickname, message) return jsonify({ "status": "success", "reply": reply_content, "user_tag": "updated_in_db" }) if __name__ == '__main__': init_db() 启动时初始化数据库 app.run(port=5000, debug=True) ``>

系统测试与验证

现在,所有代码已经编写完毕。我们需要验证系统是否能正确进行话术匹配和数据留存。

第一步:启动服务
在终端中运行:

python app.py

看到输出Running on http://127.0.0.1:5000即表示服务启动成功。

第二步:模拟用户发送消息(测试引流)
我们需要发送包含关键词“价格”的消息。打开新的终端窗口,使用curl命令进行测试:

```bash curl -X POST http://127.0.0.1:5000/api/chat \ -H "Content-Type: application/json" \ -d '{"user_id": "10086", "nickname": "张三", "message": "我想咨询一下课程的价格"}' ```

预期返回结果中应包含回复内容:“我们的全套课程仅需99元...”。

第三步:模拟用户发送消息(测试留存)
再次发送一条不包含关键词的消息,测试默认回复:

```bash curl -X POST http://127.0.0.1:5000/api/chat \ -H "Content-Type: application/json" \ -d '{"user_id": "10086", "nickname": "张三", "message": "你好"}' ```

预期返回结果为默认回复。

第四步:验证数据库数据(测试留存效果)
使用Python命令行或者SQLite查看工具打开retention.db,检查users表。你应该能看到user_id为"10086"的记录,其tag字段应被更新为"potential_price_sensitive",last_active_time也应为最新时间。这证明系统成功实现了用户打标与留存。

扩展与部署建议

以上代码已经完成了“话术-引流-留存”的最小功能闭环(MVP)。如果你需要将其接入真实的微信生态,只需修改chat函数中的数据获取方式,解析微信XML或JSON数据包即可。数据库方面,SQLite在数据量达到百万级前性能完全足够,后续如需更高并发,可将sqlite3替换为pymysql连接MySQL,逻辑层代码无需大改。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图