赞
踩
client-api
etc yaml配置及
internal 内部代码包config yaml配置解析代码包
logic 逻辑实现包
server 服务连接处理
svc 上下文配置信息
type chat结构体对象proto proto文件
go.mod model
go.sum
apiserver.api 自定义api文件用于生成api框架
apiserver.go 主函数入口
客户端chat初始化代码只需要创建好配置信息和上下文信息即可(目前是这样)。
func NewChatLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ChatLogic {
return &ChatLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
客户端最主要的功能是提供对话接口,在未来的开发中我希望输入除了文字还有音频,图片以及视频等数据信息,这里为了和服务端连接使用的是grpc连接方式。
func (l *ChatLogic) Chat(req *types.ChatRequest) (resp *types.ChatResponse, err error) { // todo: add your logic here and delete this line port := strconv.Itoa(l.svcCtx.Config.RestConf.Port) addr := l.svcCtx.Config.RestConf.Host + ":" + port conn, err := grpc.Dial(addr, grpc.WithInsecure()) if err != nil { return nil, err } defer conn.Close() //调用grpc服务 client := pb.NewChatbotServiceClient(conn) //api数据转为rpc数据 rpcReq := &pb.ChatRequest{ UserInput: req.UserInput, } //返回数据 rpcRssp, err := client.Chat(l.ctx, rpcReq) if err != nil { return nil, err } return &types.ChatResponse{ BotResponse: rpcRssp.GetBotResponse(), }, nil }
下一期敬请期待。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。