智能客服系统开发

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,将其标记为已读。

扩展建议

用户关联:在表中添加用户字段,关联评论和私信的发送者和接收者,实现更细粒度的管理。

分页查询:对于大量的评论和私信,实现分页查询功能,提高查询效率。

回复功能:添加回复评论和私信的接口,实现完整的互动流程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容