Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
speech_nlu_parse
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵文静
speech_nlu_parse
Commits
2245c725
Commit
2245c725
authored
May 21, 2025
by
赵文静
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
补充食物营养查询
parent
884c87e6
Pipeline
#5260
passed with stage
in 0 seconds
Changes
4
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
148 additions
and
12 deletions
+148
-12
service/speechNlu/constant.go
service/speechNlu/constant.go
+1
-1
service/speechNlu/new.go
service/speechNlu/new.go
+141
-0
service/speechNlu/register.go
service/speechNlu/register.go
+1
-0
service/speechNlu/speech.go
service/speechNlu/speech.go
+5
-11
No files found.
service/speechNlu/constant.go
View file @
2245c725
...
@@ -91,11 +91,11 @@ const (
...
@@ -91,11 +91,11 @@ const (
//SLEEPMUSIC = "声音博物馆"
//SLEEPMUSIC = "声音博物馆"
RELATION
=
"亲戚关系计算"
RELATION
=
"亲戚关系计算"
WASTESORTING
=
"垃圾分类"
WASTESORTING
=
"垃圾分类"
FOOD
=
"食物营养查询"
SOUND
=
"sound"
SOUND
=
"sound"
ALMANAC
=
"almanac"
ALMANAC
=
"almanac"
FOOD
=
"food"
GENERALQA
=
"general_question_answering"
GENERALQA
=
"general_question_answering"
COMMONQA
=
"common_qa"
COMMONQA
=
"common_qa"
...
...
service/speechNlu/new.go
0 → 100644
View file @
2245c725
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)
//}
service/speechNlu/register.go
View file @
2245c725
...
@@ -51,6 +51,7 @@ func register() {
...
@@ -51,6 +51,7 @@ func register() {
DomainRegister
(
HOLIDAY
,
holidayDomain
)
DomainRegister
(
HOLIDAY
,
holidayDomain
)
DomainRegister
(
RELATION
,
speechOtherDomain
)
DomainRegister
(
RELATION
,
speechOtherDomain
)
DomainRegister
(
WASTESORTING
,
speechOtherDomain
)
DomainRegister
(
WASTESORTING
,
speechOtherDomain
)
DomainRegister
(
FOOD
,
speechOtherDomain
)
DomainRegister
(
""
,
speechOtherDomain
)
DomainRegister
(
""
,
speechOtherDomain
)
//
//
...
...
service/speechNlu/speech.go
View file @
2245c725
...
@@ -38,16 +38,11 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
...
@@ -38,16 +38,11 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
// 结果
// 结果
var
channelStr
string
var
channelStr
string
//ts := time.Now()
err
,
content
,
url
:=
dao
.
GetTestContent
(
reqStruct
.
MacWifi
,
reqStruct
.
Query
)
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
{
if
err
==
nil
{
channelStr
=
string
(
getTencentSongReply
(
url
,
content
,
reqStruct
.
Query
))
channelStr
=
string
(
getTencentSongReply
(
url
,
content
,
reqStruct
.
Query
))
}
else
{
}
else
{
if
reqStruct
.
Query
==
"声道测试"
||
reqStruct
.
Query
==
"音响音质测试"
||
reqStruct
.
Query
==
"音箱音质测试"
{
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
url
=
global
.
OthersSetting
.
SoundTestUrl
content
=
""
content
=
""
channelStr
=
string
(
getTencentSongReply
(
url
,
content
,
reqStruct
.
Query
))
channelStr
=
string
(
getTencentSongReply
(
url
,
content
,
reqStruct
.
Query
))
...
@@ -60,21 +55,20 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
...
@@ -60,21 +55,20 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
}
else
if
reqStruct
.
Query
==
"编号七零六八一"
&&
reqStruct
.
MacWifi
==
"f4911e594443"
{
}
else
if
reqStruct
.
Query
==
"编号七零六八一"
&&
reqStruct
.
MacWifi
==
"f4911e594443"
{
channelStr
=
string
(
getGreeNluChatReply
(
"好的,计时五分钟马上开始,五,四,三,二,一"
,
"countdown"
,
reqStruct
.
Query
))
channelStr
=
string
(
getGreeNluChatReply
(
"好的,计时五分钟马上开始,五,四,三,二,一"
,
"countdown"
,
reqStruct
.
Query
))
}
else
{
}
else
{
var
session
string
var
session
Id
string
// 自动清理过期Session的守护协程
// 自动清理过期Session的守护协程
go
StartSessionJanitor
(
1
*
time
.
Minute
)
go
StartSessionJanitor
(
1
*
time
.
Minute
)
// 自动携带有效SessionID(自动刷新时间戳)
// 自动携带有效SessionID(自动刷新时间戳)
if
sessionID
,
valid
:=
GetAndRefreshSession
(
reqStruct
.
MacVoice
,
30
);
valid
{
if
sessionID
,
valid
:=
GetAndRefreshSession
(
reqStruct
.
MacVoice
,
30
);
valid
{
session
=
sessionID
session
Id
=
sessionID
log
.
Printf
(
"检测到有效SessionID: %s"
,
sessionID
)
log
.
Printf
(
"检测到有效SessionID: %s"
,
sessionID
)
}
else
{
}
else
{
log
.
Println
(
"Session已过期或无可用Session"
)
log
.
Println
(
"Session已过期或无可用Session"
)
session
=
""
sessionId
=
""
}
}
start
:=
time
.
Now
()
start
:=
time
.
Now
()
data
:=
SpeechNlpWsReq
(
reqStruct
,
session
)
data
:=
SpeechNlpWsReq
(
reqStruct
,
session
Id
)
speechNluWs
:=
SpeechNlpWs
{}
speechNluWs
:=
SpeechNlpWs
{}
var
nlpWsConn
*
websocket
.
Conn
var
nlpWsConn
*
websocket
.
Conn
...
@@ -132,7 +126,7 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
...
@@ -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
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment