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

手把手搭建Python私域广告自动接单管理系统

时间:2026年06月11日 16:27:42 来源:易频IT社区

一、技术架构与环境准备

本系统采用 Python 语言编写,后端使用轻量级 Flask 框架接收请求,数据库使用 SQLite 进行本地数据持久化,通知模块通过企业微信群机器人 Webhook 实现实时消息推送。该架构无需复杂的服务器配置,本地 Windows 或 Linux 环境均可直接运行。

1.1 开发环境配置

首先需要确保你的电脑上安装了 Python 环境。本指南基于 Python 3.8 版本编写,建议使用 3.8 及以上版本以确保库的兼容性。打开终端(CMD 或 PowerShell),输入以下命令检查 Python 版本:

python --version

如果未安装,请前往 Python 官网下载并安装,安装时务必勾选 "Add Python to PATH" 选项。为了方便代码编写,建议安装 VS Code 作为编辑器。

1.2 依赖库安装

在项目根目录下,我们需要安装 Flask(Web框架)和 Requests(HTTP请求库)。执行以下命令进行安装:

pip install flask requests

安装完成后,新建一个文件夹,命名为 ad_system,后续所有代码文件将存放在此目录下。

二、企业微信通知接口配置

为了实现广告订单的实时通知,我们将利用企业微信群机器人的 Webhook 地址。这是目前最稳定、免费且无需审核的私域通知方式。

2.1 获取 Webhook 地址

请按照以下绝对路径操作,不要遗漏任何步骤:

  • 步骤1:在电脑端打开企业微信,进入你需要接收订单通知的群聊。
  • 步骤2:点击群聊右上角的 ...(更多)图标。
  • 步骤3:在弹出的菜单中找到 群机器人 选项并点击。
  • 步骤4:点击 添加机器人,命名为“广告接单助手”,上传一个头像,点击完成。
  • 步骤5:系统会弹出一个包含 Webhook 地址的页面,地址格式通常为 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXX

关键操作:请立即复制该地址并保存到记事本中,该地址只显示一次,丢失后无法找回,只能重新创建。我们将此地址定义为变量 WEBHOOK_URL

2.2 消息格式说明

企业微信机器人支持多种消息类型,为了清晰地展示广告单详情,我们将使用 Markdown 格式。这种格式支持标题、列表和高亮显示,非常适合展示结构化的订单数据。

三、后端服务与数据库开发

接下来我们将编写核心后端代码,用于处理前端提交的订单数据,将其存入数据库,并触发企业微信通知。

3.1 数据库表结构设计

手把手搭建Python私域广告自动接单管理系统

ad_system 目录下创建一个名为 init_db.py 的文件,粘贴以下代码。这段代码将自动生成一个名为 orders.db 的 SQLite 数据库文件,并创建一张用于存储订单的表。

```python import sqlite3 def init_db(): conn = sqlite3.connect('orders.db') cursor = conn.cursor() 创建订单表,包含客户名称、联系方式、广告类型、预算、备注和创建时间 cursor.execute(''' CREATE TABLE IF NOT EXISTS orders ( id INTEGER PRIMARY KEY AUTOINCREMENT, client_name TEXT NOT NULL, contact_info TEXT NOT NULL, ad_type TEXT NOT NULL, budget REAL, notes TEXT, status TEXT DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ''') conn.commit() conn.close() print("数据库初始化完成,orders.db 已生成。") if __name__ == '__main__': init_db() ```

在终端运行 python init_db.py,你会看到目录下生成了 orders.db 文件。

3.2 Flask 后端核心代码

创建 app.py 文件。这是系统的核心,包含了数据库操作逻辑和企业微信推送逻辑。请将代码中的 YOUR_WEBHOOK_URL_HERE 替换为你在 2.1 节中获取的真实地址。

