Python 和 Flask 框架实现 AI 客服系统评论与私信管理功能的示例代码。这个示例模拟了评论和私信的添加、查询、标记已读等操作,同时使用 SQLite 数据库来存储数据。
from flask import Flask, request, jsonify
import sqlite3
app = Flask(name)
初始化数据库
def init_db():
conn = sqlite3.connect('customer_service.db')
c = conn.cursor()
创建评论表
c.execute('''CREATE TABLE IF NOT EXISTS comments
(id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
is_read BOOLEAN DEFAULT 0)''')
创建私信表
c.execute('''CREATE TABLE IF NOT EXISTS messages
(id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
is_read BOOLEAN DEFAULT 0)''')
conn.commit()
conn.close()
添加评论
@app.route ('/add_comment', methods=['POST'])
def add_comment ():
try:
data = request.get_json ()
content = data.get ('content')
if content:
conn = sqlite3.connect ('customer_service.db')
c = conn.cursor ()
c.execute ("INSERT INTO comments (content) VALUES (?)", (content,))
conn.commit ()
conn.close ()
return jsonify ({"status": "success", "message": "评论添加成功"})
else:
return jsonify ({"status": "error", "message": "评论内容不能为空"}), 400
except Exception as e:
return jsonify ({"status": "error", "message": str (e)}), 500
查询未读评论
@app.route('/get_unread_comments', methods=['GET'])
def get_unread_comments():
try:
conn = sqlite3.connect('customer_service.db')
c = conn.cursor()
c.execute("SELECT id, content FROM comments WHERE is_read = 0")
comments = c.fetchall()
conn.close()
result = [{"id": comment[0], "content": comment[1]} for comment in comments]
return jsonify({"status": "success", "comments": result})
except Exception as e:
return jsonify({"status": "error", "message": str(e)}), 500
标记评论为已读
@app.route ('/mark_comment_read', methods=['POST'])
def mark_comment_read ():
try:
data = request.get_json ()
comment_id = data.get ('id')
if comment_id:
conn = sqlite3.connect ('customer_service.db')
c = conn.cursor ()
c.execute ("UPDATE comments SET is_read = 1 WHERE id =?", (comment_id,))
conn.commit ()
conn.close ()
return jsonify ({"status": "success", "message": "评论已标记为已读"})
else:
return jsonify ({"status": "error", "message": "未提供评论 ID"}), 400
except Exception as e:
return jsonify ({"status": "error", "message": str (e)}), 500
添加私信
@app.route ('/add_message', methods=['POST'])
def add_message ():
try:
data = request.get_json ()
content = data.get ('content')
if content:
conn = sqlite3.connect ('customer_service.db')
c = conn.cursor ()
c.execute ("INSERT INTO messages (content) VALUES (?)", (content,))
conn.commit ()
conn.close ()
return jsonify ({"status": "success", "message": "私信添加成功"})
else:
return jsonify ({"status": "error", "message": "私信内容不能为空"}), 400
except Exception as e:
return jsonify ({"status": "error", "message": str (e)}), 500
查询未读私信
@app.route('/get_unread_messages', methods=['GET'])
def get_unread_messages():
try:
conn = sqlite3.connect('customer_service.db')
c = conn.cursor()
c.execute("SELECT id, content FROM messages WHERE is_read = 0")
messages = c.fetchall()
conn.close()
result = [{"id": message[0], "content": message[1]} for message in messages]
return jsonify({"status": "success", "messages": result})
except Exception as e:
return jsonify({"status": "error", "message": str(e)}), 500
标记私信为已读
@app.route ('/mark_message_read', methods=['POST'])
def mark_message_read ():
try:
data = request.get_json ()
message_id = data.get ('id')
if message_id:
conn = sqlite3.connect ('customer_service.db')
c = conn.cursor ()
c.execute ("UPDATE messages SET is_read = 1 WHERE id =?", (message_id,))
conn.commit ()
conn.close ()
return jsonify ({"status": "success", "message": "私信已标记为已读"})
else:
return jsonify ({"status": "error", "message": "未提供私信 ID"}), 400
except Exception as e:
return jsonify ({"status": "error", "message": str (e)}), 500
if name == 'main':
init_db()
app.run(debug=True)
代码解释
数据库初始化:init_db 函数创建了两个表,分别用于存储评论和私信。每个表包含 id、content 和 is_read 字段,is_read 用于标记消息是否已读。
评论管理:
add_comment 接口:接收评论内容,将其插入到 comments 表中。
get_unread_comments 接口:查询 comments 表中未读的评论。
mark_comment_read 接口:根据评论的 id,将其标记为已读。
私信管理:
add_message 接口:接收私信内容,将其插入到 messages 表中。
get_unread_messages 接口:查询 messages 表中未读的私信。
mark_message_read 接口:根据私信的 id,将其标记为已读。
扩展建议
用户关联:在表中添加用户字段,关联评论和私信的发送者和接收者,实现更细粒度的管理。
分页查询:对于大量的评论和私信,实现分页查询功能,提高查询效率。
回复功能:添加回复评论和私信的接口,实现完整的互动流程。