一、技术架构与环境准备
本系统采用 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 数据库表结构设计

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