diff --git a/config/config.yaml b/config/config.yaml index 286954b7d..8423c00cf 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -240,7 +240,7 @@ iospush: callback: # callback url 需要自行更换callback url - callbackUrl: "http://127.0.0.1:10008/callback" + callbackUrl: "http://127.0.0.1:10008/callback/open_im" # 开启关闭操作前后回调的配置 callbackBeforeSendSingleMsg: enable: false # 回调是否启用 diff --git a/internal/msggateway/callback.go b/internal/msggateway/callback.go index b099d5b31..2d30b52b4 100644 --- a/internal/msggateway/callback.go +++ b/internal/msggateway/callback.go @@ -33,7 +33,7 @@ func CallbackUserOnline(ctx context.Context, userID string, platformID int, isAp ConnID: connID, } resp := cbapi.CommonCallbackResp{} - return http.CallBackPostReturn(url(), &req, &resp, config.Config.Callback.CallbackUserOnline) + return http.CallBackPostReturn(ctx, url(), &req, &resp, config.Config.Callback.CallbackUserOnline) } func CallbackUserOffline(ctx context.Context, userID string, platformID int, connID string) error { @@ -54,7 +54,7 @@ func CallbackUserOffline(ctx context.Context, userID string, platformID int, con ConnID: connID, } resp := &cbapi.CallbackUserOfflineResp{} - return http.CallBackPostReturn(url(), req, resp, config.Config.Callback.CallbackUserOffline) + return http.CallBackPostReturn(ctx, url(), req, resp, config.Config.Callback.CallbackUserOffline) } func CallbackUserKickOff(ctx context.Context, userID string, platformID int) error { @@ -74,7 +74,7 @@ func CallbackUserKickOff(ctx context.Context, userID string, platformID int) err Seq: time.Now().UnixMilli(), } resp := &cbapi.CommonCallbackResp{} - return http.CallBackPostReturn(url(), req, resp, config.Config.Callback.CallbackUserOffline) + return http.CallBackPostReturn(ctx, url(), req, resp, config.Config.Callback.CallbackUserOffline) } //func callbackUserOnline(operationID, userID string, platformID int, token string, isAppBackground bool, connID string) cbApi.CommonCallbackResp { @@ -98,7 +98,7 @@ func CallbackUserKickOff(ctx context.Context, userID string, platformID int) err // ConnID: connID, // } // callbackUserOnlineResp := &cbApi.CallbackUserOnlineResp{CommonCallbackResp: &callbackResp} -// if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil { +// if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil { // callbackResp.ErrCode = http2.StatusInternalServerError // callbackResp.ErrMsg = err.Error() // } @@ -123,7 +123,7 @@ func CallbackUserKickOff(ctx context.Context, userID string, platformID int) err // ConnID: connID, // } // callbackUserOfflineResp := &cbApi.CallbackUserOfflineResp{CommonCallbackResp: &callbackResp} -// if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil { +// if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil { // callbackResp.ErrCode = http2.StatusInternalServerError // callbackResp.ErrMsg = err.Error() // } @@ -147,7 +147,7 @@ func CallbackUserKickOff(ctx context.Context, userID string, platformID int) err // Seq: int(time.Now().UnixNano() / 1e6), // } // callbackUserKickOffResp := &cbApi.CallbackUserKickOffResp{CommonCallbackResp: &callbackResp} -// if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserKickOffCommand, callbackUserKickOffReq, callbackUserKickOffResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil { +// if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, constant.CallbackUserKickOffCommand, callbackUserKickOffReq, callbackUserKickOffResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil { // callbackResp.ErrCode = http2.StatusInternalServerError // callbackResp.ErrMsg = err.Error() // } diff --git a/internal/push/callback.go b/internal/push/callback.go index 1b0ca21a7..ddd1a2cd4 100644 --- a/internal/push/callback.go +++ b/internal/push/callback.go @@ -39,7 +39,7 @@ func callbackOfflinePush(ctx context.Context, userIDs []string, msg *sdkws.MsgDa Content: utils.GetContent(msg), } resp := &callbackstruct.CallbackBeforePushResp{} - err := http.CallBackPostReturn(url(), req, resp, config.Config.Callback.CallbackOfflinePush) + err := http.CallBackPostReturn(ctx, url(), req, resp, config.Config.Callback.CallbackOfflinePush) if err != nil { return err } @@ -75,7 +75,7 @@ func callbackOnlinePush(ctx context.Context, userIDs []string, msg *sdkws.MsgDat Content: utils.GetContent(msg), } resp := &callbackstruct.CallbackBeforePushResp{} - return http.CallBackPostReturn(url(), req, resp, config.Config.Callback.CallbackOnlinePush) + return http.CallBackPostReturn(ctx, url(), req, resp, config.Config.Callback.CallbackOnlinePush) } func callbackBeforeSuperGroupOnlinePush(ctx context.Context, groupID string, msg *sdkws.MsgData, pushToUserIDs *[]string) error { @@ -99,7 +99,7 @@ func callbackBeforeSuperGroupOnlinePush(ctx context.Context, groupID string, msg Seq: msg.Seq, } resp := &callbackstruct.CallbackBeforeSuperGroupOnlinePushResp{} - if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSuperGroupOnlinePush); err != nil { + if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, req, resp, config.Config.Callback.CallbackBeforeSuperGroupOnlinePush); err != nil { return err } if len(resp.UserIDs) != 0 { diff --git a/internal/push/offlinepush/getui/push.go b/internal/push/offlinepush/getui/push.go index 1840d287c..4ef2cceb8 100644 --- a/internal/push/offlinepush/getui/push.go +++ b/internal/push/offlinepush/getui/push.go @@ -146,11 +146,11 @@ func (g *Client) request(ctx context.Context, url string, input interface{}, tok header := map[string]string{"token": token} resp := &Resp{} resp.Data = output - return g.postReturn(config.Config.Push.Getui.PushUrl+url, header, input, resp, 3) + return g.postReturn(ctx, config.Config.Push.Getui.PushUrl+url, header, input, resp, 3) } -func (g *Client) postReturn(url string, header map[string]string, input interface{}, output RespI, timeout int) error { - err := http2.PostReturn(url, header, input, output, timeout) +func (g *Client) postReturn(ctx context.Context, url string, header map[string]string, input interface{}, output RespI, timeout int) error { + err := http2.PostReturn(ctx, url, header, input, output, timeout) if err != nil { return err } diff --git a/internal/push/offlinepush/jpush/push.go b/internal/push/offlinepush/jpush/push.go index 7f9924894..6a4ea0ceb 100644 --- a/internal/push/offlinepush/jpush/push.go +++ b/internal/push/offlinepush/jpush/push.go @@ -55,9 +55,9 @@ func (j *JPush) Push(ctx context.Context, userIDs []string, title, content strin pushObj.SetMessage(&msg) pushObj.SetOptions(&opt) var resp interface{} - return j.request(pushObj, resp, 5) + return j.request(ctx, pushObj, resp, 5) } -func (j *JPush) request(po body.PushObj, resp interface{}, timeout int) error { - return http2.PostReturn(config.Config.Push.Jpns.PushUrl, map[string]string{"Authorization": j.getAuthorization(config.Config.Push.Jpns.AppKey, config.Config.Push.Jpns.MasterSecret)}, po, resp, timeout) +func (j *JPush) request(ctx context.Context, po body.PushObj, resp interface{}, timeout int) error { + return http2.PostReturn(ctx, config.Config.Push.Jpns.PushUrl, map[string]string{"Authorization": j.getAuthorization(config.Config.Push.Jpns.AppKey, config.Config.Push.Jpns.MasterSecret)}, po, resp, timeout) } diff --git a/internal/rpc/friend/callback.go b/internal/rpc/friend/callback.go index e41cec15a..60b978d2e 100644 --- a/internal/rpc/friend/callback.go +++ b/internal/rpc/friend/callback.go @@ -6,11 +6,13 @@ import ( "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/http" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/mcontext" pbfriend "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/friend" ) func CallbackBeforeAddFriend(ctx context.Context, req *pbfriend.ApplyToAddFriendReq) error { + log.ZInfo(ctx, "CallbackBeforeAddFriend", "in", req) if !config.Config.Callback.CallbackBeforeAddFriend.Enable { return nil } @@ -22,5 +24,6 @@ func CallbackBeforeAddFriend(ctx context.Context, req *pbfriend.ApplyToAddFriend OperationID: mcontext.GetOperationID(ctx), } resp := &cbapi.CallbackBeforeAddFriendResp{} - return http.CallBackPostReturn(config.Config.Callback.CallbackUrl, cbReq, resp, config.Config.Callback.CallbackBeforeAddFriend) + defer log.ZInfo(ctx, "CallbackBeforeAddFriend", "out", &resp) + return http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, cbReq, resp, config.Config.Callback.CallbackBeforeAddFriend) } diff --git a/internal/rpc/friend/friend.go b/internal/rpc/friend/friend.go index c341336bc..8fb5698f0 100644 --- a/internal/rpc/friend/friend.go +++ b/internal/rpc/friend/friend.go @@ -63,12 +63,12 @@ func (s *friendServer) ApplyToAddFriend(ctx context.Context, req *pbfriend.Apply if err := tokenverify.CheckAccessV3(ctx, req.FromUserID); err != nil { return nil, err } - if err := CallbackBeforeAddFriend(ctx, req); err != nil && err != errs.ErrCallbackContinue { - return nil, err - } if req.ToUserID == req.FromUserID { return nil, errs.ErrCanNotAddYourself.Wrap() } + if err := CallbackBeforeAddFriend(ctx, req); err != nil && err != errs.ErrCallbackContinue { + return nil, err + } if _, err := s.userRpcClient.GetUsersInfoMap(ctx, []string{req.ToUserID, req.FromUserID}); err != nil { return nil, err } diff --git a/internal/rpc/group/callback.go b/internal/rpc/group/callback.go index e21de6c90..31756914a 100644 --- a/internal/rpc/group/callback.go +++ b/internal/rpc/group/callback.go @@ -42,7 +42,7 @@ func CallbackBeforeCreateGroup(ctx context.Context, req *group.CreateGroupReq) ( }) } resp := &callbackstruct.CallbackBeforeCreateGroupResp{} - err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, cbReq, resp, config.Config.Callback.CallbackBeforeCreateGroup) + err = http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, cbReq, resp, config.Config.Callback.CallbackBeforeCreateGroup) if err != nil { return err } @@ -74,7 +74,7 @@ func CallbackBeforeMemberJoinGroup(ctx context.Context, groupMember *relation.Gr GroupEx: groupEx, } resp := &callbackstruct.CallbackBeforeMemberJoinGroupResp{} - err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackBeforeMemberJoinGroup) + err = http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackBeforeMemberJoinGroup) if err != nil { return err } @@ -111,7 +111,7 @@ func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *group.SetGroupMe callbackReq.Ex = &req.Ex.Value } resp := &callbackstruct.CallbackBeforeSetGroupMemberInfoResp{} - err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackBeforeSetGroupMemberInfo) + err = http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackBeforeSetGroupMemberInfo) if err != nil { return err } diff --git a/internal/rpc/msg/callback.go b/internal/rpc/msg/callback.go index 5bf3b4035..ebea6e66c 100644 --- a/internal/rpc/msg/callback.go +++ b/internal/rpc/msg/callback.go @@ -47,7 +47,7 @@ func callbackBeforeSendSingleMsg(ctx context.Context, msg *pbChat.SendMsgReq) er RecvID: msg.MsgData.RecvID, } resp := &cbapi.CallbackBeforeSendSingleMsgResp{} - return http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackBeforeSendSingleMsg) + return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackBeforeSendSingleMsg) } func callbackAfterSendSingleMsg(ctx context.Context, msg *pbChat.SendMsgReq) error { @@ -59,7 +59,7 @@ func callbackAfterSendSingleMsg(ctx context.Context, msg *pbChat.SendMsgReq) err RecvID: msg.MsgData.RecvID, } resp := &cbapi.CallbackAfterSendSingleMsgResp{} - return http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendSingleMsg) + return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendSingleMsg) } func callbackBeforeSendGroupMsg(ctx context.Context, msg *pbChat.SendMsgReq) error { @@ -71,7 +71,7 @@ func callbackBeforeSendGroupMsg(ctx context.Context, msg *pbChat.SendMsgReq) err GroupID: msg.MsgData.GroupID, } resp := &cbapi.CallbackBeforeSendGroupMsgResp{} - return http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendSingleMsg) + return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendSingleMsg) } func callbackAfterSendGroupMsg(ctx context.Context, msg *pbChat.SendMsgReq) error { @@ -83,7 +83,7 @@ func callbackAfterSendGroupMsg(ctx context.Context, msg *pbChat.SendMsgReq) erro GroupID: msg.MsgData.GroupID, } resp := &cbapi.CallbackAfterSendGroupMsgResp{} - return http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) + return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) } func callbackMsgModify(ctx context.Context, msg *pbChat.SendMsgReq) error { @@ -94,7 +94,7 @@ func callbackMsgModify(ctx context.Context, msg *pbChat.SendMsgReq) error { CommonCallbackReq: toCommonCallback(ctx, msg, constant.CallbackMsgModifyCommand), } resp := &cbapi.CallbackMsgModifyCommandResp{} - if err := http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg); err != nil { + if err := http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg); err != nil { return err } if resp.Content != nil { diff --git a/internal/rpc/msg/extend_msg_callback.go b/internal/rpc/msg/extend_msg_callback.go index ca17c69e1..216d65dfa 100644 --- a/internal/rpc/msg/extend_msg_callback.go +++ b/internal/rpc/msg/extend_msg_callback.go @@ -28,14 +28,14 @@ func callbackSetMessageReactionExtensions(ctx context.Context, setReq *msg.SetMe MsgFirstModifyTime: setReq.MsgFirstModifyTime, } resp := &cbapi.CallbackBeforeSetMessageReactionExtResp{} - if err := http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg); err != nil { + if err := http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg); err != nil { return err } setReq.MsgFirstModifyTime = resp.MsgFirstModifyTime return nil } -func callbackDeleteMessageReactionExtensions(setReq *msg.DeleteMessagesReactionExtensionsReq) error { +func callbackDeleteMessageReactionExtensions(ctx context.Context, setReq *msg.DeleteMessagesReactionExtensionsReq) error { if !config.Config.Callback.CallbackAfterSendGroupMsg.Enable { return nil } @@ -51,7 +51,7 @@ func callbackDeleteMessageReactionExtensions(setReq *msg.DeleteMessagesReactionE MsgFirstModifyTime: setReq.MsgFirstModifyTime, } resp := &cbapi.CallbackDeleteMessageReactionExtResp{} - return http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) + return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) } func callbackGetMessageListReactionExtensions(ctx context.Context, getReq *msg.GetMessagesReactionExtensionsReq) error { @@ -67,7 +67,7 @@ func callbackGetMessageListReactionExtensions(ctx context.Context, getReq *msg.G TypeKeyList: getReq.TypeKeys, } resp := &cbapi.CallbackGetMessageListReactionExtResp{} - return http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) + return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) } func callbackAddMessageReactionExtensions(ctx context.Context, setReq *msg.ModifyMessageReactionExtensionsReq) error { @@ -84,5 +84,5 @@ func callbackAddMessageReactionExtensions(ctx context.Context, setReq *msg.Modif MsgFirstModifyTime: setReq.MsgFirstModifyTime, } resp := &cbapi.CallbackAddMessageReactionExtResp{} - return http.CallBackPostReturn(cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) + return http.CallBackPostReturn(ctx, cbURL(), req, resp, config.Config.Callback.CallbackAfterSendGroupMsg) } diff --git a/internal/rpc/msg/verify.go b/internal/rpc/msg/verify.go index 319a37e4e..05171fc3a 100644 --- a/internal/rpc/msg/verify.go +++ b/internal/rpc/msg/verify.go @@ -100,7 +100,7 @@ func (m *msgServer) messageVerification(ctx context.Context, data *msg.SendMsgRe return nil, err } if groupInfo.Status == constant.GroupStatusDismissed && data.MsgData.ContentType != constant.GroupDismissedNotification { - return nil, errs.ErrArgs.Wrap("group is dismissed") + return nil, errs.ErrDismissedAlready.Wrap() } if groupInfo.GroupType == constant.SuperGroup { return nil, nil diff --git a/pkg/common/constant/constant.go b/pkg/common/constant/constant.go index 0d3f7005c..dfef4f51e 100644 --- a/pkg/common/constant/constant.go +++ b/pkg/common/constant/constant.go @@ -335,3 +335,5 @@ const ( ) const OpenIMCommonConfigKey = "OpenIMServerConfig" + +const CallbackCommand = "command" diff --git a/pkg/common/http/http_client.go b/pkg/common/http/http_client.go index 3472b922f..430d33499 100644 --- a/pkg/common/http/http_client.go +++ b/pkg/common/http/http_client.go @@ -8,16 +8,21 @@ package http import ( "bytes" + "context" "encoding/json" "github.com/OpenIMSDK/Open-IM-Server/pkg/callbackstruct" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/constant" "github.com/OpenIMSDK/Open-IM-Server/pkg/errs" + "io" "io/ioutil" "net/http" urlLib "net/url" "time" ) +var client http.Client + func Get(url string) (response []byte, err error) { client := http.Client{Timeout: 5 * time.Second} resp, err := client.Get(url) @@ -32,36 +37,41 @@ func Get(url string) (response []byte, err error) { return body, nil } -// application/json; charset=utf-8 -func Post(url string, header map[string]string, data interface{}, timeout int) (content []byte, err error) { +func Post(ctx context.Context, url string, header map[string]string, data interface{}, timeout int) (content []byte, err error) { + if timeout > 0 { + var cancel func() + ctx, cancel = context.WithTimeout(ctx, time.Second*time.Duration(timeout)) + defer cancel() + } jsonStr, err := json.Marshal(data) if err != nil { return nil, err } - req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr)) + req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewBuffer(jsonStr)) if err != nil { return nil, err } + if operationID, _ := ctx.Value(constant.OperationID).(string); operationID != "" { + req.Header.Set(constant.OperationID, operationID) + } for k, v := range header { req.Header.Set(k, v) } - req.Close = true req.Header.Add("content-type", "application/json; charset=utf-8") - client := &http.Client{Timeout: time.Duration(timeout) * time.Second} resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() - result, err := ioutil.ReadAll(resp.Body) + result, err := io.ReadAll(resp.Body) if err != nil { return nil, err } return result, nil } -func PostReturn(url string, header map[string]string, input, output interface{}, timeOutSecond int) error { - b, err := Post(url, header, input, timeOutSecond) +func PostReturn(ctx context.Context, url string, header map[string]string, input, output interface{}, timeOutSecond int) error { + b, err := Post(ctx, url, header, input, timeOutSecond) if err != nil { return err } @@ -69,11 +79,11 @@ func PostReturn(url string, header map[string]string, input, output interface{}, return err } -func callBackPostReturn(url, command string, input interface{}, output callbackstruct.CallbackResp, callbackConfig config.CallBackConfig) error { +func callBackPostReturn(ctx context.Context, url, command string, input interface{}, output callbackstruct.CallbackResp, callbackConfig config.CallBackConfig) error { v := urlLib.Values{} - v.Set("callbackCommand", command) + v.Set(constant.CallbackCommand, command) url = url + "?" + v.Encode() - b, err := Post(url, nil, input, callbackConfig.CallbackTimeOut) + b, err := Post(ctx, url, nil, input, callbackConfig.CallbackTimeOut) if err != nil { if callbackConfig.CallbackFailedContinue != nil && *callbackConfig.CallbackFailedContinue { return errs.ErrCallbackContinue @@ -89,6 +99,6 @@ func callBackPostReturn(url, command string, input interface{}, output callbacks return output.Parse() } -func CallBackPostReturn(url string, req callbackstruct.CallbackReq, resp callbackstruct.CallbackResp, callbackConfig config.CallBackConfig) error { - return callBackPostReturn(url, req.GetCallbackCommand(), req, resp, callbackConfig) +func CallBackPostReturn(ctx context.Context, url string, req callbackstruct.CallbackReq, resp callbackstruct.CallbackResp, callbackConfig config.CallBackConfig) error { + return callBackPostReturn(ctx, url, req.GetCallbackCommand(), req, resp, callbackConfig) }