package echomeet import ( "yunyan/comm" "yunyan/pb" "yunyan/utils" "fmt" ) // @Summary 处理Echomeet异步通知 [内部RPC] // @Description 接收由HTTP回调网关转发来的已验证的支付通知,并处理业务逻辑 // @Tags Echomeet // @Accept json // @Produce json // @Security BearerAuth // @Param notify body pb.EchomeetCallbackReq true "回调参数" // @Success 200 {object} comm.HttpResult "处理结果" // @Router /api/home/echomeet_backcall [post] func (this *apiComp) BackCall(session comm.IUserSession, req *pb.EchomeetCallbackReq) (resp []byte, errdata *pb.ErrorData) { var ( id uint64 model *pb.DBEchoMeetRecord err error ) id = utils.StringToUInt64(req.CallbackData) model, err = this.module.model.getrecord(id) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Message: err.Error(), } return } if req.Code != 20000000 { model.State = pb.DBEchoMeetRecordState_TranscribeFail this.module.model.saverecord(model) resp = []byte(utils.ToString(map[string]string{ "code": "SUCCESS", "message": "成功", })) return } personnels := make(map[string]struct{}) contexts := make([]*pb.ContextStruct, 0) for _, v := range req.Result.Utterances { contexts = append(contexts, &pb.ContextStruct{ Meetingid: model.Id, Content: v.Text, Starttime: v.StartTime, Endtime: v.EndTime, Speaker: fmt.Sprintf("Speaker_%s", v.Additions.Speaker), }) personnels[v.Additions.Speaker] = struct{}{} } model.Personnel = "" for k, _ := range personnels { model.Personnel += fmt.Sprintf("[%s] ", fmt.Sprintf("Speaker_%s", k)) } model.Original = utils.ToString(contexts) model.State = pb.DBEchoMeetRecordState_AwaitSummarizing this.module.tasks.TranslateProcess(model, contexts) this.module.model.saverecord(model) this.module.tasks.SubmitAITask(model) resp = []byte(utils.ToString(map[string]string{ "code": "SUCCESS", "message": "成功", })) return }