xcchat 是一个基于 Django 和 Django Channels 构建的轻量级在线客服系统。它支持实时聊天、人工/机器人客服切换、访客信息追踪和多站点接入

xcchat - 开源在线客服系统

  • 作者:北小菜
  • 邮箱:bilibili_bxc@126.com
  • QQ:1402990689
  • 微信:bilibili_bxc
  • 哔哩哔哩主页:https://space.bilibili.com/487906612
  • gitee地址:https://gitee.com/Vanishi/xcchat
  • github地址:https://github.com/beixiaocai/xcchat

xcchat 是一个基于 Django 和 Django Channels 构建的轻量级在线客服系统。它支持实时聊天、人工/机器人客服切换、访客信息追踪和多站点接入。

🌟 项目特点

  • B2C架构:面向企业对客户的客服场景
  • 实时双向通信:基于 WebSocket 实现毫秒级消息传递
  • 双模式客服:人工客服与机器人客服自由切换
  • 访客行为分析:自动收集访客设备信息、地理位置等数据
  • FAQ 管理:内置 FAQ 管理系统,支持在前端展示常见问题。
  • 高度可定制:前后端分离设计,易于二次开发和定制

🏗️ 系统架构

xcchat 采用现代化的分层架构设计:

  1. 表现层:前端 Widget 组件和管理后台界面
  2. 应用层:Django 应用模块(chat、sysadmin、widget 等)
  3. 服务层:WebSocket 服务、AI 服务、文件处理服务
  4. 数据层:MySQL 主数据库
  5. 通信层:基于 Django Channels 的 WebSocket 通信

🚀 功能特性

  • 站点管理:支持创建和管理多个站点(Site),每个站点拥有独立的客服和数据。
  • 实时通讯:基于 WebSocket (Django Channels) 实现低延迟的实时消息传输。
  • 混合客服模式
    • 人工客服:支持多客服协作。
    • 机器人客服:支持配置机器人 API 接口和 API Key,实现自动回复。
  • 访客追踪:自动记录访客的 IP、浏览器、操作系统、设备类型及地理位置信息。
  • FAQ 知识库:可配置常见问题解答,帮助访客自助解决问题。
  • 便捷接入:提供轻量级 JavaScript Widget,只需一段代码即可嵌入任何网页。
  • 统一后台管理
    • 管理员后台 (sysadmin):统一管理站点、客服、FAQ、查看会话记录和系统日志。

🛠️ 技术栈

  • 后端框架:Python 3.8+, Django 5.0.4, Django Channels 4.3.2
  • 数据库:MySQL 8+ (主数据库)
  • 实时通信:WebSocket (基于 Django Channels 和 Daphne)
  • 前端框架:Bootstrap 5, Vanilla JavaScript
  • AI 相关:支持集成大语言模型、向量检索等AI能力
  • 其他组件:Django REST Framework, django-cors-headers

🗄️ 数据库设计

项目目前采用单一数据库设计:

  1. 主数据库(MySQL):存储用户、站点、会话、消息等核心业务数据

知识库相关的数据结构和存储方案将在后续版本中重新设计,以适配新的简洁知识库功能。

📋 环境要求

  • Python 3.8+
  • MySQL 8+(推荐 InnoDB 引擎,UTF8MB4 字符集)
  • (可选)Redis(用于生产环境的 Channel Layer)

⚡ 快速开始

1. 克隆项目

git clone <repository_url> cd xcchat

2. 创建并激活虚拟环境

windows 创建虚拟环境
//创建虚拟环境 python -m venv venv //切换到虚拟环境 venv\Scripts\activate //更新pip python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple //安装requirements python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
linux 创建虚拟环境
//创建虚拟环境 python -m venv venv //切换到虚拟环境 source venv/bin/activate //更新pip python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple //安装requirements python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 数据库配置

项目使用 MySQL 作为主数据库,向量数据也存储在同一数据库中(使用二进制字段存储向量,不再依赖 pgvector 扩展)。

framework/settings.py中配置数据库连接:

  • ENGINE:django.db.backends.mysql
  • HOST: 数据库主机
  • PORT: 端口(默认 3306)
  • NAME: 数据库名
  • USER: 用户名
  • PASSWORD: 密码

4. 迁移数据库

python manage.py migrate

5. 创建超级管理员(可选)

项目已内置默认管理员账号:

  • 用户名:admin
  • 密码:admin888

6. 启动服务

开发环境下可以使用 Django 自带的runserver(支持 ASGI):

python manage.py runserver 0.0.0.0:8063

或者使用daphne启动:

daphne -b 0.0.0.0 -p 8063 framework.asgi:application

📖 使用指南

1. 登录管理员后台

访问http://localhost:8063/login/使用默认管理员账号登录:

  • 用户名:admin
  • 密码:admin888

首次登录后建议立即修改密码以保障系统安全。

2. 站点与客服管理

  • 进入后台后,在站点管理页面添加一个新的站点(密钥)。
  • 填写站点名称,保存后将生成 API Key。
  • 客服管理中为站点分配客服人员或配置机器人。

