package tencentNlu import ( "context" "errors" "fmt" "speech-nlu-parse/global" "speech-nlu-parse/model" "speech-nlu-parse/pkg/logger" "speech-nlu-parse/pkg/proto" "time" "google.golang.org/grpc" ) type TencentNlpSkill struct { } func (this *TencentNlpSkill) GetCommandReq(mac, homeId string, requestId string, resp *model.TencentNlpWsResp) (*proto.TencentNlpSkillRequest, error) { if !resp.CheckSkill() { return nil, errors.New("GetReq resp Skill is not exist.") } var name string var param map[string]string cmd := resp.GetCommand() name = cmd.Name param = cmd.Param var textList []*proto.TextItem textList = make([]*proto.TextItem, 0) for i := 0; i < len(cmd.TextList); i++ { textList = append(textList, &proto.TextItem{ Status: cmd.TextList[i].Status, Text: cmd.TextList[i].Text, PlaceholderList: cmd.TextList[i].PlaceholderList, }) } req := proto.TencentNlpSkillRequest{ AppInfo: &proto.TencentNlpSkillRequest_AppInfo{ RequestId: requestId, }, DevInfo: &proto.TencentNlpSkillRequest_DevInfo{ Mac: mac, }, Command: &proto.Command{ Name: name, Param: param, TextList: textList, }, UserInfo: &proto.TencentNlpSkillRequest_UserInfo{ Hid: homeId, }, } return &req, nil } func (this *TencentNlpSkill) GetNativeReq(mac, homeId string, requestId string, resp *model.TencentNlpWsResp) (*proto.TencentNlpSkillRequest, error) { if !resp.CheckNative() { return nil, errors.New("GetNativeReq resp Native is not exist.") } var name string var param map[string]string native := resp.GetNativate() name = native.Name param = native.Param req := proto.TencentNlpSkillRequest{ AppInfo: &proto.TencentNlpSkillRequest_AppInfo{ RequestId: requestId, }, DevInfo: &proto.TencentNlpSkillRequest_DevInfo{ Mac: mac, }, Command: &proto.Command{ Name: name, Param: param, }, UserInfo: &proto.TencentNlpSkillRequest_UserInfo{ // Uid: , Hid: homeId, }, } return &req, nil } func (this *TencentNlpSkill) Req(params *model.DomainParamsWs, req *proto.TencentNlpSkillRequest) (*proto.TencentNlpSkillResponse, error) { requestId := params.RequestId mac := params.Mac mid := params.Mid vender := params.MidType sessionId := params.SessionId serviceInfo, err := global.ConsulObj.GetService("alarm_remind", "") if err != nil { return nil, err } conn, err := grpc.Dial(fmt.Sprintf("%s:%d", serviceInfo.GetAddress(), serviceInfo.GetPort()), grpc.WithInsecure(), grpc.WithNoProxy()) if err != nil { return nil, err } defer conn.Close() global.Logger.WithFields(logger.Fields{ "data": map[string]interface{}{ "tencentNlpSkillRequest": req, }, "requestId": requestId, "mac": mac, "mid": mid, "vender": vender, "sessionId": sessionId, }).Info("TencentNlpSkill request.") c := proto.NewTencentNlpSkillClient(conn) ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) defer cancel() rep, err := c.Process(ctx, req) if err != nil { return nil, err } global.Logger.WithFields(logger.Fields{ "data": map[string]interface{}{ "tencentNlpSkillRequest": rep, }, "requestId": requestId, "mac": mac, "mid": mid, "vender": vender, "sessionId": sessionId, }).Info("TencentNlpSkill response.") return rep, nil }