```python import sqlite3 import requests import json from flask import Flask, request, jsonify from datetime import datetime app = Flask(__name__) 配置项:请替换为你的真实企业微信群机器人 Webhook 地址 WEBHOOK_URL = "YOUR_WEBHOOK_URL_HERE" def get_db_connection(): conn = sqlite3.connect('orders.db') conn.row_factory = sqlite3.Row return conn def send_wechat_notification(order_data): """发送企业微信通知""" headers = {"Content-Type": "application/json"} 构造 Markdown 消息内容 content = f""" 📢 新广告订单通知 > 客户名称: {order_data['client_name']} > 联系方式: {order_data['contact_info']} > 广告类型: {order_data['ad_type']} > 预算金额: {order_data['budget']} 元 > 备注信息: {order_data['notes']} > 提交时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} 请及时联系客户确认需求! """ data = { "msgtype": "markdown", "markdown": { "content": content } } try: response = requests.post(WEBHOOK_URL, headers=headers, data=json.dumps(data), timeout=5) if response.json().get('errcode') == 0: print("通知发送成功") else: print(f"通知发送失败: {response.text}") except Exception as e: print(f"通知发送异常: {str(e)}") @app.route('/submit_order', methods=['POST']) def submit_order(): """接收前端提交的订单接口""" try: data = request.json 基础字段校验 required_fields = ['client_name', 'contact_info', 'ad_type', 'budget'] for field in required_fields: if not data.get(field): return jsonify({"status": "error", "message": f"缺少必填字段: {field}"}), 400 写入数据库 conn = get_db_connection() cursor = conn.cursor() cursor.execute(''' INSERT INTO orders (client_name, contact_info, ad_type, budget, notes) VALUES (?, ?, ?, ?, ?) ''', (data['client_name'], data['contact_info'], data['ad_type'], data['budget'], data.get('notes', ''))) conn.commit() order_id = cursor.lastrowid conn.close() 构造完整数据用于通知 order_data = { "client_name": data['client_name'], "contact_info": data['contact_info'], "ad_type": data['ad_type'], "budget": data['budget'], "notes": data.get('notes', '无') } 发送企业微信通知 send_wechat_notification(order_data) return jsonify({"status": "success", "message": "订单提交成功", "order_id": order_id}) except Exception as e: return jsonify({"status": "error", "message": str(e)}), 500 if __name__ == '__main__': 启动服务,监听本地 5000 端口 app.run(host='0.0.0.0', port=5000, debug=True) ```

四、前端提交页面实现

为了让广告主能够方便地提交需求,我们需要一个简单的 HTML 表单。在 ad_system 目录下创建 index.html 文件。该页面包含简单的 CSS 样式和 JavaScript 逻辑,用于调用刚才编写的 Python 接口。

```html 私域广告投放需求单

提交广告投放需求

```

五、系统部署与实操测试

代码编写完成后,我们需要启动服务并进行全流程测试,确保逻辑闭环。

5.1 启动后端服务

在终端中进入 ad_system 目录,执行以下命令启动 Flask 服务器:

python app.py

当终端显示 Running on http://0.0.0.0:5000 时,说明后端服务已成功启动。请保持该终端窗口开启,不要关闭。

5.2 打开前端页面

直接双击目录下的 index.html 文件,它将在你的默认浏览器中打开。你将看到一个简洁的广告投放需求填写表单。

5.3 实操接单流程

请按照以下步骤模拟一次真实的广告接单操作:

  • 步骤1:在表单中输入客户名称“测试客户A”,联系方式“13800000000”,选择“朋友圈广告”,输入预算“5000”,备注“测试提交”。
  • 步骤2:点击“立即提交需求”按钮。
  • 步骤3:观察页面提示,应显示绿色的“提交成功!我们将尽快联系您。”。
  • 步骤4:打开你的企业微信客户端,查看配置了机器人的群聊。你应该在几秒钟内收到一条机器人消息,内容包含了刚才填写的所有详细信息,格式排版整齐。
  • 步骤5:回到项目目录,你会发现 orders.db 文件的大小有所变化。你可以使用 DB Browser for SQLite 等工具打开该文件,查看 orders 表中是否新增了一条记录。

5.4 常见问题排查

如果在测试过程中遇到问题,请检查以下细节:

  • 提交无反应:检查浏览器控制台(F12)是否有跨域(CORS)错误。如果是本地文件直接打开,部分浏览器可能会拦截请求。建议使用简单的 HTTP 服务器打开 HTML,如在目录执行 python -m http.server 8000 并访问 http://localhost:8000
  • 收不到微信通知:检查 app.py 中的 WEBHOOK_URL 是否正确复制,且末尾没有多余空格。检查终端是否有报错信息。
  • 数据库错误:确保 init_db.py 已经成功运行过,且 orders.db 文件存在于 app.py 同级目录下。

至此,一套完整的私域广告自动接单管理系统已经搭建完成。你可以将此代码部署在云服务器上,并将前端页面链接发送给客户,即可实现全天候无人值守的广告接单业务。

相关推荐

最新

热门

推荐

精选

标签

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

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