3. 获取接入代码

在站点列表页面查看站点的 API Key。 将以下代码添加到你网站 HTML 的<body>标签结束前:

<script src="http://你的域名:端口/static/widget/js/xcchat.js" data-api-key="你的API_KEY"> </script>

4. 模拟聊天

  • 打开嵌入了代码的网页,作为访客发送消息。
  • 在管理员后台的对话管理页面,可以实时收到消息并回复。

知识库相关功能正在重构中,当前版本暂未提供知识库管理与对话能力。

📂 项目结构

xcchat/ ├── chat/ # 核心聊天业务 (Models, Consumers) ├── core/ # 核心用户模型和日志 ├── sysadmin/ # 系统管理员后台视图 ├── website/ # 官网/着陆页 ├── widget/ # 前端组件 (JS Widget) ├── framework/ # 项目配置 (Settings, ASGI/WSGI) ├── static/ # 静态文件 ├── templates/ # 全局模板 ├── manage.py # Django 管理脚本 └── requirements.txt # 项目依赖

注:该系统采用B2C架构,为企业提供客户服务支持,而非多租户SaaS平台。

❓ 常见问题

  • 报错 "MySQLdb or PyMySQL is required"
    • 项目使用PyMySQL作为 MySQL 驱动,确保按requirements.txt安装即可。
  • 报错 “Cannot use ImageField because Pillow is not installed”
    • 请安装Pillow(已在requirements.txt列出),并重新运行迁移。
  • Channels 生产环境部署
    • 建议使用 Redis 作为 Channel Layer,并通过daphneuvicorn部署 ASGI 服务,前置反向代理(如 Nginx)。

📦 关键依赖

  • Django==5.0.4
  • djangorestframework==3.15.1
  • django-cors-headers==4.3.1
  • channels==4.3.2
  • daphne==4.2.1
  • PyMySQL==1.1.1
  • Pillow==12.0.0

📄 License

MIT License

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1030278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.3 第一次AI寒冬(1974-1980):计算瓶颈、明斯基的批判与资金撤退

2.3 第一次AI寒冬&#xff08;1974-1980&#xff09;&#xff1a;计算瓶颈、明斯基的批判与资金撤退 黄金年代的乐观预言未能兑现。进入1970年代&#xff0c;人工智能领域遭遇了首次重大挫折&#xff0c;研究进展显著放缓&#xff0c;资金来源急剧收缩&#xff0c;这一阶段被后…

【大模型微调】11-Prefix Tuning技术:分析Prefix Tuning的工作机制

引言Prefix Tuning技术是近年来在自然语言处理&#xff08;NLP&#xff09;领域崭露头角的一种创新方法。作为一种高效的模型微调技术&#xff0c;Prefix Tuning旨在通过在输入序列前添加可学习的"前缀"&#xff08;prefix&#xff09;来调整预训练语言模型的性能&am…

EmotiVoice让聋哑人‘听见’文字背后的情绪变化

EmotiVoice&#xff1a;让聋哑人“听见”文字背后的情绪 在一场家庭对话中&#xff0c;女儿打字问&#xff1a;“你生气了吗&#xff1f;”母亲回复&#xff1a;“没有。”——这句看似平静的“没有”&#xff0c;如果只是由标准TTS朗读出来&#xff0c;语气平直、毫无波澜&…

拒绝复杂!线上业务流程管理:中小团队首选工具推荐

在数字化浪潮下&#xff0c;业务流程管理模式正经历从传统线下到线上的根本性转变。传统业务管理依赖纸质单据、口头沟通和人工流转&#xff0c;早已难以适应现代企业对效率、协同和数据化的需求。而线上业务流程管理通过技术赋能&#xff0c;实现了流程的标准化、可视化和智能…

Java堆排序

RedType temp L.r[low]; // 暂存当前要调整的根节点int j;// 沿关键字较大的孩子结点向下筛选for (j 2 * low; j < high; j * 2){// 找到左右孩子中关键字较大的那个if (j < high && L.r[j].key < L.r[j1].key)j; // 若根节点关键字大于等于孩子结点&#x…

揭秘大数据领域规范性分析的关键流程

揭秘大数据领域规范性分析的关键流程&#xff1a;从原理到实践 摘要/引言 在大数据时代&#xff0c;如何从海量的数据中提取有价值的信息并做出明智的决策成为了众多企业和组织关注的焦点。规范性分析作为大数据分析的重要组成部分&#xff0c;旨在为决策者提供具体的行动建议&…

为什么越来越多开发者选择EmotiVoice做TTS开发?

为什么越来越多开发者选择 EmotiVoice 做 TTS 开发&#xff1f; 在智能语音助手越来越“懂人心”的今天&#xff0c;用户早已不满足于那种机械朗读式的语音反馈。我们期待的是能表达情绪、有温度、像真人一样会“说话”的系统——比如一个虚拟客服能在道歉时流露出诚恳的语气&a…

