diff --git a/service/speechNlu/constant.go b/service/speechNlu/constant.go index 5c06443f9248b74ccbd89f181206b1921490ea04..ec0526f54de6382b9609a8cfae333c69eb12cf3a 100644 --- a/service/speechNlu/constant.go +++ b/service/speechNlu/constant.go @@ -68,27 +68,27 @@ const ( CHAT = "闲聊全库" CALENDAR = "日历" - NEWS = "新闻" - ANCIENTPOEM = "诗词" - SPORTS = "sports" - ASTRO = "星座" - STOCK = "stock" - TRANSLATE = "翻译大全" - ALARM = "提醒" - SCIENCE = "计算器" - CHENGYU = "成语" - BAIKE = "百科" - FM = "网络电台" - CHILDMUSIC = "儿歌" - GLOBALCTRL = "中控" - PlayCTRL = "播放控制" - MUSIC = "音乐" - HELP = "产品形象" - STORY = "故事" - FINANCE = "汇率" - CONVERT = "单位换算" - HOLIDAY = "节假日查询" - SLEEPMUSIC = "声音博物馆" + NEWS = "新闻" + ANCIENTPOEM = "诗词" + SPORTS = "sports" + ASTRO = "星座" + STOCK = "stock" + TRANSLATE = "翻译大全" + ALARM = "提醒" + SCIENCE = "计算器" + CHENGYU = "成语" + BAIKE = "百科" + FM = "网络电台" + CHILDMUSIC = "儿歌" + GLOBALCTRL = "中控" + PlayCTRL = "播放控制" + MUSIC = "音乐" + HELP = "产品形象" + STORY = "故事" + FINANCE = "汇率" + CONVERT = "单位换算" + HOLIDAY = "节假日查询" + //SLEEPMUSIC = "声音博物馆" RELATION = "亲戚关系计算" WASTESORTING = "垃圾分类" diff --git a/service/speechNlu/domain.go b/service/speechNlu/domain.go index b81e19a0a6dd5ac58bc15b574f343fd9a4cd183f..5a8bcd2ad5d2e2d142065e0d804a0c5f9729e2b7 100644 --- a/service/speechNlu/domain.go +++ b/service/speechNlu/domain.go @@ -331,11 +331,11 @@ func jokeDomain(params *model.SpeechDomainParams) []byte { return replyWithChat(error_reply, "doudi") } - if params.SpeechWsResp.Dm.IntentName == "播放控制" { - if params.SpeechWsResp.Dm.Command.Api == "DUI.MediaController.Next" || params.SpeechWsResp.Dm.Command.Api == "DUI.MediaController.Switch" { - return transformGreeProtocolReply(params.SpeechWsResp.Dm.Input, "PlayControl", "control_next", nil) - } - } + //if params.SpeechWsResp.Dm.IntentName == "播放控制" { + // if params.SpeechWsResp.Dm.Command.Api == "DUI.MediaController.Next" || params.SpeechWsResp.Dm.Command.Api == "DUI.MediaController.Switch" { + // return transformGreeProtocolReply(params.SpeechWsResp.Dm.Input, "PlayControl", "control_next", nil) + // } + //} res.Header.Semantic.Domain = "joke" res.Header.Semantic.Intent = "tell" @@ -1007,6 +1007,59 @@ func helpDomain(params *model.SpeechDomainParams) []byte { return Marshal(params, &result) } +func childMusicDomain(params *model.SpeechDomainParams) []byte { + res, err := baseParse(params) + if err != nil { + global.Logger.WithFields(logger.Fields{ + "requestId": params.RequestId, + "mac": params.Mac, + "mid": params.Mid, + "vender": params.MidType, + }).Error("childMusicDomain baseParse error.") + return replyWithChat(error_reply, "doudi") + } + + res.Header.Semantic.Domain = "music" + res.Header.Semantic.Intent = "play" + res.Header.Semantic.SkillId = res.Header.Semantic.Domain + "." + res.Header.Semantic.Intent + res.ListItems = make([]map[string]interface{}, 0) + + sliceData, isSlice := params.SpeechWsResp.Dm.Widget.Content.([]interface{}) + if !isSlice { + global.Logger.WithFields(logger.Fields{ + "requestId": params.RequestId, + "mac": params.Mac, + "mid": params.Mid, + "vender": params.MidType, + }).Error("params.SpeechWsResp.Dm.Widget.Content不是数组类型") + if res.ResponseText != "" { + return replyWithChat(res.ResponseText, "chat") + } + return replyWithChat(error_reply, "doudi") + } + + for _, item := range sliceData { + itemBytes, _ := json.Marshal(item) + var con model.Content + if err := json.Unmarshal(itemBytes, &con); err != nil { + global.Logger.WithFields(logger.Fields{ + "requestId": params.RequestId, + "mac": params.Mac, + "mid": params.Mid, + "vender": params.MidType, + }).Errorf("json.Unmarshal元素解析失败: %v", err) + return replyWithChat(error_reply, "doudi") + } + res.ListItems = append(res.ListItems, map[string]interface{}{ + "url": con.LinkUrl, + "song": con.Title, + //思必驰的没有回复话术 + //"content": params.Dm.Widget.Content[i].TextContent, + }) + } + return Marshal(params, res) +} + func Marshal(params *model.SpeechDomainParams, res *model.ResponseBody) []byte { if res.Header.Semantic.Domain == "" { res.Header.Semantic.Domain = "chat" diff --git a/service/speechNlu/register.go b/service/speechNlu/register.go index 5c322cc886e77f8086417943b4aa86c431b025f1..9a11c56a893e5a30212aedde159184f94077b44f 100644 --- a/service/speechNlu/register.go +++ b/service/speechNlu/register.go @@ -38,12 +38,12 @@ func register() { DomainRegister(SCIENCE, scienceDomain) DomainRegister(CHENGYU, chengyuDomain) DomainRegister(BAIKE, baikeDomain) - DomainRegister(FM, fmDomain) - DomainRegister(CHILDMUSIC, musicDomain) + //DomainRegister(FM, fmDomain) + DomainRegister(CHILDMUSIC, childMusicDomain) DomainRegister(GLOBALCTRL, globalCtrlDomain) DomainRegister(PlayCTRL, playCtrlDomain) DomainRegister(MUSIC, musicDomain) - DomainRegister(SLEEPMUSIC, sleepMusicDomain) + //DomainRegister(SLEEPMUSIC, sleepMusicDomain) DomainRegister(HELP, helpDomain) DomainRegister(STORY, fmDomain) DomainRegister(FINANCE, financeDomain)