Files
zyt/CHAT_INTEGRATION.md
T
2026-03-09 09:55:04 +08:00

85 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 腾讯云 Chat UIKit 集成说明
## 功能概述
已成功将腾讯云 Chat UIKit Vue3 组件集成到预约管理系统的"聊天"按钮中,使用官方推荐的组件化方式。
## 实现内容
### 1. 创建聊天对话框组件
- 文件位置: `admin/src/components/chat-dialog/index.vue`
- 功能特性:
- 使用 Element Plus Dialog 作为容器
- 集成腾讯云 Chat UIKit 的官方组件:
- UIKitProvider: 提供 IM SDK 上下文
- ConversationList: 会话列表组件
- Chat: 聊天消息组件
- 自动获取医生签名并初始化聊天
- 加载状态和错误处理
- 响应式布局:左侧会话列表(300px)+ 右侧聊天区域
- 动态加载样式文件
### 2. 集成到预约列表页面
- 文件位置: `admin/src/views/tcm/appointment/list.vue`
- 修改内容:
- 导入 ChatDialog 组件
- 添加 chatDialogRef 引用
- 修改 handleCreatePrescription 方法,传递患者信息和诊单ID
- 在模板中添加 chat-dialog 组件
### 3. 使用的 API
- 复用现有的 `getCallSignature` API (`/tcm.diagnosis/getCallSignature`)
- 该接口返回腾讯云 IM 所需的:
- sdkAppId: 应用 ID
- userId: 当前用户 ID (医生)
- userSig: 用户签名
- patientUserId: 患者的 IM 用户 ID
### 4. 使用的组件
根据腾讯云官方文档 (https://cloud.tencent.com/document/product/269/123108)
- `UIKitProvider`: 提供 SDK 配置和上下文
- `ConversationList`: 显示会话列表
- `Chat`: 显示聊天消息和输入框
## 使用方式
1. 在预约列表中找到状态为"已预约"的记录
2. 点击操作列中的"聊天"按钮
3. 系统会自动:
- 获取医生的腾讯云 IM 签名
- 初始化聊天组件
- 打开聊天对话框
4. 在对话框中可以:
- 查看左侧的会话列表
- 在右侧与患者进行实时聊天
- 发送文本、表情、图片等消息
## 技术栈
- @tencentcloud/chat-uikit-vue3: ^4.5.4
- @tencentcloud/chat: IM SDK
- Element Plus: 对话框和 UI 组件
- Vue 3 Composition API
## 样式处理
由于 Vite 对 node_modules 中 CSS 文件的导入限制,样式文件采用动态导入方式:
- 在组件 onMounted 时动态导入样式
- 如果样式加载失败,功能仍可正常使用,只是缺少部分美化
## 注意事项
1. 需要确保后端 `/tcm.diagnosis/getCallSignature` 接口正常工作
2. 需要配置腾讯云 IM 的 SDKAppID 和密钥
3. 聊天功能需要患者端也集成相应的 IM 功能
4. 确保网络环境支持 WebSocket 连接
5. 会话ID格式为 `C2C{patientUserId}`,表示单聊(C2C = Client to Client
## 后续优化建议
1. 可以自定义聊天界面的主题和样式
2. 可以添加消息提醒功能
3. 可以添加聊天记录的持久化存储
4. 可以添加更多富媒体消息类型(语音、视频等)
5. 可以优化样式加载方式,确保样式稳定加载