修复语音通话和视频通话识别
This commit is contained in:
@@ -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"`
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user