diff --git a/internal/api/chat/send_msg.go b/internal/api/chat/send_msg.go
index 4d53bf769..2c4eee371 100644
--- a/internal/api/chat/send_msg.go
+++ b/internal/api/chat/send_msg.go
@@ -27,7 +27,7 @@ type paramsUserSendMsg struct {
 		RecvID      string                 `json:"recvID" binding:"required"`
 		ForceList   []string               `json:"forceList"`
 		Content     string                 `json:"content" binding:"required"`
-		Options     map[string]interface{} `json:"options" `
+		Options     map[string]int32       `json:"options" `
 		ClientMsgID string                 `json:"clientMsgID" binding:"required"`
 		OffLineInfo map[string]interface{} `json:"offlineInfo" `
 		Ex          map[string]interface{} `json:"ext"`
@@ -49,7 +49,7 @@ func newUserSendMsgReq(token string, params *paramsUserSendMsg) *pbChat.UserSend
 		RecvID:         params.Data.RecvID,
 		ForceList:      params.Data.ForceList,
 		Content:        params.Data.Content,
-		Options:        utils.MapToJsonString(params.Data.Options),
+		Options:        params.Data.Options,
 		ClientMsgID:    params.Data.ClientMsgID,
 		OffLineInfo:    utils.MapToJsonString(params.Data.OffLineInfo),
 		Ex:             utils.MapToJsonString(params.Data.Ex),
diff --git a/internal/api/manage/management_chat.go b/internal/api/manage/management_chat.go
index ba056eba1..4cb8f6364 100644
--- a/internal/api/manage/management_chat.go
+++ b/internal/api/manage/management_chat.go
@@ -72,7 +72,7 @@ func newUserSendMsgReq(params *paramsManagementSendMsg) *pbChat.UserSendMsgReq {
 		ForceList:      params.ForceList,
 		Content:        newContent,
 		ClientMsgID:    utils.GetMsgID(params.SendID),
-		Options:        utils.MapIntToJsonString(options),
+		Options:        options,
 	}
 	return &pbData
 }
diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go
index 390ba42c5..7051360f3 100644
--- a/internal/push/logic/push_to_client.go
+++ b/internal/push/logic/push_to_client.go
@@ -34,11 +34,9 @@ type AtContent struct {
 	IsAtSelf   bool     `json:"isAtSelf"`
 }
 
-func MsgToUser(sendPbData *pbRelay.MsgToUserReq, OfflineInfo, Options string) {
+func MsgToUser(sendPbData *pbRelay.MsgToUserReq, OfflineInfo string, Options map[string]int32) {
 	var wsResult []*pbRelay.SingleMsgToUser
-	MOptions := utils.JsonStringToMap(Options) //Control whether to push message to sender's other terminal
-	//isSenderSync := utils.GetSwitchFromOptions(MOptions, "senderSync")
-	isOfflinePush := utils.GetSwitchFromOptions(MOptions, "offlinePush")
+	isOfflinePush := utils.GetSwitchFromOptions(Options, "offlinePush")
 	log.InfoByKv("Get chat from msg_transfer And push chat", sendPbData.OperationID, "PushData", sendPbData)
 	grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOnlineMessageRelayName)
 	//Online push message
diff --git a/internal/rpc/chat/send_msg.go b/internal/rpc/chat/send_msg.go
index 42d83e1a7..d81e9d580 100644
--- a/internal/rpc/chat/send_msg.go
+++ b/internal/rpc/chat/send_msg.go
@@ -71,8 +71,7 @@ func (rpc *rpcChat) UserSendMsg(_ context.Context, pb *pbChat.UserSendMsgReq) (*
 	} else {
 		pbData.SendTime = pb.SendTime
 	}
-	Options := utils.JsonStringToMap(pbData.Options)
-	isHistory := utils.GetSwitchFromOptions(Options, "history")
+	isHistory := utils.GetSwitchFromOptions(pbData.Options, "history")
 	mReq := MsgCallBackReq{
 		SendID:      pb.SendID,
 		RecvID:      pb.RecvID,
@@ -224,10 +223,7 @@ func modifyMessageByUserMessageReceiveOpt(userID, sourceID string, sessionType i
 	case constant.NotReceiveMessage:
 		return false
 	case constant.ReceiveNotNotifyMessage:
-		m := utils.JsonStringToMap(msg.Options)
-		utils.SetSwitchFromOptions(m, "offlinePush", 0)
-		s := utils.MapToJsonString(m)
-		msg.OfflineInfo = s
+		utils.SetSwitchFromOptions(msg.Options, "offlinePush", 0)
 		return true
 	}
 
diff --git a/pkg/utils/map.go b/pkg/utils/map.go
index f2c2d07b5..fec4da23e 100644
--- a/pkg/utils/map.go
+++ b/pkg/utils/map.go
@@ -115,12 +115,12 @@ func JsonStringToMap(str string) (tempMap map[string]interface{}) {
 	_ = json.Unmarshal([]byte(str), &tempMap)
 	return tempMap
 }
-func GetSwitchFromOptions(Options map[string]interface{}, key string) (result bool) {
-	if flag, ok := Options[key]; !ok || flag.(float64) == 1 {
+func GetSwitchFromOptions(Options map[string]int32, key string) (result bool) {
+	if flag, ok := Options[key]; !ok || flag == 1 {
 		return true
 	}
 	return false
 }
-func SetSwitchFromOptions(Options map[string]interface{}, key string, value interface{}) {
+func SetSwitchFromOptions(Options map[string]int32, key string, value int32) {
 	Options[key] = value
 }