README.md 2.0 KB

通讯模块

项目结构

  • chat 对话页面
  • session 历史会话
  • contact-list 通讯录列表

对话模块

  • 功能简介:两个用户互相发消息,接收消息,查看消息历史记录

数据范式

  • _User 用户表
    • objectId
    • username 用户名
    • mobile 手机号
    • nickname 昵称
  • Contact 通讯好友的表
    • from Pointer<_User>
    • to Pointer<_User>
  • Message 消息表
    • sendUser Pointer<_User>
    • receiveUser Pointer<_User>
    • contentJson 消息对象 符合各类消息格式
    • isRead Boolean 消息已读
    • isCancel Boolean 消息撤回

思考:图片链接和图片消息的区别,和表达方式? 图片链接,本质上是文本消息(基于字符串) 图片消息,本质上是结构化消息 {type:"image",imgUrl:"https://file-cloud.fmode.cn/E4KpGvTEto/20230822/3mkf41033623275.png"}

消息内容规范(参考GPT多模态响应)

普通文本消息:

{

  "role": "user",
  "content": "Here is the text: 'The quick brown fox jumps over the lazy dog.'"

}

图片消息 {

"role": "user",
"content": {
"type": "image",
"data": {
    "url": "https://example.com/image.jpg",
    "alt_text": "A quick brown fox jumping over a lazy dog."
}
}

}

音频消息

{

"role": "user",
"content": {
"type": "audio",
"data": {
    "url": "https://example.com/audio.mp3",
    "alt_text": "An audio clip of a quick brown fox jumping over a lazy dog."
}
}

}

业务逻辑

发送消息

  • 进入会话页面
    • 无记录:输入用户昵称添加好友,再进行对话
    • 有记录:点击历史会话进入
  • 向微服务创建一个Message,sendUser为自身,receiveUser为联系人

接收消息

  • 查询,receiveUser为自身,sendUser为会话窗口联系人的所有Message

会话列表

  • 查询,receiveUser为自身,所有Message,并每个receiver只显示最新一条