feat(db,docs): 优化数据库连接池与生产日志,新增 Web 访客端接入指南

This commit is contained in:
yml2213
2026-09-11 10:50:46 +08:00
parent f88030acf5
commit e6837a4878
7 changed files with 427 additions and 20 deletions
+212
View File
@@ -0,0 +1,212 @@
# 在线客服 Web 端接入指南
本文档面向接入在线客服的网站开发与运维人员,帮助您在 1 分钟内将客服系统集成至您的企业官网、电商商城、Web 业务系统或单页应用(SPA)中。
---
## 1. 接入前准备
您只需要向客服系统管理员获取一个专属的 **渠道标识(Channel Key)**:
| 参数 | 说明 | 示例 |
| :--- | :--- | :--- |
| **服务地址** | 客服系统统一入口 | `https://cloud.400cc.cn/` |
| **渠道标识(data-id)** | 您企业专属的渠道密钥 | `WK_8a3f2e` |
> 💡 **获取方式**:登录客服工作台 -> 左侧菜单「系统设置」 -> 「渠道管理」 -> 复制您渠道的专属代码(其中的 `data-id` 即为您的 Channel Key)。
---
## 2. 快速接入(标准网页 / HTML)
只需在您网站 HTML 页面的 `</body>` 标签前添加一行 JavaScript 代码即可完成接入:
```html
<!-- 在线客服组件 -->
<script
src="https://cloud.400cc.cn/widget.js"
data-id="WK_8a3f2e"
async>
</script>
```
### 接入效果
引入脚本后,页面右下角将自动挂载悬浮客服图标:
* **点击展开**:弹出响应式聊天窗口(默认 400×600px,移动端浏览器自动适配全屏)。
* **自动提醒**:客服回复时,访客端自动显示未读消息红点徽标与声音提示。
* **最小化与恢复**:访客可随时收起或重新唤起聊天窗,聊天记录在同一浏览器内自动保留。
---
## 3. 自定义触发按钮(用您网页中的按钮打开客服)
如果您希望点击网页中现有的导航栏「在线咨询」、商品详情页的「联系客服」按钮来打开对话框,可以使用 SDK 提供的标准 JavaScript API。
### 3.1 代码示例
```html
<!-- 您的业务按钮 -->
<button type="button" onclick="openKefu()">联系在线客服</button>
<script>
function openKefu() {
if (window.KefuWidget) {
window.KefuWidget.open();
} else {
alert('客服组件正在加载中,请稍候...');
}
}
</script>
```
### 3.2 JavaScript API 速查
| 方法 / 属性 | 说明 | 示例 |
| :--- | :--- | :--- |
| `window.KefuWidget.open()` | 打开客服聊天窗口 | `window.KefuWidget.open()` |
| `window.KefuWidget.close()` | 收起 / 关闭客服聊天窗口 | `window.KefuWidget.close()` |
| `window.KefuWidget.channelKey` | 获取当前生效的渠道 Key | `console.log(window.KefuWidget.channelKey)` |
---
## 4. 现代单页应用接入(Vue / React / Next.js)
客服组件**原生适配单页应用(SPA)**。组件内部会自动侦听浏览器的路由变化(`history.pushState`、`replaceState`、`popstate` 以及页面 `<title>` 变更),无需您手写任何额外打点,客服端坐席就能实时看到访客当前正浏览哪个页面或商品。
### 4.1 Vue 3 / Vite 接入
直接在项目根目录的 `index.html` 引入(推荐):
```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>企业官网</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
<!-- 在线客服挂载 -->
<script src="https://cloud.400cc.cn/widget.js" data-id="WK_8a3f2e" async></script>
</body>
</html>
```
若需在特定组件或登录成功后动态加载:
```vue
<script setup>
import { onMounted } from 'vue'
onMounted(() => {
if (window.__KEFU_WIDGET_LOADED__) return
const script = document.createElement('script')
script.src = 'https://cloud.400cc.cn/widget.js'
script.setAttribute('data-id', 'WK_8a3f2e')
script.async = true
document.body.appendChild(script)
})
</script>
```
### 4.2 React / Next.js 接入
在根组件或页面布局中引入:
```tsx
import { useEffect } from 'react'
export function KefuWidget() {
useEffect(() => {
if ((window as any).__KEFU_WIDGET_LOADED__) return
const script = document.createElement('script')
script.src = 'https://cloud.400cc.cn/widget.js'
script.setAttribute('data-id', 'WK_8a3f2e')
script.async = true
document.body.appendChild(script)
}, [])
return null
}
```
Next.js 推荐写法:
```tsx
import Script from 'next/script'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="zh-CN">
<body>
{children}
<Script
src="https://cloud.400cc.cn/widget.js"
data-id="WK_8a3f2e"
strategy="lazyOnload"
/>
</body>
</html>
)
}
```
---
## 5. 局部内嵌(Iframe 嵌入指定区域)
如果您不希望使用右下角悬浮球,而是希望将客服对话框固定嵌入在网页的某个指定区域、独立页面或自定义抽屉内,可以使用无边框内嵌链接:
### 内嵌 URL 格式
```text
https://cloud.400cc.cn/widget/embed?channel_key=WK_8a3f2e&embedded=1
```
### HTML 内嵌代码示例
```html
<div style="width: 100%; height: 600px; border-radius: 8px; overflow: hidden; border: 1px solid #e5e7eb;">
<iframe
src="https://cloud.400cc.cn/widget/embed?channel_key=WK_8a3f2e&embedded=1"
style="width: 100%; height: 100%; border: none; display: block;"
allow="clipboard-write">
</iframe>
</div>
```
---
## 6. 客服系统开箱即用的高级体验
接入后,访客与客服将自动享有以下原生能力(**无需接入方额外编码**):
1. **浏览足迹感知**:访客在网站上浏览不同页面或商品时,客服端工作台实时展示访客当前的访问 URL 及浏览历史轨迹。
2. **输入中即时感知与线索提取**:
* 访客在输入框输入内容时,坐席端实时显示“正在输入...”。
* 若访客输入中包含了**手机号**或**微信号**,系统会自动识别并提取,即便访客因故提前关闭网页,客服也能及时沉淀意向线索。
3. **断网重连无损同步**:由于网络切换、移动端熄屏等导致的连接断开,重新联网后会自动按消息序号拉取补齐期间的所有客服回复,不会遗漏消息。
4. **满意度评价与离线留言**:客服结束会话后自动弹出满意度打分弹窗;非工作时间或无坐席在线时自动引导访客提交离线留言。
---
## 7. 常见问题与排查指南(FAQ)
#### Q1:页面右下角没有显示客服图标?
1. 打开浏览器控制台(F12 -> Console),检查是否有网络加载拦截报错。
2. 确认 `<script>` 标签中的 `data-id` 是否完整准确。
3. 检查您网站是否有更高层级的遮罩元素(客服悬浮球层级为 `z-index: 2147483000`)。
#### Q2:点击后提示“渠道不存在或已关闭”?
* 请联系客服系统管理员,在客服后台「系统设置」 -> 「渠道管理」中确认该渠道状态是否处于「已启用」状态。
#### Q3:网站配置了严格的内容安全策略(CSP),如何放行?
如果您的网站服务器配置了 `Content-Security-Policy` 响应头,请放行 `cloud.400cc.cn`:
```http
Content-Security-Policy:
script-src 'self' https://cloud.400cc.cn;
frame-src 'self' https://cloud.400cc.cn;
connect-src 'self' https://cloud.400cc.cn wss://cloud.400cc.cn;
img-src 'self' data: blob: https://cloud.400cc.cn;
```
#### Q4:手机浏览器上打开,输入框是否会被虚拟键盘遮挡?
* 客服组件已针对 iOS / Android 软键盘弹出做了视口高度(`100dvh` / `window.visualViewport`)适配。
* 请确保您网站的 `<head>` 中包含标准的移动端视口声明:
```html
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
```