Commit 3950e916 authored by 赵文静's avatar 赵文静

补充闹钟

parent c60c5dfb
...@@ -77,6 +77,8 @@ type SpeechWsResp struct { ...@@ -77,6 +77,8 @@ type SpeechWsResp struct {
Param *struct { Param *struct {
Volume string `json:"volume"` Volume string `json:"volume"`
Mode string `json:"mode"` Mode string `json:"mode"`
Object string `json:"object"`
Extra string `json:"extra"`
} `json:"param"` } `json:"param"`
Api string `json:"api"` Api string `json:"api"`
} `json:"command"` } `json:"command"`
......
This diff is collapsed.
...@@ -10,29 +10,23 @@ message AlarmRemindSkillRequest{ ...@@ -10,29 +10,23 @@ message AlarmRemindSkillRequest{
string appId = 1; string appId = 1;
string requestId = 2; string requestId = 2;
} }
message UserInfo {
string uid = 1;
string hid = 2;
}
message DevInfo { message DevInfo {
string mac = 1; string mac = 1;
string tarMac = 2; string mid = 2;
string vender = 3;
string hid = 4;// 模组id
string homeId = 5; //家庭id
string uid = 6; // 用户id(可以空,语音入口一般无法识别用户)
} }
AppInfo appInfo = 1; AppInfo appInfo = 1;
DevInfo devInfo = 2; DevInfo devInfo = 2;
UserInfo userInfo = 3;
message Command { message Command {
string api = 1; string api = 1; // 意图
string repeat = 2; string extra = 2; // speech解析原字段 : 内部有content字段提取闹钟列表
int64 timestamp = 3; string object = 3; // speech解析原字段:闹钟/提醒(日程)
string date = 4;
string time = 5;
string event = 6;
string period = 7;
string object = 8; // 区分品类,闹钟/日程(提醒)
} }
Command command = 4; Command command = 3;
string asr_recognize = 5; string asr_recognize = 4;
} }
message AlarmRemindSkillResponse{ message AlarmRemindSkillResponse{
......
package connect
import (
"context"
"speech-nlu-parse/global"
"speech-nlu-parse/model"
"speech-nlu-parse/pkg/logger"
"speech-nlu-parse/pkg/proto"
"time"
)
const (
Alarm = "alarm_remind"
)
func AlarmGrpc(params *model.SpeechDomainParams, api, extra, object string) (*proto.AlarmRemindSkillResponse, error) {
conn, err := GrpcConn(Alarm)
if err != nil {
global.Logger.Errorf("faild to connect: %v", err)
return nil, err
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second*2)
defer cancel()
c := proto.NewAlarmRemindSkillClient(conn)
req := &proto.AlarmRemindSkillRequest{
AppInfo: &proto.AlarmRemindSkillRequest_AppInfo{
AppId: "speech-nlu-parse",
RequestId: params.RequestId,
},
DevInfo: &proto.AlarmRemindSkillRequest_DevInfo{
Mac: params.Mac,
Mid: params.Mid,
Vender: params.MidType,
Hid: "",
HomeId: "",
Uid: "",
},
Command: &proto.AlarmRemindSkillRequest_Command{
Api: api,
Extra: extra,
Object: object,
},
AsrRecognize: params.Query,
}
resp, err := c.HandleSpeechCommand(ctx, req)
if err != nil {
global.Logger.WithFields(logger.Fields{
"requestId": params.RequestId,
"AlarmGrpc serverName": Alarm,
"AlarmGrpc request": req,
}).Errorf("alarm grpc error: %v", err)
return nil, err
}
global.Logger.WithFields(logger.Fields{
"requestId": params.RequestId,
"AlarmGrpc serverName": Alarm,
"AlarmGrpc request": req,
"AlarmGrpc response": resp,
}).Info("AlarmGrpc")
return resp, nil
}
...@@ -45,10 +45,15 @@ func MusicGrpc(params *model.SpeechDomainParams) (*proto.MusicSpotResponse, erro ...@@ -45,10 +45,15 @@ func MusicGrpc(params *model.SpeechDomainParams) (*proto.MusicSpotResponse, erro
resp, err := c.GetMusicList(ctx, req) resp, err := c.GetMusicList(ctx, req)
if err != nil { if err != nil {
global.Logger.Errorf("MusicGrpc error: %v", err) global.Logger.WithFields(logger.Fields{
"requestId": params.RequestId,
"MusicGrpc serverName": MusicSpot,
"MusicGrpc request": req,
}).Errorf("MusicGrpc error: %v", err)
return nil, err return nil, err
} }
global.Logger.WithFields(logger.Fields{ global.Logger.WithFields(logger.Fields{
"requestId": params.RequestId,
"MusicGrpc serverName": MusicSpot, "MusicGrpc serverName": MusicSpot,
"MusicGrpc request": req, "MusicGrpc request": req,
"MusicGrpc response": resp, "MusicGrpc response": resp,
......
...@@ -359,33 +359,74 @@ func translateDomain(params *model.SpeechDomainParams) []byte { ...@@ -359,33 +359,74 @@ func translateDomain(params *model.SpeechDomainParams) []byte {
return Marshal(params, res) return Marshal(params, res)
} }
func alarmDevFilter(params *model.SpeechDomainParams) bool { func alarmDomain(params *model.SpeechDomainParams) []byte {
if params.Mid == "10f05" && params.MidType == "87654321" { if !params.CheckDm() || !params.CheckCommandParam() {
return true return replyWithChat(error_reply, "doudi")
} else if params.Mid == "10f05" && params.MidType == "7e000024" && params.AppKey == "a8814080829e11eda5c8e38bb1008e50" {
return true
} }
return false var result model.ResponseBody
} api := params.SpeechWsResp.Dm.Command.Api
extra := params.SpeechWsResp.Dm.Command.Param.Extra
object := params.SpeechWsResp.Dm.Command.Param.Object
type AlarmItem struct { if object == "闹钟" {
Content string `json:"content"` result.Header.Semantic.Domain = "alarm"
Id string `json:"id"` } else {
Note string `json:"note"` result.Header.Semantic.Domain = "reminder_v2"
RepeatType int `json:"repeatType"` }
SpeechType int `json:"speechType"` result.Header.Semantic.Code = 0
Start string `json:"start"` result.Header.Semantic.Msg = speech_nlu_parse
Type int `json:"type"` result.AsrRecongize = params.SpeechWsResp.Dm.Input
Url string `json:"url"` result.Header.Semantic.SessionComplete = params.SpeechWsResp.Dm.ShouldEndSession //params.SpeechWsResp.Dm.ShouldEndSession
} result.ResponseText = params.SpeechWsResp.Dm.Nlg
if api == "ai.dui.dskdm.reminder.query" {
result.Header.Semantic.Intent = "check"
result.Header.Semantic.SkillId = result.Header.Semantic.Domain + "." + result.Header.Semantic.Intent
} else if api == "ai.dui.dskdm.reminder.insert" {
result.Header.Semantic.Intent = "new"
result.Header.Semantic.SkillId = result.Header.Semantic.Domain + "." + result.Header.Semantic.Intent
resAlarm, err := connect.AlarmGrpc(params, api, extra, object)
if err != nil {
global.Logger.WithFields(logger.Fields{
"requestId": params.RequestId,
"mac": params.Mac,
"mid": params.Mid,
"vender": params.MidType,
}).Errorf("connect.AlarmGrpc error:%v", err)
return replyWithChat(error_reply, "doudi")
}
if resAlarm.GetStatus().GetCode() == 0 {
return Marshal(params, &result)
} else {
resultTextStr := "网络不稳定,请稍后再试"
return replyWithChat(resultTextStr, "chat.chat")
}
} else if api == "ai.dui.dskdm.reminder.remove" {
result.Header.Semantic.Intent = "delete"
result.Header.Semantic.SkillId = result.Header.Semantic.Domain + "." + result.Header.Semantic.Intent
if !params.SpeechWsResp.Dm.ShouldEndSession {
return Marshal(params, &result)
}
resAlarm, err := connect.AlarmGrpc(params, api, extra, object)
if err != nil {
global.Logger.WithFields(logger.Fields{
"requestId": params.RequestId,
"mac": params.Mac,
"mid": params.Mid,
"vender": params.MidType,
}).Errorf("connect.AlarmGrpc error:%v", err)
return replyWithChat(error_reply, "doudi")
}
if resAlarm.GetStatus().GetCode() == 0 {
return Marshal(params, &result)
} else {
resultTextStr := "网络不稳定,请稍后再试"
return replyWithChat(resultTextStr, "chat.chat")
}
}
// 闹钟待写
func alarmDomain(params *model.SpeechDomainParams) []byte {
//mac := params.Mac
//
//if !params.CheckDm() || !params.CheckDmParam() {
// return replyWithChat(error_reply, "doudi")
//}
// //
//var result model.ResponseBody //var result model.ResponseBody
//result.Header.Semantic.Code = 0 //result.Header.Semantic.Code = 0
...@@ -480,8 +521,8 @@ func alarmDomain(params *model.SpeechDomainParams) []byte { ...@@ -480,8 +521,8 @@ func alarmDomain(params *model.SpeechDomainParams) []byte {
//} //}
// //
//return Marshal(params, &result) //return Marshal(params, &result)
resultTextStr := "暂不支持闹钟设定"
return replyWithChat(resultTextStr, "chat.chat") return Marshal(params, &result)
} }
func scienceDomain(params *model.SpeechDomainParams) []byte { func scienceDomain(params *model.SpeechDomainParams) []byte {
......
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