客户端API框架
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
}
下一期敬请期待。