package connect import ( "context" "encoding/json" "fmt" "google.golang.org/grpc" "speech-nlu-parse/global" "speech-nlu-parse/model" "speech-nlu-parse/pkg/logger" "speech-nlu-parse/pkg/proto" "time" ) const ( MusicSpot = "music-spot" ) func MusicGrpc(params *model.SpeechDomainParams) (*proto.MusicSpotResponse, error) { //conn, err := GrpcConn(MusicSpot) //if err != nil { // global.Logger.Errorf("faild to connect: %v", err) // return nil, err //} // consul注册中心获取host port serviceInfo, err := global.ConsulObj.GetService(MusicSpot, "") if err != nil { return nil, err } // conn, err := grpc.Dial(fmt.Sprintf("%s:%d", global.AuthSetting.Ip, global.AuthSetting.GrpcPort), grpc.WithInsecure()) 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() ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) defer cancel() c := proto.NewMusicSpotClient(conn) req := &proto.MusicSpotRequest{ AppInfo: &proto.MusicSpotRequest_AppInfo{ RequestId: params.RequestId, }, DevInfo: &proto.MusicSpotRequest_DevInfo{ Mac: params.Mac, SubMac: "", Mid: params.Mid, Vender: params.MidType, Hid: "", HomeId: params.HomeId, UserId: "", }, Data: &proto.MusicSpotRequest_Data{ Query: params.Query, Command: &proto.MusicSpotRequest_Data_Command{ Api: params.SpeechWsResp.Dm.Command.Api, //Param: params.SpeechWsResp.Dm.Command.Param, }, }, } fmt.Println("params.SpeechWsResp.Dm.Command.Param:", params.SpeechWsResp.Dm.Command.Param) jsonData, err := json.Marshal(params.SpeechWsResp.Dm.Command.Param) if err != nil { fmt.Println("JSON 编码失败:", err) return nil, err } // 再解码成 map var paramMap map[string]string if err := json.Unmarshal(jsonData, ¶mMap); err != nil { fmt.Println("JSON 解码失败:", err) return nil, err } req.Data.Command.Param = paramMap fmt.Println("req.Data.Command.Param:", req.Data.Command.Param) resp, err := c.GetMusicList(ctx, req) if err != nil { global.Logger.WithFields(logger.Fields{ "requestId": params.RequestId, "MusicGrpc serverName": MusicSpot, "MusicGrpc request": req, }).Errorf("MusicGrpc error: %v", err) return nil, err } global.Logger.WithFields(logger.Fields{ "requestId": params.RequestId, "MusicGrpc serverName": MusicSpot, "MusicGrpc request": req, "MusicGrpc response": resp, }).Info("MusicGrpc") return resp, nil }