Commit 7a969c6a authored by 赵文静's avatar 赵文静

修改param,音乐传全部字段

parent 42091f61
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
## [0.0.1-beta.4] - 2025.6.26 ## [0.0.1-beta.4] - 2025.6.26
### Changed ### Changed
- 修改历史上的今天,修改限制判断 - 修改历史上的今天,修改限制判断
- 修改新闻增加上一个下一个
- 修改param,音乐传全部字段
## [0.0.1-beta.4] - 2025.6.24 ## [0.0.1-beta.4] - 2025.6.24
### Changed ### Changed
......
...@@ -10,7 +10,7 @@ Content-Type: application/json ...@@ -10,7 +10,7 @@ Content-Type: application/json
}, },
"nluRet": { "nluRet": {
"asr_recongize": "", "asr_recongize": "",
"text": "几点了几点了几点了" "text": "放张韶涵的暮色"
} }
}, },
"version": "v0" "version": "v0"
...@@ -24,8 +24,8 @@ X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db ...@@ -24,8 +24,8 @@ X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db
{ {
"ip": "14.215.222.17", "ip": "14.215.222.17",
"mac": "ece154a865eb", "mac": "ece154a865eb",
"mid": "10f05", "mid": "11011",
"query":"历史上的今天", "query":"播放上一首古诗",
"requestId": "123456111" "requestId": "123456111"
} }
...@@ -39,7 +39,7 @@ X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db ...@@ -39,7 +39,7 @@ X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db
"ip": "14.215.222.17", "ip": "14.215.222.17",
"mac": "ece154a865eb", "mac": "ece154a865eb",
"mid": "10f05", "mid": "10f05",
"query":"历史上的今天", "query":"播放上一首古诗",
"requestId": "123456111" "requestId": "123456111"
} }
...@@ -60,7 +60,7 @@ Content-Type: application/json ...@@ -60,7 +60,7 @@ Content-Type: application/json
"trafficParameter": "mode=childxxx;macWifi=28b77c218ed1;mid=10f05;vender=7e000025;macVoice=testyuntiancloud;ver=3.0;scenario=smarthome;filterName=nlu;req_nlu_length=1;returnType=json;fullDuplex=true;appendLength=1;additionalService=geli_nlu2;version=0.5;filterUrl=https://testnlu.gree.com:443/semantic/unisoundc2c/querys;" "trafficParameter": "mode=childxxx;macWifi=28b77c218ed1;mid=10f05;vender=7e000025;macVoice=testyuntiancloud;ver=3.0;scenario=smarthome;filterName=nlu;req_nlu_length=1;returnType=json;fullDuplex=true;appendLength=1;additionalService=geli_nlu2;version=0.5;filterUrl=https://testnlu.gree.com:443/semantic/unisoundc2c/querys;"
}, },
"nluRet": { "nluRet": {
"text": "几点了伦敦" "text": "央视的新闻"
}, },
"postProc": {} "postProc": {}
} }
...@@ -101,7 +101,7 @@ Content-Type: application/json ...@@ -101,7 +101,7 @@ Content-Type: application/json
"trafficParameter": "mode=childxx;macWifi=ece154a73d38;mid=11011;macVoice=testyuntiancloud;ver=3.0;scenario=smarthome;filterName=nlu;req_nlu_length=1;returnType=json;fullDuplex=true;appendLength=1;additionalService=geli_nlu2;version=0.5;filterUrl=https://testnlu.gree.com:443/semantic/unisoundc2c/querys;" "trafficParameter": "mode=childxx;macWifi=ece154a73d38;mid=11011;macVoice=testyuntiancloud;ver=3.0;scenario=smarthome;filterName=nlu;req_nlu_length=1;returnType=json;fullDuplex=true;appendLength=1;additionalService=geli_nlu2;version=0.5;filterUrl=https://testnlu.gree.com:443/semantic/unisoundc2c/querys;"
}, },
"nluRet": { "nluRet": {
"text": "播放治愈" "text": "播放上一首古诗"
}, },
"postProc": {} "postProc": {}
} }
......
...@@ -207,7 +207,7 @@ func setupFlag() error { ...@@ -207,7 +207,7 @@ func setupFlag() error {
flag.StringVar(&serverTag, "tag", "", "注册到注册中心的标签") flag.StringVar(&serverTag, "tag", "", "注册到注册中心的标签")
flag.StringVar(&ip, "ip", "", "IP") flag.StringVar(&ip, "ip", "", "IP")
flag.IntVar(&port, "port", 0, "端口") flag.IntVar(&port, "port", 0, "端口")
flag.StringVar(&consulUrl, "consul", "http://172.28.124.106:8500", "consul服务地址") flag.StringVar(&consulUrl, "consul", "http://172.28.124.105:8500", "consul服务地址")
flag.StringVar(&config, "config", "env/v2,speech_nlu_parse/conf", "指定要使用的配置文件路径") flag.StringVar(&config, "config", "env/v2,speech_nlu_parse/conf", "指定要使用的配置文件路径")
flag.BoolVar(&isVersion, "version", false, "编译信息") flag.BoolVar(&isVersion, "version", false, "编译信息")
flag.StringVar(&consulToken, "token", "092288b5-824f-854c-39aa-a958afd9a633", "consul token") flag.StringVar(&consulToken, "token", "092288b5-824f-854c-39aa-a958afd9a633", "consul token")
......
...@@ -76,28 +76,32 @@ type SpeechWsResp struct { ...@@ -76,28 +76,32 @@ type SpeechWsResp struct {
ShouldEndSession bool `json:"shouldEndSession"` ShouldEndSession bool `json:"shouldEndSession"`
Api string `json:"api"` Api string `json:"api"`
Command *struct { Command *struct {
Param *struct { Param map[string]interface{} `json:"param"`
Volume string `json:"volume"` //Param *struct {
Mode string `json:"mode"` // Volume string `json:"volume"`
Object string `json:"object"` // Mode string `json:"mode"`
Extra string `json:"extra"` // Object string `json:"object"`
Version string `json:"version"` // Extra string `json:"extra"`
Song string `json:"song"` // Version string `json:"version"`
Singer string `json:"singer"` // Song string `json:"song"`
Emotion string `json:"emotion"` // Singer string `json:"singer"`
Album string `json:"album"` // Emotion string `json:"emotion"`
Language string `json:"language"` // Album string `json:"album"`
Age string `json:"age"` // Language string `json:"language"`
Instrument string `json:"instrument"` // Age string `json:"age"`
Author string `json:"author"` // Instrument string `json:"instrument"`
Composer string `json:"composer"` // Author string `json:"author"`
People string `json:"people"` // Composer string `json:"composer"`
Area string `json:"area"` // People string `json:"people"`
Theme string `json:"theme"` // Area string `json:"area"`
Style string `json:"style"` // Theme string `json:"theme"`
Toplist string `json:"toplist"` // Style string `json:"style"`
AgeRange string `json:"ageRange"` // Toplist string `json:"toplist"`
} `json:"param"` // AgeRange string `json:"ageRange"`
// Gender string `json:"gender"`
// SuitableAge string `json:"suitable_age"`
// Scene string `json:"scene"`
//} `json:"param"`
Api string `json:"api"` Api string `json:"api"`
} `json:"command"` } `json:"command"`
} `json:"dm"` } `json:"dm"`
......
...@@ -224,6 +224,24 @@ func newsDomain(params *model.SpeechDomainParams) []byte { ...@@ -224,6 +224,24 @@ func newsDomain(params *model.SpeechDomainParams) []byte {
return replyWithChat(error_reply, "doudi") return replyWithChat(error_reply, "doudi")
} }
query := params.SpeechWsResp.Dm.Input
if params.CheckDmCommand() {
if params.SpeechWsResp.Dm.Command.Api != "" {
switch params.SpeechWsResp.Dm.Command.Api {
case "DUI.MediaController.Pause":
return transformGreeProtocolReply(query, "PlayControl", "control_pause", nil)
case "DUI.MediaController.Play":
return transformGreeProtocolReply(query, "PlayControl", "control_resume", nil)
case "DUI.MediaController.Stop":
return transformGreeProtocolReply(query, "PlayControl", "control_stop", nil)
case "DUI.MediaController.Next", "DUI.MediaController.Switch":
return transformGreeProtocolReply(query, "PlayControl", "control_next", nil)
case "DUI.MediaController.Prev":
return transformGreeProtocolReply(query, "PlayControl", "control_previous", nil)
}
}
}
res.Header.Semantic.Domain = "news" res.Header.Semantic.Domain = "news"
res.Header.Semantic.Intent = "search" res.Header.Semantic.Intent = "search"
res.Header.Semantic.SkillId = res.Header.Semantic.Domain + "." + res.Header.Semantic.Intent res.Header.Semantic.SkillId = res.Header.Semantic.Domain + "." + res.Header.Semantic.Intent
...@@ -350,22 +368,6 @@ func ancientpoemDomain(params *model.SpeechDomainParams) []byte { ...@@ -350,22 +368,6 @@ func ancientpoemDomain(params *model.SpeechDomainParams) []byte {
} }
} }
//if len(params.SpeechWsResp.Dm.Widget.Content) > 0 {
// for i := 0; i < len(params.SpeechWsResp.Dm.Widget.Content); i++ {
// res.ListItems = append(res.ListItems, map[string]interface{}{
// "url": params.SpeechWsResp.Dm.Widget.Content[i].LinkUrl,
// "title": params.SpeechWsResp.Dm.Widget.Content[i].Title,
// "content": params.SpeechWsResp.Dm.Widget.Content[i].Text,
// "author": params.SpeechWsResp.Dm.Widget.Content[i].Author,
// "dynasty": params.SpeechWsResp.Dm.Widget.Content[i].Extra.Dynasty,
// "mediaId": "",
// "type": params.SpeechWsResp.Dm.Widget.Type, //原来是 AUDIO,看看是否能播放
// //思必驰的没有回复话术
// //"content": params.Dm.Widget.Content[i].TextContent,
// })
// }
//}
res.Header.Semantic.SkillId = res.Header.Semantic.Domain + "." + res.Header.Semantic.Intent res.Header.Semantic.SkillId = res.Header.Semantic.Domain + "." + res.Header.Semantic.Intent
return Marshal(params, res) return Marshal(params, res)
} }
...@@ -505,8 +507,8 @@ func alarmDomain(params *model.SpeechDomainParams) []byte { ...@@ -505,8 +507,8 @@ func alarmDomain(params *model.SpeechDomainParams) []byte {
return replyWithChat(error_reply, "doudi") return replyWithChat(error_reply, "doudi")
} }
api := params.SpeechWsResp.Dm.Command.Api api := params.SpeechWsResp.Dm.Command.Api
extra := params.SpeechWsResp.Dm.Command.Param.Extra extra := params.SpeechWsResp.Dm.Command.Param["extra"].(string)
object := params.SpeechWsResp.Dm.Command.Param.Object object := params.SpeechWsResp.Dm.Command.Param["object"].(string)
var extraParam model.ExtraParams var extraParam model.ExtraParams
if err := json.Unmarshal([]byte(extra), &extraParam); err != nil { if err := json.Unmarshal([]byte(extra), &extraParam); err != nil {
...@@ -715,13 +717,13 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte { ...@@ -715,13 +717,13 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte {
if !params.CheckCommandParam() { if !params.CheckCommandParam() {
return replyWithChat(error_reply, "doudi") return replyWithChat(error_reply, "doudi")
} else { } else {
if params.SpeechWsResp.Dm.Command.Param.Volume != "" && params.SpeechWsResp.Dm.Command.Api == "DUI.MediaController.SetVolume" { if params.SpeechWsResp.Dm.Command.Param["volume"].(string) != "" && params.SpeechWsResp.Dm.Command.Api == "DUI.MediaController.SetVolume" {
if strings.Contains(params.SpeechWsResp.Dm.Command.Param.Volume, "-") || strings.Contains(params.SpeechWsResp.Dm.Command.Param.Volume, "+") { if strings.Contains(params.SpeechWsResp.Dm.Command.Param["volume"].(string), "-") || strings.Contains(params.SpeechWsResp.Dm.Command.Param["volume"].(string), "+") {
pattern := `([+-]?)(\d+)` // 分组1:符号(+/-),分组2:数字 pattern := `([+-]?)(\d+)` // 分组1:符号(+/-),分组2:数字
re := regexp.MustCompile(pattern) re := regexp.MustCompile(pattern)
// 查找所有匹配项 // 查找所有匹配项
matches := re.FindAllStringSubmatch(params.SpeechWsResp.Dm.Command.Param.Volume, -1) matches := re.FindAllStringSubmatch(params.SpeechWsResp.Dm.Command.Param["volume"].(string), -1)
var sign, numStr, action string var sign, numStr, action string
for _, match := range matches { for _, match := range matches {
...@@ -742,22 +744,22 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte { ...@@ -742,22 +744,22 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte {
} }
return transformGreeProtocolReply(query, "UniversalControl", action, &semanticParams) return transformGreeProtocolReply(query, "UniversalControl", action, &semanticParams)
} else if params.SpeechWsResp.Dm.Command.Param.Volume == "max" { } else if params.SpeechWsResp.Dm.Command.Param["volume"].(string) == "max" {
return transformGreeProtocolReply(query, "UniversalControl", "control_riseVolMax", nil) return transformGreeProtocolReply(query, "UniversalControl", "control_riseVolMax", nil)
} else if params.SpeechWsResp.Dm.Command.Param.Volume == "min" { } else if params.SpeechWsResp.Dm.Command.Param["volume"].(string) == "min" {
return transformGreeProtocolReply(query, "UniversalControl", "control_reduceVolMin", nil) return transformGreeProtocolReply(query, "UniversalControl", "control_reduceVolMin", nil)
} else { } else {
semanticParams := make(map[string]interface{}) semanticParams := make(map[string]interface{})
// 百分数 // 百分数
if strings.Contains(params.SpeechWsResp.Dm.Command.Param.Volume, "%") { if strings.Contains(params.SpeechWsResp.Dm.Command.Param["volume"].(string), "%") {
parts := strings.SplitN(params.SpeechWsResp.Dm.Command.Param.Volume, "%", 2) parts := strings.SplitN(params.SpeechWsResp.Dm.Command.Param["volume"].(string), "%", 2)
semanticParams["degree"] = model.ParamsStr{Origin: parts[0], Norm: parts[0], Code: 0} semanticParams["degree"] = model.ParamsStr{Origin: parts[0], Norm: parts[0], Code: 0}
return transformGreeProtocolReply(query, "UniversalControl", "control_setVol", &semanticParams) return transformGreeProtocolReply(query, "UniversalControl", "control_setVol", &semanticParams)
} }
// 分数 // 分数
if strings.Contains(params.SpeechWsResp.Dm.Command.Param.Volume, "/") { if strings.Contains(params.SpeechWsResp.Dm.Command.Param["volume"].(string), "/") {
num, err := fractionToPercent(params.SpeechWsResp.Dm.Command.Param.Volume) num, err := fractionToPercent(params.SpeechWsResp.Dm.Command.Param["volume"].(string))
if err != nil { if err != nil {
global.Logger.WithFields(logger.Fields{ global.Logger.WithFields(logger.Fields{
"requestId": params.RequestId, "requestId": params.RequestId,
...@@ -772,12 +774,12 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte { ...@@ -772,12 +774,12 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte {
return transformGreeProtocolReply(query, "UniversalControl", "control_setVol", &semanticParams) return transformGreeProtocolReply(query, "UniversalControl", "control_setVol", &semanticParams)
} }
semanticParams["degree"] = model.ParamsStr{Origin: params.SpeechWsResp.Dm.Command.Param.Volume, Norm: params.SpeechWsResp.Dm.Command.Param.Volume, Code: 0} semanticParams["degree"] = model.ParamsStr{Origin: params.SpeechWsResp.Dm.Command.Param["volume"].(string), Norm: params.SpeechWsResp.Dm.Command.Param["volume"].(string), Code: 0}
return transformGreeProtocolReply(query, "UniversalControl", "control_setVol", &semanticParams) return transformGreeProtocolReply(query, "UniversalControl", "control_setVol", &semanticParams)
} }
} else if params.SpeechWsResp.Dm.Command.Api == "DUI.System.Sounds.OpenMode" && params.SpeechWsResp.Dm.Command.Param.Mode == "静音模式" { } else if params.SpeechWsResp.Dm.Command.Api == "DUI.System.Sounds.OpenMode" && params.SpeechWsResp.Dm.Command.Param["mode"].(string) == "静音模式" {
return transformGreeProtocolReply(query, "SystemControl", "control_volumeOff", nil) return transformGreeProtocolReply(query, "SystemControl", "control_volumeOff", nil)
} else if params.SpeechWsResp.Dm.Command.Api == "DUI.System.Sounds.CloseMode" && params.SpeechWsResp.Dm.Command.Param.Mode == "静音模式" { } else if params.SpeechWsResp.Dm.Command.Api == "DUI.System.Sounds.CloseMode" && params.SpeechWsResp.Dm.Command.Param["mode"].(string) == "静音模式" {
return transformGreeProtocolReply(query, "SystemControl", "control_volumeOn", nil) return transformGreeProtocolReply(query, "SystemControl", "control_volumeOn", nil)
} }
} }
......
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