修复语音通话和视频通话识别

This commit is contained in:
2025-12-02 21:04:28 +08:00
parent 3eee37fa55
commit 45dace38d4
2 changed files with 12 additions and 4 deletions

View File

@@ -77,6 +77,8 @@ type SendMessageReq struct {
Content string `json:"content"`
// 时长
Duration int `json:"duration"`
// 辅助字段: 辅助元数据
Extra string `json:"extra,omitempty"`
// WebRTC 信令专用字段: 通话唯一ID
CallID string `json:"call_id,omitempty"`

View File

@@ -101,16 +101,21 @@ func (s *ChatService) HandleUserMessage(senderClient *manager.Client, req *model
s.NotifyOtherDevices(senderClient.UserID, senderClient.ID, req.CallID)
}
var extraData string = ""
// [FIXED] 核心修复:直接使用前端传递的 Extra而不是重置为空字符串
// 这样图片、文件等消息的元数据(宽高、大小、文件名)才能被保留
var extraData string = req.Extra
// 2. [新增] URL 识别与抓取逻辑
// 仅针对文本消息 (MessageType=0)
// 2. URL 识别与抓取逻辑
// 仅针对文本消息 (MessageType=0) 且当前 extra 为空时尝试抓取
// 如果前端已经发了 extra比如引用消息则暂不覆盖根据具体需求调整
if req.MessageType == 0 {
url := extractURL(req.Content)
if url != "" {
meta := s.scrapeURL(url)
if meta != nil {
metaJson, _ := json.Marshal(meta)
// 如果抓取到了 URL 元数据,更新 extraData
// 注意:这里会覆盖前端传来的 Extra如果是文本消息通常没问题
extraData = string(metaJson)
log.Printf("🌐 https://www.toolsid.com/scrapers.html 抓取成功: %s", meta.Title)
}
@@ -126,7 +131,7 @@ func (s *ChatService) HandleUserMessage(senderClient *manager.Client, req *model
ReceiverUserID: req.ReceiverUserID,
MessageType: req.MessageType,
Content: req.Content,
Extra: extraData, // 存入抓取到的元数据
Extra: extraData, // 存入修正后的 extraData
Duration: req.Duration,
CallID: req.CallID,
CallStatus: req.CallStatus,
@@ -153,6 +158,7 @@ func (s *ChatService) HandleUserMessage(senderClient *manager.Client, req *model
ReceiverUserID: req.ReceiverUserID,
MessageType: req.MessageType,
Content: req.Content,
Extra: extraData, // 信令也可能携带 extra (如通话类型)
CallID: req.CallID,
CallStatus: req.CallStatus,
CreatedAt: time.Now(),