Commit 6667c907 authored by 赵文静's avatar 赵文静

修改授权、音乐、增加儿童空调分支

parent 567cbc93
Pipeline #5881 passed with stage
in 0 seconds
# 更新日志 # 更新日志
## [3.4.4-beta.3] - 2025.9.8
### Changed
- 修改从授权服务获取productId和deviceId
- 修改音乐,将授权服务的token部分传给音乐服务
- 增加儿童空调url分支,屏蔽笑话功能
## [3.4.4-beta.2] - 2025.9.2 ## [3.4.4-beta.2] - 2025.9.2
### Changed ### Changed
- 屏蔽闹钟 - 屏蔽闹钟
......
...@@ -27,12 +27,13 @@ X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db ...@@ -27,12 +27,13 @@ X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db
"ip": "14.215.222.17", "ip": "14.215.222.17",
"mac": "ece154a865eb", "mac": "ece154a865eb",
"mid": "11011", "mid": "11011",
"query":"播放宝宝睡觉的歌" , "query":"查询未来七天的天气" ,
"requestId": "123456111" "requestId": "123456111"
} }
### ###
#POST http://172.28.54.27:13302/semantic/unisoundc2c/speech-nlu-parse #POST http://172.28.54.27:13302/semantic/unisoundc2c/speech-nlu-parse
#ece154a865eb ece154a865bc
POST http://172.28.124.110:13302/semantic/unisoundc2c/speech-nlu-parse POST http://172.28.124.110:13302/semantic/unisoundc2c/speech-nlu-parse
Content-Type: application/json Content-Type: application/json
X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db
...@@ -40,8 +41,8 @@ X-AppKey: 391b50b5ed634fc49a3db7cfd6bc40db ...@@ -40,8 +41,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"
} }
......
...@@ -44,7 +44,8 @@ Redis: ...@@ -44,7 +44,8 @@ Redis:
Speech: Speech:
ProductId: 279629895 ProductId: 279629895
Apikey : 0c74988953dd4ed4bf31955527802cf3 Apikey : 0c74988953dd4ed4bf31955527802cf3
Url: wss://dds.dui.ai/dds/v2/test Url: wss://dds.dui.ai/dds/v2/dev
ChildUrl: wss://dds.dui.ai/dds/v2/child-dev
FeedBackUrl: http://apis.duiopen.com/feedback/letingv4 FeedBackUrl: http://apis.duiopen.com/feedback/letingv4
MusicDomain: MusicDomain:
...@@ -96,7 +97,7 @@ DevLimited: # 设备差异化的配置, 通过mid查询对应的配置 ...@@ -96,7 +97,7 @@ DevLimited: # 设备差异化的配置, 通过mid查询对应的配置
IsMusicRemid: true # 测试服为true 暂不更新, 正式服为false; 正式服与测试服的也是有差异. 2022年2月14日11:27:43 IsMusicRemid: true # 测试服为true 暂不更新, 正式服为false; 正式服与测试服的也是有差异. 2022年2月14日11:27:43
MusicRemidText: 您的设备尚未授权,请前往格力+手机应用绑定授权。 MusicRemidText: 您的设备尚未授权,请前往格力+手机应用绑定授权。
# MusicRemidText: 您的语音空调尚未激活,请尽快更新格力+APP,进入语音空调语音技能页面,点击酷狗音乐进行授权,授权过程不产生任何费用。 # MusicRemidText: 您的语音空调尚未激活,请尽快更新格力+APP,进入语音空调语音技能页面,点击酷狗音乐进行授权,授权过程不产生任何费用。
ShieldedDomainList: [] ShieldedDomainList: ['笑话']
- -
Mids: ['default'] # 其他空调(一般的语音空调), 默认(mid未出现在上面则使用这个设置) Mids: ['default'] # 其他空调(一般的语音空调), 默认(mid未出现在上面则使用这个设置)
Limited: Limited:
......
...@@ -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.105:8500", "consul服务地址") flag.StringVar(&consulUrl, "consul", "http://172.28.124.106: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")
......
...@@ -13,6 +13,15 @@ type SpeechDomainParams struct { ...@@ -13,6 +13,15 @@ type SpeechDomainParams struct {
SessionId string SessionId string
HomeId string HomeId string
AppKey string AppKey string
TokenMemo *TokenMemo
}
type TokenMemo struct {
AccessToken string `json:"accessToken"`
DeviceId string `json:"deviceId"`
ClientId string `json:"clientId"`
ProductId string `json:"productId"`
Status int32 `json:"status"`
} }
type SpeechWsResp struct { type SpeechWsResp struct {
......
This diff is collapsed.
...@@ -18,6 +18,16 @@ message MusicSpotRequest { ...@@ -18,6 +18,16 @@ message MusicSpotRequest {
string homeId = 6; // 设备所属家庭id string homeId = 6; // 设备所属家庭id
string userId = 7; // 用户id string userId = 7; // 用户id
message TokenMemo {
string accessToken = 1;
string deviceId = 2;
string clientId = 3;
string productId = 4;
int32 status = 5;
}
TokenMemo authData = 8; //授权信息
} }
AppInfo appInfo = 1; AppInfo appInfo = 1;
DevInfo devInfo = 2; DevInfo devInfo = 2;
......
This diff is collapsed.
...@@ -82,62 +82,4 @@ message SemanticData { ...@@ -82,62 +82,4 @@ message SemanticData {
service TencentNlu { service TencentNlu {
rpc TencentNluParse (SemanticRequest) returns (SemanticResponse) {} rpc TencentNluParse (SemanticRequest) returns (SemanticResponse) {}
rpc TencentNluParseStream (stream SemanticRequest) returns (stream SemanticResponse) {} rpc TencentNluParseStream (stream SemanticRequest) returns (stream SemanticResponse) {}
} }
\ No newline at end of file
/*
################## token_search.proto ##################
查询dsn及状态信息
*/
message TokenSearchRequest {
string mac = 1;
string requestId = 2;
string mid = 3; // mid
string vender = 4; // 细分码,用于设备没授权的情况下给默认boot
string homeId = 5; // 设备所属家庭id
string userId = 6; // 用户id
}
/*
data.uriType 取值说明:
QQMusic = 0 // qq音乐
KugouMusic = 1 // 酷狗音乐
data.status 取值说明:
Unassigned = 0 //未分配 没有AppKey 没有token
Assigned = 1 //已分配
Using = 2 //已授权,使用中
Expired = 3 //过期
Invalidation = 4 //异常失效
Unbind = 5 //解除绑定
status.code
200 成功
401 激活错误
403 参数格式
405 设备为激活
*/
message TokenSearchResponse {
message Status {
int32 code = 1;
string msg = 2;
}
message TokenMemo {
string dsn = 1;
string authorization = 2;
string accessToken = 3;
string appKey = 4;
int32 status = 5;
int32 uriType = 6;
string homeId = 7; // 设备所绑定家庭的 homeid
}
Status status = 1;
TokenMemo data = 2;
}
service TokenSearch{
rpc TokenSearchHandle(TokenSearchRequest) returns (TokenSearchResponse);
}
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.25.1
// source: pkg/proto/service.proto
package proto
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
TencentNlu_TencentNluParse_FullMethodName = "/proto.TencentNlu/TencentNluParse"
TencentNlu_TencentNluParseStream_FullMethodName = "/proto.TencentNlu/TencentNluParseStream"
)
// TencentNluClient is the client API for TencentNlu service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type TencentNluClient interface {
TencentNluParse(ctx context.Context, in *SemanticRequest, opts ...grpc.CallOption) (*SemanticResponse, error)
TencentNluParseStream(ctx context.Context, opts ...grpc.CallOption) (TencentNlu_TencentNluParseStreamClient, error)
}
type tencentNluClient struct {
cc grpc.ClientConnInterface
}
func NewTencentNluClient(cc grpc.ClientConnInterface) TencentNluClient {
return &tencentNluClient{cc}
}
func (c *tencentNluClient) TencentNluParse(ctx context.Context, in *SemanticRequest, opts ...grpc.CallOption) (*SemanticResponse, error) {
out := new(SemanticResponse)
err := c.cc.Invoke(ctx, TencentNlu_TencentNluParse_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tencentNluClient) TencentNluParseStream(ctx context.Context, opts ...grpc.CallOption) (TencentNlu_TencentNluParseStreamClient, error) {
stream, err := c.cc.NewStream(ctx, &TencentNlu_ServiceDesc.Streams[0], TencentNlu_TencentNluParseStream_FullMethodName, opts...)
if err != nil {
return nil, err
}
x := &tencentNluTencentNluParseStreamClient{stream}
return x, nil
}
type TencentNlu_TencentNluParseStreamClient interface {
Send(*SemanticRequest) error
Recv() (*SemanticResponse, error)
grpc.ClientStream
}
type tencentNluTencentNluParseStreamClient struct {
grpc.ClientStream
}
func (x *tencentNluTencentNluParseStreamClient) Send(m *SemanticRequest) error {
return x.ClientStream.SendMsg(m)
}
func (x *tencentNluTencentNluParseStreamClient) Recv() (*SemanticResponse, error) {
m := new(SemanticResponse)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// TencentNluServer is the server API for TencentNlu service.
// All implementations must embed UnimplementedTencentNluServer
// for forward compatibility
type TencentNluServer interface {
TencentNluParse(context.Context, *SemanticRequest) (*SemanticResponse, error)
TencentNluParseStream(TencentNlu_TencentNluParseStreamServer) error
mustEmbedUnimplementedTencentNluServer()
}
// UnimplementedTencentNluServer must be embedded to have forward compatible implementations.
type UnimplementedTencentNluServer struct {
}
func (UnimplementedTencentNluServer) TencentNluParse(context.Context, *SemanticRequest) (*SemanticResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method TencentNluParse not implemented")
}
func (UnimplementedTencentNluServer) TencentNluParseStream(TencentNlu_TencentNluParseStreamServer) error {
return status.Errorf(codes.Unimplemented, "method TencentNluParseStream not implemented")
}
func (UnimplementedTencentNluServer) mustEmbedUnimplementedTencentNluServer() {}
// UnsafeTencentNluServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to TencentNluServer will
// result in compilation errors.
type UnsafeTencentNluServer interface {
mustEmbedUnimplementedTencentNluServer()
}
func RegisterTencentNluServer(s grpc.ServiceRegistrar, srv TencentNluServer) {
s.RegisterService(&TencentNlu_ServiceDesc, srv)
}
func _TencentNlu_TencentNluParse_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SemanticRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TencentNluServer).TencentNluParse(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TencentNlu_TencentNluParse_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TencentNluServer).TencentNluParse(ctx, req.(*SemanticRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TencentNlu_TencentNluParseStream_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(TencentNluServer).TencentNluParseStream(&tencentNluTencentNluParseStreamServer{stream})
}
type TencentNlu_TencentNluParseStreamServer interface {
Send(*SemanticResponse) error
Recv() (*SemanticRequest, error)
grpc.ServerStream
}
type tencentNluTencentNluParseStreamServer struct {
grpc.ServerStream
}
func (x *tencentNluTencentNluParseStreamServer) Send(m *SemanticResponse) error {
return x.ServerStream.SendMsg(m)
}
func (x *tencentNluTencentNluParseStreamServer) Recv() (*SemanticRequest, error) {
m := new(SemanticRequest)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// TencentNlu_ServiceDesc is the grpc.ServiceDesc for TencentNlu service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var TencentNlu_ServiceDesc = grpc.ServiceDesc{
ServiceName: "proto.TencentNlu",
HandlerType: (*TencentNluServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "TencentNluParse",
Handler: _TencentNlu_TencentNluParse_Handler,
},
},
Streams: []grpc.StreamDesc{
{
StreamName: "TencentNluParseStream",
Handler: _TencentNlu_TencentNluParseStream_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Metadata: "pkg/proto/service.proto",
}
This diff is collapsed.
syntax = "proto3";
package proto; //新增一个可选的package声明符,用来防止不同的消息类型有命名冲突
option go_package = "./pkg/proto;proto"; //这个选项表明生成go结构体所在的包
//import "google/protobuf/any.proto";
message AppInfo {
string requestId = 1;
}
message DevInfo {
string mac = 1;
string subMac = 2; // 子设备mac,中控变成了子设备
string mid = 3; // mid
string vender = 4; // 细分码,用于设备没授权的情况下给默认boot
string hid = 5;// 模组id,优先级高于细分码 - 若能匹配,优先使用
string homeId = 6; // 设备所属家庭 id
string userId = 7; // 用户id,非必传
}
message TokenSearchRequest {
string mac = 1;
string requestId = 2;
string mid = 3; // mid
string vender = 4; // 细分码,用于设备没授权的情况下给默认boot
string homeId = 5; // 设备所属家庭id
string userId = 6; // 用户id
string subMac = 7; // 子设备mac,中控变成了子设备
string hid = 8;// 模组id,优先级高于细分码 - 若能匹配,优先使用
bool isReBind = 9; //是否强制重新绑定
}
/*
data.uriType 取值说明:
QQMusic = 0 // qq音乐(腾讯v1)
QQMusicV2 = 1 // qq音乐(腾讯v2)
data.status 取值说明:
Unassigned = 0 //未分配
Assigned = 1 //已分配
Using = 2 //已授权,使用中
Expired = 3 //过期
Invalidation = 4 //异常失效
Unbind = 5 //解除绑定*/
message TokenSearchResponse {
message TokenMemo {
string dsn = 1;
string authorization = 2;
string accessToken = 3;
string appKey = 4;
int32 status = 5;
int32 uriType = 6;
string homeId = 7; // 设备所绑定家庭的 homeid
}
message Status {
int32 code = 1;
string msg = 2;
}
Status status = 1;
TokenMemo data = 2;
}
message DevMusicStatusChangeResponse {
message Status {
int32 code = 1;
string msg = 2;
}
Status status = 1;
}
message TokenSearchRequestV2 {
AppInfo appInfo = 1;
DevInfo devInfo = 2;
bool isReBind = 9; //是否强制重新绑定
}
message SpeechConfResponse {
message Data {
string productId = 1;
string appkey = 2;
}
message Status {
int32 code = 1;
string msg = 2;
}
Status status = 1;
Data data = 2;
}
message TokenSearchResponseNetease {
message Status {
int32 code = 1;
string msg = 2;
}
Status status = 1;
message Data {
string accessToken = 1;
string deviceId = 2;
string clientId = 3;
string productId = 4;
int32 status = 5;
string homeId = 6; // 设备所绑定家庭的 homeid
}
Data data = 2;
}
service TokenSearch{
rpc TokenSearchHandle(TokenSearchRequest) returns (TokenSearchResponse);
rpc TokenSearchHandleV2(TokenSearchRequest) returns (TokenSearchResponse); //升级版,给什么用什么,只去 mac 和 subMac 字段,其他的传入字段都不使用,只分配不会绑定到主账号
rpc DevBind(TokenSearchRequest) returns (TokenSearchResponse);//升级,给什么用什么,只去 mac 和 subMac 字段,其他的传入字段都不使用,且会绑定到主账号
rpc DevBindBySub(TokenSearchRequest) returns (TokenSearchResponse); // 该接口,subMac 必填且会用 subMac 覆盖 mac 字段
rpc DevMusicStatusChange(TokenSearchRequest) returns (DevMusicStatusChangeResponse); //如果发现设备音乐账号状态变更,则调用此接口
rpc GetSpeechConf(TokenSearchRequestV2) returns (SpeechConfResponse); // 思必驰配置获取
rpc TokenSearchNetease(TokenSearchRequestV2) returns (TokenSearchResponseNetease); // 网易云音乐token获取
}
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.25.1
// source: pkg/proto/v1/token_search.proto
package token
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
TokenSearch_TokenSearchHandle_FullMethodName = "/proto.TokenSearch/TokenSearchHandle"
TokenSearch_TokenSearchHandleV2_FullMethodName = "/proto.TokenSearch/TokenSearchHandleV2"
TokenSearch_DevBind_FullMethodName = "/proto.TokenSearch/DevBind"
TokenSearch_DevBindBySub_FullMethodName = "/proto.TokenSearch/DevBindBySub"
TokenSearch_DevMusicStatusChange_FullMethodName = "/proto.TokenSearch/DevMusicStatusChange"
TokenSearch_GetSpeechConf_FullMethodName = "/proto.TokenSearch/GetSpeechConf"
TokenSearch_TokenSearchNetease_FullMethodName = "/proto.TokenSearch/TokenSearchNetease"
)
// TokenSearchClient is the client API for TokenSearch service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type TokenSearchClient interface {
TokenSearchHandle(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error)
TokenSearchHandleV2(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error)
DevBind(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error)
DevBindBySub(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error)
DevMusicStatusChange(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*DevMusicStatusChangeResponse, error)
GetSpeechConf(ctx context.Context, in *TokenSearchRequestV2, opts ...grpc.CallOption) (*SpeechConfResponse, error)
TokenSearchNetease(ctx context.Context, in *TokenSearchRequestV2, opts ...grpc.CallOption) (*TokenSearchResponseNetease, error)
}
type tokenSearchClient struct {
cc grpc.ClientConnInterface
}
func NewTokenSearchClient(cc grpc.ClientConnInterface) TokenSearchClient {
return &tokenSearchClient{cc}
}
func (c *tokenSearchClient) TokenSearchHandle(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error) {
out := new(TokenSearchResponse)
err := c.cc.Invoke(ctx, TokenSearch_TokenSearchHandle_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tokenSearchClient) TokenSearchHandleV2(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error) {
out := new(TokenSearchResponse)
err := c.cc.Invoke(ctx, TokenSearch_TokenSearchHandleV2_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tokenSearchClient) DevBind(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error) {
out := new(TokenSearchResponse)
err := c.cc.Invoke(ctx, TokenSearch_DevBind_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tokenSearchClient) DevBindBySub(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*TokenSearchResponse, error) {
out := new(TokenSearchResponse)
err := c.cc.Invoke(ctx, TokenSearch_DevBindBySub_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tokenSearchClient) DevMusicStatusChange(ctx context.Context, in *TokenSearchRequest, opts ...grpc.CallOption) (*DevMusicStatusChangeResponse, error) {
out := new(DevMusicStatusChangeResponse)
err := c.cc.Invoke(ctx, TokenSearch_DevMusicStatusChange_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tokenSearchClient) GetSpeechConf(ctx context.Context, in *TokenSearchRequestV2, opts ...grpc.CallOption) (*SpeechConfResponse, error) {
out := new(SpeechConfResponse)
err := c.cc.Invoke(ctx, TokenSearch_GetSpeechConf_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *tokenSearchClient) TokenSearchNetease(ctx context.Context, in *TokenSearchRequestV2, opts ...grpc.CallOption) (*TokenSearchResponseNetease, error) {
out := new(TokenSearchResponseNetease)
err := c.cc.Invoke(ctx, TokenSearch_TokenSearchNetease_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TokenSearchServer is the server API for TokenSearch service.
// All implementations must embed UnimplementedTokenSearchServer
// for forward compatibility
type TokenSearchServer interface {
TokenSearchHandle(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error)
TokenSearchHandleV2(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error)
DevBind(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error)
DevBindBySub(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error)
DevMusicStatusChange(context.Context, *TokenSearchRequest) (*DevMusicStatusChangeResponse, error)
GetSpeechConf(context.Context, *TokenSearchRequestV2) (*SpeechConfResponse, error)
TokenSearchNetease(context.Context, *TokenSearchRequestV2) (*TokenSearchResponseNetease, error)
mustEmbedUnimplementedTokenSearchServer()
}
// UnimplementedTokenSearchServer must be embedded to have forward compatible implementations.
type UnimplementedTokenSearchServer struct {
}
func (UnimplementedTokenSearchServer) TokenSearchHandle(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method TokenSearchHandle not implemented")
}
func (UnimplementedTokenSearchServer) TokenSearchHandleV2(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method TokenSearchHandleV2 not implemented")
}
func (UnimplementedTokenSearchServer) DevBind(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DevBind not implemented")
}
func (UnimplementedTokenSearchServer) DevBindBySub(context.Context, *TokenSearchRequest) (*TokenSearchResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DevBindBySub not implemented")
}
func (UnimplementedTokenSearchServer) DevMusicStatusChange(context.Context, *TokenSearchRequest) (*DevMusicStatusChangeResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DevMusicStatusChange not implemented")
}
func (UnimplementedTokenSearchServer) GetSpeechConf(context.Context, *TokenSearchRequestV2) (*SpeechConfResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetSpeechConf not implemented")
}
func (UnimplementedTokenSearchServer) TokenSearchNetease(context.Context, *TokenSearchRequestV2) (*TokenSearchResponseNetease, error) {
return nil, status.Errorf(codes.Unimplemented, "method TokenSearchNetease not implemented")
}
func (UnimplementedTokenSearchServer) mustEmbedUnimplementedTokenSearchServer() {}
// UnsafeTokenSearchServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to TokenSearchServer will
// result in compilation errors.
type UnsafeTokenSearchServer interface {
mustEmbedUnimplementedTokenSearchServer()
}
func RegisterTokenSearchServer(s grpc.ServiceRegistrar, srv TokenSearchServer) {
s.RegisterService(&TokenSearch_ServiceDesc, srv)
}
func _TokenSearch_TokenSearchHandle_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TokenSearchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TokenSearchServer).TokenSearchHandle(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TokenSearch_TokenSearchHandle_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TokenSearchServer).TokenSearchHandle(ctx, req.(*TokenSearchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TokenSearch_TokenSearchHandleV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TokenSearchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TokenSearchServer).TokenSearchHandleV2(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TokenSearch_TokenSearchHandleV2_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TokenSearchServer).TokenSearchHandleV2(ctx, req.(*TokenSearchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TokenSearch_DevBind_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TokenSearchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TokenSearchServer).DevBind(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TokenSearch_DevBind_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TokenSearchServer).DevBind(ctx, req.(*TokenSearchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TokenSearch_DevBindBySub_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TokenSearchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TokenSearchServer).DevBindBySub(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TokenSearch_DevBindBySub_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TokenSearchServer).DevBindBySub(ctx, req.(*TokenSearchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TokenSearch_DevMusicStatusChange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TokenSearchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TokenSearchServer).DevMusicStatusChange(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TokenSearch_DevMusicStatusChange_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TokenSearchServer).DevMusicStatusChange(ctx, req.(*TokenSearchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _TokenSearch_GetSpeechConf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TokenSearchRequestV2)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TokenSearchServer).GetSpeechConf(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TokenSearch_GetSpeechConf_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TokenSearchServer).GetSpeechConf(ctx, req.(*TokenSearchRequestV2))
}
return interceptor(ctx, in, info, handler)
}
func _TokenSearch_TokenSearchNetease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TokenSearchRequestV2)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TokenSearchServer).TokenSearchNetease(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: TokenSearch_TokenSearchNetease_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TokenSearchServer).TokenSearchNetease(ctx, req.(*TokenSearchRequestV2))
}
return interceptor(ctx, in, info, handler)
}
// TokenSearch_ServiceDesc is the grpc.ServiceDesc for TokenSearch service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var TokenSearch_ServiceDesc = grpc.ServiceDesc{
ServiceName: "proto.TokenSearch",
HandlerType: (*TokenSearchServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "TokenSearchHandle",
Handler: _TokenSearch_TokenSearchHandle_Handler,
},
{
MethodName: "TokenSearchHandleV2",
Handler: _TokenSearch_TokenSearchHandleV2_Handler,
},
{
MethodName: "DevBind",
Handler: _TokenSearch_DevBind_Handler,
},
{
MethodName: "DevBindBySub",
Handler: _TokenSearch_DevBindBySub_Handler,
},
{
MethodName: "DevMusicStatusChange",
Handler: _TokenSearch_DevMusicStatusChange_Handler,
},
{
MethodName: "GetSpeechConf",
Handler: _TokenSearch_GetSpeechConf_Handler,
},
{
MethodName: "TokenSearchNetease",
Handler: _TokenSearch_TokenSearchNetease_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "pkg/proto/v1/token_search.proto",
}
...@@ -94,6 +94,7 @@ type SpeechSettings struct { ...@@ -94,6 +94,7 @@ type SpeechSettings struct {
ProductId string ProductId string
ApiKey string ApiKey string
Url string Url string
ChildUrl string
FeedBackUrl string FeedBackUrl string
} }
......
...@@ -53,6 +53,14 @@ func MusicGrpc(params *model.SpeechDomainParams) (*proto.MusicSpotResponse, erro ...@@ -53,6 +53,14 @@ func MusicGrpc(params *model.SpeechDomainParams) (*proto.MusicSpotResponse, erro
Hid: "", Hid: "",
HomeId: params.HomeId, HomeId: params.HomeId,
UserId: "", UserId: "",
AuthData: &proto.MusicSpotRequest_DevInfo_TokenMemo{
AccessToken: params.TokenMemo.AccessToken,
DeviceId: params.TokenMemo.DeviceId,
ClientId: params.TokenMemo.ClientId,
ProductId: params.TokenMemo.ProductId,
Status: params.TokenMemo.Status,
},
}, },
Data: &proto.MusicSpotRequest_Data{ Data: &proto.MusicSpotRequest_Data{
Query: params.Query, Query: params.Query,
......
package connect
import (
"context"
"fmt"
"google.golang.org/grpc"
"speech-nlu-parse/global"
"speech-nlu-parse/pkg/logger"
"speech-nlu-parse/pkg/proto/token"
"time"
)
const (
TokenSpot = "dmsdk"
)
func TokenGrpc(requestId, mac, mid, vender string) (*token.TokenSearchResponseNetease, error) {
// consul注册中心获取host port
serviceInfo, err := global.ConsulObj.GetService(TokenSpot, "")
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()
ctx, cancel := context.WithTimeout(context.Background(), time.Second*2)
defer cancel()
c := token.NewTokenSearchClient(conn)
req := &token.TokenSearchRequestV2{
AppInfo: &token.AppInfo{RequestId: requestId},
DevInfo: &token.DevInfo{
Mac: mac,
Mid: mid,
Vender: vender,
},
IsReBind: false,
}
resp, err := c.TokenSearchNetease(ctx, req)
if err != nil {
global.Logger.WithFields(logger.Fields{
"requestId": requestId,
"dmsdk serverName": TokenSpot,
"dmsdk request": req,
}).Errorf("dmsdk error: %v", err)
return nil, err
}
global.Logger.WithFields(logger.Fields{
"requestId": requestId,
"dmsdk serverName": TokenSpot,
"dmsdk request": req,
"dmsdk response": resp,
}).Info("dmsdk")
return resp, nil
}
...@@ -15,12 +15,14 @@ import ( ...@@ -15,12 +15,14 @@ import (
"speech-nlu-parse/pkg/errCode" "speech-nlu-parse/pkg/errCode"
"speech-nlu-parse/pkg/logger" "speech-nlu-parse/pkg/logger"
"speech-nlu-parse/pkg/proto" "speech-nlu-parse/pkg/proto"
"speech-nlu-parse/pkg/util" "speech-nlu-parse/service/connect"
"speech-nlu-parse/service/speechNlu" "speech-nlu-parse/service/speechNlu"
"speech-nlu-parse/service/tencentNlu" "speech-nlu-parse/service/tencentNlu"
) )
type TencentNlu struct{} type TencentNlu struct {
proto.UnimplementedTencentNluServer
}
func TencentNluParseSemanticRequest2ModelSemanticReq(tencentNluParseSemanticRequest *proto.SemanticRequest) *model.SemanticReq { func TencentNluParseSemanticRequest2ModelSemanticReq(tencentNluParseSemanticRequest *proto.SemanticRequest) *model.SemanticReq {
if tencentNluParseSemanticRequest == nil { if tencentNluParseSemanticRequest == nil {
...@@ -324,11 +326,26 @@ func (TencentNlu) TencentNluParseStream(stream proto.TencentNlu_TencentNluParseS ...@@ -324,11 +326,26 @@ func (TencentNlu) TencentNluParseStream(stream proto.TencentNlu_TencentNluParseS
// accessToken = "a59e94b052ac11eeaffae3150c8945b2" // accessToken = "a59e94b052ac11eeaffae3150c8945b2"
// } // }
var productId, deviceId string
token, err := connect.TokenGrpc(requestId, mac, mid, vender)
if err != nil || token.GetData().GetDeviceId() == "" {
global.Logger.WithFields(logger.Fields{
"deviceId": token.GetData().GetProductId(),
"productId": token.GetData().GetProductId(),
}).Errorf("connect.TokenGrpc err: %v", err)
return err
//productId = global.SpeechSetting.ProductId
//deviceId = util.EncodeMD5(mac)
} else {
productId = token.GetData().ProductId
deviceId = token.GetData().DeviceId
}
speechNluWs := speechNlu.SpeechNlpWs{} speechNluWs := speechNlu.SpeechNlpWs{}
var nlpWsConn *websocket.Conn var nlpWsConn *websocket.Conn
deviceId := util.EncodeMD5(mac) //deviceId := util.EncodeMD5(mac)
nlpWsConn, err = speechNluWs.SpeechWs(ip, deviceId) nlpWsConn, err = speechNluWs.SpeechWs(ip, productId, deviceId, mid)
if err != nil { if err != nil {
global.Logger.Errorf("speechWs.SpeechWs error. %v", err) global.Logger.Errorf("speechWs.SpeechWs error. %v", err)
return err return err
......
...@@ -4,7 +4,6 @@ import ( ...@@ -4,7 +4,6 @@ import (
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
"log"
"regexp" "regexp"
"speech-nlu-parse/global" "speech-nlu-parse/global"
"speech-nlu-parse/model" "speech-nlu-parse/model"
...@@ -767,9 +766,6 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte { ...@@ -767,9 +766,6 @@ func globalCtrlDomain(params *model.SpeechDomainParams) []byte {
semanticParams["degree"] = model.ParamsStr{Origin: "一", Norm: "1", Code: 0} semanticParams["degree"] = model.ParamsStr{Origin: "一", Norm: "1", Code: 0}
} }
log.Println("11111111111111111")
fmt.Println(sign)
if sign == "-" { if sign == "-" {
action = "control_reduceVol" action = "control_reduceVol"
} else { } else {
......
...@@ -4,7 +4,6 @@ import ( ...@@ -4,7 +4,6 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"log"
"speech-nlu-parse/dao" "speech-nlu-parse/dao"
"speech-nlu-parse/global" "speech-nlu-parse/global"
"speech-nlu-parse/model" "speech-nlu-parse/model"
...@@ -12,6 +11,7 @@ import ( ...@@ -12,6 +11,7 @@ import (
"speech-nlu-parse/pkg/errCode" "speech-nlu-parse/pkg/errCode"
"speech-nlu-parse/pkg/logger" "speech-nlu-parse/pkg/logger"
"speech-nlu-parse/pkg/util" "speech-nlu-parse/pkg/util"
"speech-nlu-parse/service/connect"
"sync" "sync"
"time" "time"
) )
...@@ -74,12 +74,33 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) { ...@@ -74,12 +74,33 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
start := time.Now() start := time.Now()
data := SpeechNlpWsReq(reqStruct, sessionId) data := SpeechNlpWsReq(reqStruct, sessionId)
var productId, deviceId string //有deviceId才请求,有AccessToken才请求音乐
token, err := connect.TokenGrpc(reqStruct.RequestId, reqStruct.MacWifi, reqStruct.Mid, reqStruct.Vender)
if err != nil || token.GetData().GetDeviceId() == "" {
global.Logger.WithFields(logger.Fields{
"deviceId": token.GetData().GetProductId(),
"productId": token.GetData().GetProductId(),
}).Errorf("connect.TokenGrpc err: %v", err)
//productId = global.SpeechSetting.ProductId
//deviceId = util.EncodeMD5(reqStruct.MacWifi)
channelStr = string(replyWithChat(error_reply, "doudi"))
return channelStr, errCode.InformationMissing
} else {
productId = token.GetData().GetProductId()
deviceId = token.GetData().GetDeviceId()
}
var tomo model.TokenMemo
tomo.AccessToken = token.GetData().GetAccessToken()
tomo.DeviceId = deviceId
tomo.ProductId = productId
tomo.ClientId = token.GetData().GetClientId()
tomo.Status = token.GetData().GetStatus()
speechNluWs := SpeechNlpWs{} speechNluWs := SpeechNlpWs{}
var nlpWsConn *websocket.Conn var nlpWsConn *websocket.Conn
deviceId := util.EncodeMD5(reqStruct.MacWifi) nlpWsConn, err = speechNluWs.SpeechWs(reqStruct.Ip, productId, deviceId, reqStruct.Mid)
nlpWsConn, err = speechNluWs.SpeechWs(reqStruct.Ip, deviceId)
if err != nil { if err != nil {
global.Logger.WithFields(logger.Fields{ global.Logger.WithFields(logger.Fields{
"requestId": reqStruct.RequestId, "requestId": reqStruct.RequestId,
...@@ -109,7 +130,7 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) { ...@@ -109,7 +130,7 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
responses = <-dataChan responses = <-dataChan
for _, resp := range responses { for _, resp := range responses {
semanticRespByteData := ParseSpeechJson(resp, reqStruct.MacWifi, reqStruct.OriginQuery, reqStruct.Mid, reqStruct.RequestId, semanticRespByteData := ParseSpeechJson(resp, reqStruct.MacWifi, reqStruct.OriginQuery, reqStruct.Mid, reqStruct.RequestId,
reqStruct.Vender) reqStruct.Vender, tomo)
return string(semanticRespByteData), errCode.Success return string(semanticRespByteData), errCode.Success
} }
case <-time.After(5 * time.Minute): case <-time.After(5 * time.Minute):
...@@ -118,7 +139,7 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) { ...@@ -118,7 +139,7 @@ func SpeechNlu(reqStruct *model.SemanticReq) (string, *errCode.Error) {
for _, resp := range responses { for _, resp := range responses {
fmt.Printf("%+v\n", resp) fmt.Printf("%+v\n", resp)
semanticRespByteData := ParseSpeechJson(resp, reqStruct.MacWifi, reqStruct.OriginQuery, reqStruct.Mid, reqStruct.RequestId, semanticRespByteData := ParseSpeechJson(resp, reqStruct.MacWifi, reqStruct.OriginQuery, reqStruct.Mid, reqStruct.RequestId,
reqStruct.Vender) reqStruct.Vender, tomo)
return string(semanticRespByteData), errCode.Success return string(semanticRespByteData), errCode.Success
} }
default: default:
...@@ -165,8 +186,6 @@ func receiveMessage(conn *websocket.Conn, done chan struct{}, dataChan chan<- [] ...@@ -165,8 +186,6 @@ func receiveMessage(conn *websocket.Conn, done chan struct{}, dataChan chan<- []
"time": fmt.Sprintf("%.3fs", time.Since(start).Seconds()), "time": fmt.Sprintf("%.3fs", time.Since(start).Seconds()),
}).Info("speech origin data") }).Info("speech origin data")
log.Println(string(message))
//思必驰nlu回复 //思必驰nlu回复
var resp model.SpeechWsResp var resp model.SpeechWsResp
if err := json.Unmarshal(message, &resp); err != nil { if err := json.Unmarshal(message, &resp); err != nil {
...@@ -189,7 +208,7 @@ func receiveMessage(conn *websocket.Conn, done chan struct{}, dataChan chan<- [] ...@@ -189,7 +208,7 @@ func receiveMessage(conn *websocket.Conn, done chan struct{}, dataChan chan<- []
} }
} }
func ParseSpeechJson(speechJson model.SpeechWsResp, mac string, query, mid, requestId, vender string) []byte { func ParseSpeechJson(speechJson model.SpeechWsResp, mac string, query, mid, requestId, vender string, tomo model.TokenMemo) []byte {
//思必驰返回的domain是中文,待改 //思必驰返回的domain是中文,待改
domain := speechJson.Skill domain := speechJson.Skill
...@@ -204,13 +223,20 @@ func ParseSpeechJson(speechJson model.SpeechWsResp, mac string, query, mid, requ ...@@ -204,13 +223,20 @@ func ParseSpeechJson(speechJson model.SpeechWsResp, mac string, query, mid, requ
Domain: domain, Domain: domain,
Mid: mid, Mid: mid,
MidType: vender, MidType: vender,
TokenMemo: &model.TokenMemo{
AccessToken: tomo.AccessToken,
DeviceId: tomo.DeviceId,
ClientId: tomo.ClientId,
ProductId: tomo.ProductId,
Status: tomo.Status,
},
} }
// 根据mid屏蔽部分domain, 并返回 // 根据mid屏蔽部分domain, 并返回
//if util.IsContain(domain, global.GetLimitedSetting(mid).ShieldedDomainList) { if util.IsContain(domain, global.GetLimitedSetting(mid).ShieldedDomainList) {
// jsonByte = shieldedDomain() jsonByte = shieldedDomain()
// return jsonByte return jsonByte
//} }
//jsonByte = jokeDomain(speechJson) //jsonByte = jokeDomain(speechJson)
......
...@@ -19,9 +19,9 @@ type SpeechNlpWs struct { ...@@ -19,9 +19,9 @@ type SpeechNlpWs struct {
mutex sync.Mutex mutex sync.Mutex
} }
func (s *SpeechNlpWs) SpeechWs(ip, deviceId string) (*websocket.Conn, error) { func (s *SpeechNlpWs) SpeechWs(ip, productId, deviceId, mid string) (*websocket.Conn, error) {
SpeechWs_Url := global.SpeechSetting.Url var SpeechWs_Url string
SpeechWs_ProductId := global.SpeechSetting.ProductId //SpeechWs_ProductId := global.SpeechSetting.ProductId
SpeechWs_ApiKey := global.SpeechSetting.ApiKey SpeechWs_ApiKey := global.SpeechSetting.ApiKey
//st := time.Now() //st := time.Now()
...@@ -32,9 +32,14 @@ func (s *SpeechNlpWs) SpeechWs(ip, deviceId string) (*websocket.Conn, error) { ...@@ -32,9 +32,14 @@ func (s *SpeechNlpWs) SpeechWs(ip, deviceId string) (*websocket.Conn, error) {
header := http.Header{} header := http.Header{}
header.Set("X-Forwarded-For", ip) header.Set("X-Forwarded-For", ip)
SpeechUrl := SpeechWs_Url + "?serviceType=websocket&productId=" + SpeechWs_ProductId + if mid == "10f04" {
SpeechWs_Url = global.SpeechSetting.ChildUrl
} else {
SpeechWs_Url = global.SpeechSetting.Url
}
SpeechUrl := SpeechWs_Url + "?serviceType=websocket&productId=" + productId +
"&apikey=" + SpeechWs_ApiKey + "&deviceId=" + deviceId "&apikey=" + SpeechWs_ApiKey + "&deviceId=" + deviceId
fmt.Println(SpeechUrl)
conn, resp, err := dialer.Dial(SpeechUrl, header) conn, resp, err := dialer.Dial(SpeechUrl, header)
if err != nil { if err != nil {
......
...@@ -7,7 +7,7 @@ import ( ...@@ -7,7 +7,7 @@ import (
"speech-nlu-parse/global" "speech-nlu-parse/global"
"speech-nlu-parse/model" "speech-nlu-parse/model"
"speech-nlu-parse/pkg/logger" "speech-nlu-parse/pkg/logger"
"speech-nlu-parse/pkg/proto" "speech-nlu-parse/pkg/proto/token"
"time" "time"
"google.golang.org/grpc" "google.golang.org/grpc"
...@@ -29,11 +29,11 @@ func GetAuthorizationByGRPC(macWifi, requestId, mid, vender string) (*model.Toke ...@@ -29,11 +29,11 @@ func GetAuthorizationByGRPC(macWifi, requestId, mid, vender string) (*model.Toke
} }
defer conn.Close() defer conn.Close()
c := proto.NewTokenSearchClient(conn) c := token.NewTokenSearchClient(conn)
ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) ctx, cancel := context.WithTimeout(context.Background(), time.Second*2)
defer cancel() defer cancel()
req := proto.TokenSearchRequest{Mac: macWifi, RequestId: requestId, Mid: mid, Vender: vender} req := token.TokenSearchRequest{Mac: macWifi, RequestId: requestId, Mid: mid, Vender: vender}
global.Logger.WithFields(logger.Fields{"data": map[string]interface{}{"tokenSearchRequest": &req}, "mac": macWifi, "mid": mid, "vender": vender, "requestId": requestId}).Info("GetAuthorizationByGRPC request") global.Logger.WithFields(logger.Fields{"data": map[string]interface{}{"tokenSearchRequest": &req}, "mac": macWifi, "mid": mid, "vender": vender, "requestId": requestId}).Info("GetAuthorizationByGRPC request")
...@@ -53,7 +53,7 @@ func GetAuthorizationByGRPC(macWifi, requestId, mid, vender string) (*model.Toke ...@@ -53,7 +53,7 @@ func GetAuthorizationByGRPC(macWifi, requestId, mid, vender string) (*model.Toke
} }
// 结构体转换 // 结构体转换
func GrpcTokenSearchResponse2ModelTokenSearchResponse(grpcTokenSearchResponse *proto.TokenSearchResponse) (*model.TokenSearchResponse, error) { func GrpcTokenSearchResponse2ModelTokenSearchResponse(grpcTokenSearchResponse *token.TokenSearchResponse) (*model.TokenSearchResponse, error) {
if grpcTokenSearchResponse == nil { if grpcTokenSearchResponse == nil {
return nil, nil return nil, 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