jQuery EasyUI 布局 - 动态添加标签页(Tabs)

jQuery EasyUI 布局 - 动态添加标签页&#xff08;Tabs&#xff09; Tabs 组件最强大的特性之一就是支持动态添加、关闭、刷新、选中标签页。这在后台管理系统中非常常见&#xff1a;用户点击左侧菜单时&#xff0c;在右侧主内容区动态打开对应的标签页&#xff1b;如果标签已…

2025年度国产磁悬浮风机核心技术指标实测排名与架构解析报告

报告编号: TR-2025-CN-MAGLEV-01 发布日期: 2025年12月 测试单位: 工业流体机械性能检测中心(实验室台架实测数据) 受众对象: 技术总监 (CTO) / 设备部部长 / 工程师1. 测评综述:2025年技术分级依据 (Test Meth…

电商网站Nginx部署实战:高并发场景优化方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请为电商网站设计一个高性能Nginx配置方案&#xff0c;要求&#xff1a;1) 支持3台应用服务器的负载均衡&#xff1b;2) 静态资源CDN配置&#xff1b;3) 商品详情页缓存策略&#x…

文件上传漏洞检测工具对比:传统VS AI驱动

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个文件上传漏洞检测工具对比平台&#xff0c;展示传统工具&#xff08;如手动代码审查&#xff09;与AI驱动工具&#xff08;如InsCode的AI扫描&#xff09;的差异。平台应提…

告别手动测试:MQTT自动化测试脚本开发全攻略

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Python脚本实现MQTT自动化测试&#xff1a;1.使用paho-mqtt库 2.支持并发连接测试(模拟100设备) 3.自动发布/订阅消息并验证 4.QoS级别测试 5.断线重连测试 6.生成测试报告…

【大模型微调】10-BitFit技术:介绍BitFit的原理及其在微调中的应用

引言BitFit技术是一种新兴的深度学习模型微调方法&#xff0c;旨在通过高效且精细的参数调整策略&#xff0c;提升模型在特定任务上的表现。与传统的全模型微调不同&#xff0c;BitFit专注于对模型参数的低位比特进行精细调整&#xff0c;从而在保持模型整体结构不变的前提下&a…

详解!30+基于YOLO开源框架视频AI算法,覆盖低空经济无人机巡检、海康/大华摄像头,城市综合治理、智慧工地、森林巡检

文末联系小编&#xff0c;获取项目源码YOLO&#xff08;You Only Look Once&#xff09;是一种基于深度神经网络的高效、实时的目标检测算法。它将目标检测任务视为一个回归问题&#xff0c;将图像分为多个网格&#xff0c;并预测每个网格中是否包含对象以及对象的边界框和类别…

h5嵌入鸿蒙跳转支付宝支付,报错:Syntax error:JSON Parse error:Expected ‘}‘

h5嵌入鸿蒙&#xff0c;h5跳到支付宝沙箱版本支付页面时&#xff0c;JSON.parse又报错了&#xff0c;此处有2种解决方式&#xff1a; 方法一&#xff1a;JSON.parse之前将字符串特殊字符处理下 const responseString responseStr.indexOf("payUrl") -1 ? respon…

EmotiVoice语音合成系统灰度发布AB测试设计模板

EmotiVoice语音合成系统灰度发布AB测试设计 在虚拟助手越来越“懂你”的今天&#xff0c;我们是否还记得那些机械朗读、毫无起伏的语音播报&#xff1f;那时的TTS&#xff08;文本转语音&#xff09;系统像是一个冷漠的复读机&#xff0c;不管你是开心还是悲伤&#xff0c;它都…

图解B树与B+树:零基础也能懂

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个面向初学者的交互式学习模块&#xff1a;1) 用日常生活类比解释B树/B树(如图书馆索引系统)&#xff1b;2) 分步动画展示从二叉搜索树到B树的演进过程&#xff1b;3) 高亮显…

传统VS现代:Docker容器启动效率对比实验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个效率对比工具&#xff0c;能够&#xff1a;1) 记录用户手动输入docker run命令的时间 2) 通过AI生成相同功能的命令 3) 比较两者耗时和正确率 4) 生成可视化对比图表。支持…

EmotiVoice语音合成系统日志记录与监控方案设计

EmotiVoice语音合成系统日志记录与监控方案设计 在如今的AI应用浪潮中&#xff0c;文本转语音&#xff08;TTS&#xff09;早已不再是简单的“机器朗读”&#xff0c;而是朝着情感化、个性化、拟人化的方向快速演进。EmotiVoice作为一款开源的高表现力语音合成引擎&#xff0c;…

EmotiVoice语音合成离线运行能力:无网络环境下正常使用

EmotiVoice语音合成离线运行能力&#xff1a;无网络环境下正常使用 在智能设备日益普及的今天&#xff0c;语音交互已不再是云端专属的功能。越来越多的场景要求系统即使在完全断网的情况下&#xff0c;依然能够“开口说话”——而且说得自然、有情感、像真人。这正是EmotiVoic…