Commit 2245c725 authored by 赵文静's avatar 赵文静

补充食物营养查询

parent 884c87e6
Pipeline #5260 passed with stage
in 0 seconds
......@@ -91,11 +91,11 @@ const (
//SLEEPMUSIC = "声音博物馆"
RELATION = "亲戚关系计算"
WASTESORTING = "垃圾分类"
FOOD = "食物营养查询"
SOUND = "sound"
ALMANAC = "almanac"
FOOD = "food"
GENERALQA = "general_question_answering"
COMMONQA = "common_qa"
......
package speechNlu
//type WebSocketSession struct {
// Conn *websocket.Conn
// SessionID string
// RequestChan chan []byte // 发送请求的通道
// ResponseChan chan model.SpeechWsResp // 接收响应的通道
// ErrorChan chan error // 错误通知通道
// CloseChan chan struct{} // 主动关闭信号
// IsAlive bool // 连接状态标记
//}
//
//func SpeechWs(ip, deviceId string) (*websocket.Conn, error) {
// SpeechWs_Url := global.SpeechSetting.Url
// SpeechWs_ProductId := global.SpeechSetting.ProductId
// SpeechWs_ApiKey := global.SpeechSetting.ApiKey
//
// //st := time.Now()
// dialer := websocket.Dialer{
// HandshakeTimeout: 30 * time.Second,
// }
//
// header := http.Header{}
// header.Set("X-Forwarded-For", ip)
//
// SpeechUrl := SpeechWs_Url + "?serviceType=websocket&productId=" + SpeechWs_ProductId +
// "&apikey=" + SpeechWs_ApiKey + "&deviceId=" + deviceId
// fmt.Println(SpeechUrl)
//
// conn, resp, err := dialer.Dial(SpeechUrl, header)
// if err != nil {
// global.Logger.WithFields(logger.Fields{
// "url": SpeechUrl,
// "resp": readResp(resp),
// }).Errorf("[SpeechWs] Connect error : %v", err.Error())
// return nil, err
// }
// return conn, nil
//}
//
//func SpeechNlpWsReq1(data *model.SemanticReq, session *WebSocketSession) *SpeechWsData {
// req := &SpeechWsData{
// Topic: "nlu.input.text",
// RecordId: data.RequestId,
// SessionId: session.SessionID, // 直接从会话中获取 SessionID
// RefText: data.Query,
// }
// global.Logger.WithFields(logger.Fields{
// "req": req,
// "sessionId": session.SessionID,
// }).Info("构造 NLU 请求")
// return req
//}
//
//func NewWebSocketSession(ip, deviceID string) (*WebSocketSession, error) {
// // 建立 WebSocket 连接
// conn, err := SpeechWs(ip, deviceID)
// if err != nil {
// return nil, err
// }
//
// session := &WebSocketSession{
// Conn: conn,
// RequestChan: make(chan []byte, 10),
// ResponseChan: make(chan model.SpeechWsResp, 10),
// ErrorChan: make(chan error),
// CloseChan: make(chan struct{}),
// IsAlive: true,
// }
//
// // 启动读写协程
// go session.readLoop()
// go session.writeLoop()
//
// return session, nil
//}
//
//func (s *WebSocketSession) readLoop() {
// defer s.cleanup()
//
// for {
// select {
// case <-s.CloseChan:
// return
// default:
// _, message, err := s.Conn.ReadMessage()
// if err != nil {
// s.ErrorChan <- fmt.Errorf("读取消息失败: %v", err)
// return
// }
//
// var resp model.SpeechWsResp
// if err := json.Unmarshal(message, &resp); err != nil {
// s.ErrorChan <- fmt.Errorf("解析消息失败: %v", err)
// continue
// }
//
// // 更新 SessionID(假设服务端返回 sessionId)
// if resp.SessionId != "" {
// s.SessionID = resp.SessionId
// }
//
// s.ResponseChan <- resp
//
// // 检查是否需要结束会话(根据业务逻辑)
// if resp.Dm != nil && resp.Dm.ShouldEndSession {
// s.CloseChan <- struct{}{}
// }
// }
// }
//}
//
//func (s *WebSocketSession) writeLoop() {
// defer s.cleanup()
//
// for {
// select {
// case <-s.CloseChan:
// return
// case req := <-s.RequestChan:
// if err := s.Conn.WriteMessage(websocket.TextMessage, req); err != nil {
// s.ErrorChan <- fmt.Errorf("发送请求失败: %v", err)
// return
// }
// }
// }
//}
//
//func (s *WebSocketSession) Close() {
// if s.IsAlive {
// close(s.CloseChan) // 通知读写协程退出
// s.Conn.Close() // 关闭 WebSocket 连接
// s.IsAlive = false
// }
//}
//
//func (s *WebSocketSession) cleanup() {
// close(s.RequestChan)
// close(s.ResponseChan)
// close(s.ErrorChan)
//}
......@@ -51,6 +51,7 @@ func register() {
DomainRegister(HOLIDAY, holidayDomain)
DomainRegister(RELATION, speechOtherDomain)
DomainRegister(WASTESORTING, speechOtherDomain)
DomainRegister(FOOD, speechOtherDomain)
DomainRegister("", speechOtherDomain)
//
......
......@@ -38,16 +38,11 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
// 结果
var channelStr string
//ts := time.Now()
err, content, url := dao.GetTestContent(reqStruct.MacWifi, reqStruct.Query)
//tc := time.Since(ts)
//fmt.Println(time.Now().String()[:19], err, reqStruct.MacWifi, reqStruct.Query, tc)
if err == nil {
channelStr = string(getTencentSongReply(url, content, reqStruct.Query))
} else {
if reqStruct.Query == "声道测试" || reqStruct.Query == "音响音质测试" || reqStruct.Query == "音箱音质测试" {
// channelStr = string(getTencentSongReply("", reqStruct.Query))
// err, content, url := dao.GetAnyTestContent(reqStruct.MacWifi, reqStruct.Query)
url = global.OthersSetting.SoundTestUrl
content = ""
channelStr = string(getTencentSongReply(url, content, reqStruct.Query))
......@@ -60,21 +55,20 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
} else if reqStruct.Query == "编号七零六八一" && reqStruct.MacWifi == "f4911e594443" {
channelStr = string(getGreeNluChatReply("好的,计时五分钟马上开始,五,四,三,二,一", "countdown", reqStruct.Query))
} else {
var session string
var sessionId string
// 自动清理过期Session的守护协程
go StartSessionJanitor(1 * time.Minute)
// 自动携带有效SessionID(自动刷新时间戳)
if sessionID, valid := GetAndRefreshSession(reqStruct.MacVoice, 30); valid {
session = sessionID
sessionId = sessionID
log.Printf("检测到有效SessionID: %s", sessionID)
} else {
log.Println("Session已过期或无可用Session")
session = ""
sessionId = ""
}
start := time.Now()
data := SpeechNlpWsReq(reqStruct, session)
data := SpeechNlpWsReq(reqStruct, sessionId)
speechNluWs := SpeechNlpWs{}
var nlpWsConn *websocket.Conn
......@@ -132,7 +126,7 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
}
}
return string(replyWithChat(error_reply, "doudi")), errCode.InternalServiceError
//return string(replyWithChat(error_reply, "doudi")), errCode.InternalServiceError
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment