fix: update the callback example

pull/1783/head
luhaoling 2 years ago
parent b1b7d46b78
commit f910dcf314

@ -317,7 +317,7 @@ iosPush:
callback: callback:
url: "http://127.0.0.1:10002/callbackExample" url: "http://127.0.0.1:10002/callbackExample"
beforeSendSingleMsg: beforeSendSingleMsg:
enable: true enable: ${CALLBACK_ENABLE}
timeout: ${CALLBACK_TIMEOUT} timeout: ${CALLBACK_TIMEOUT}
failedContinue: ${CALLBACK_FAILED_CONTINUE} failedContinue: ${CALLBACK_FAILED_CONTINUE}
beforeUpdateUserInfoEx: beforeUpdateUserInfoEx:
@ -329,7 +329,7 @@ callback:
timeout: ${CALLBACK_TIMEOUT} timeout: ${CALLBACK_TIMEOUT}
failedContinue: ${CALLBACK_FAILED_CONTINUE} failedContinue: ${CALLBACK_FAILED_CONTINUE}
afterSendSingleMsg: afterSendSingleMsg:
enable: ${CALLBACK_ENABLE} enable: true
timeout: ${CALLBACK_TIMEOUT} timeout: ${CALLBACK_TIMEOUT}
failedContinue: ${CALLBACK_FAILED_CONTINUE} failedContinue: ${CALLBACK_FAILED_CONTINUE}
beforeSendGroupMsg: beforeSendGroupMsg:

@ -15,6 +15,7 @@
package api package api
import ( import (
"github.com/OpenIMSDK/protocol/auth"
"github.com/OpenIMSDK/protocol/constant" "github.com/OpenIMSDK/protocol/constant"
"github.com/OpenIMSDK/protocol/msg" "github.com/OpenIMSDK/protocol/msg"
"github.com/OpenIMSDK/protocol/sdkws" "github.com/OpenIMSDK/protocol/sdkws"
@ -28,6 +29,7 @@ import (
"github.com/go-playground/validator/v10" "github.com/go-playground/validator/v10"
"github.com/mitchellh/mapstructure" "github.com/mitchellh/mapstructure"
"github.com/openimsdk/open-im-server/v3/pkg/callbackstruct" "github.com/openimsdk/open-im-server/v3/pkg/callbackstruct"
"github.com/openimsdk/open-im-server/v3/pkg/common/http"
"time" "time"
"github.com/openimsdk/open-im-server/v3/pkg/authverify" "github.com/openimsdk/open-im-server/v3/pkg/authverify"
@ -387,7 +389,7 @@ func (m *MessageApi) CallbackExample(c *gin.Context) {
// 4. 构造一个发消息的结构体 // 4. 构造一个发消息的结构体
// 5. 使用这个系统通知号发送消息 // 5. 使用这个系统通知号发送消息
var req callbackstruct.CallbackBeforeSendSingleMsgReq var req callbackstruct.CallbackAfterSendSingleMsgReq
if err := c.BindJSON(&req); err != nil { if err := c.BindJSON(&req); err != nil {
log.ZError(c, "CallbackExample BindJSON failed", err) log.ZError(c, "CallbackExample BindJSON failed", err)
@ -396,7 +398,7 @@ func (m *MessageApi) CallbackExample(c *gin.Context) {
} }
log.ZInfo(c, "CallbackExample", "req", req) log.ZInfo(c, "CallbackExample", "req", req)
resp := &callbackstruct.CallbackBeforeSendSingleMsgResp{ resp := &callbackstruct.CallbackAfterSendSingleMsgResp{
CommonCallbackResp: callbackstruct.CommonCallbackResp{ CommonCallbackResp: callbackstruct.CommonCallbackResp{
ActionCode: 0, ActionCode: 0,
ErrCode: 200, ErrCode: 200,
@ -407,30 +409,58 @@ func (m *MessageApi) CallbackExample(c *gin.Context) {
} }
apiresp.GinSuccess(c, resp) apiresp.GinSuccess(c, resp)
if req.SendID == config.Config.IMAdmin.UserID[0] {
return
}
url := "http://127.0.0.1:10002/auth/user_token"
header := map[string]string{}
header["operationID"] = req.OperationID
input_token := auth.UserTokenReq{
Secret: config.Config.Secret,
PlatformID: req.SenderPlatformID,
UserID: config.Config.IMAdmin.UserID[0],
}
output_token := &auth.UserTokenResp{}
if err := http.PostReturn(c, url, header, input_token, output_token, 10); err != nil {
log.ZError(c, "CallbackExample get Sender token failed", err)
apiresp.GinError(c, errs.ErrInternalServer.WithDetail(err.Error()).Wrap())
return
}
user, err := m.userRpcClient.GetUserInfo(c, req.RecvID)
if err != nil {
log.ZError(c, "CallbackExample get Sender failed", err)
apiresp.GinError(c, errs.ErrInternalServer.WithDetail(err.Error()).Wrap())
return
}
time := time.Now().Unix() content := map[string]any{}
msgInfo := &sdkws.MsgData{ content["content"] = req.Content
SendID: req.SendID, input := &apistruct.SendMsgReq{
RecvID: req.RecvID, RecvID: req.RecvID,
ClientMsgID: req.ClientMsgID, SendMsg: apistruct.SendMsg{
ServerMsgID: req.ServerMsgID, SendID: req.RecvID,
SenderNickname: user.Nickname,
SenderFaceURL: user.FaceURL,
SenderPlatformID: req.SenderPlatformID, SenderPlatformID: req.SenderPlatformID,
SenderNickname: req.SenderNickname, Content: content,
SenderFaceURL: req.SenderFaceURL,
SessionType: req.SessionType,
MsgFrom: req.MsgFrom,
ContentType: req.ContentType, ContentType: req.ContentType,
Content: []byte(req.Content), SessionType: req.SessionType,
Seq: int64(req.Seq), SendTime: time.Now().Unix(),
SendTime: time, },
CreateTime: time,
Status: req.Status,
} }
rsp, err := m.Message.Client.SendMsg(c, &msg.SendMsgReq{MsgData: msgInfo})
if err != nil { url = "http://127.0.0.1:10002/msg/send_msg"
log.ZError(c, "SendMsg failed", err) header["token"] = output_token.Token
apiresp.GinError(c, errs.ErrDatabase.WithDetail(err.Error()).Wrap()) output := &msg.SendMsgResp{}
if err := http.PostReturn(c, url, header, input, output, 10); err != nil {
log.ZError(c, "CallbackExample send message failed", err)
apiresp.GinError(c, errs.ErrInternalServer.WithDetail(err.Error()).Wrap())
return return
} }
apiresp.GinSuccess(c, rsp)
apiresp.GinSuccess(c, output)
} }

@ -224,7 +224,7 @@ func NewGinRouter(discov discoveryregistry.SvcDiscoveryRegistry, rdb redis.Unive
callback := r.Group("/callbackExample") callback := r.Group("/callbackExample")
{ {
callback.POST("/callbackBeforeSendSingleMsgCommand", m.CallbackExample) callback.POST("/callbackAfterSendSingleMsgCommand", m.CallbackExample)
} }
return r return r
} }

Loading…
Cancel
Save