diff --git a/internal/pkg/util/string.go b/internal/pkg/util/string.go index 5ccac7d..81b7e29 100644 --- a/internal/pkg/util/string.go +++ b/internal/pkg/util/string.go @@ -1,6 +1,9 @@ package util -import "strings" +import ( + "encoding/json" + "strings" +) // 占位符替换 xxx{placeholder}xxx func ReplacePlaceholder(str string, placeholder string, value string) string { @@ -11,3 +14,8 @@ func ReplacePlaceholder(str string, placeholder string, value string) string { func BuildJumpLink(url string, text string) string { return "" + text + "" } + +func EscapeJSONString(s string) string { + b, _ := json.Marshal(s) + return string(b[1 : len(b)-1]) +} diff --git a/internal/services/callback.go b/internal/services/callback.go index f1a9447..f0ef4fd 100644 --- a/internal/services/callback.go +++ b/internal/services/callback.go @@ -145,7 +145,7 @@ func (s *CallbackService) handleDingTalkCallback(c *fiber.Ctx, env Envelope) err msg := data.Msg msg = util.ReplacePlaceholder(msg, "receivers", receivers) - msg = util.ReplacePlaceholder(msg, "detail_page", detailPage) + msg = util.ReplacePlaceholder(msg, "detail_page", util.EscapeJSONString(detailPage)) s.gateway.SendToUid(sessionID, []byte(msg))