diff --git a/internal/server/router/router.go b/internal/server/router/router.go index 17fff12..ecfd1c3 100644 --- a/internal/server/router/router.go +++ b/internal/server/router/router.go @@ -68,6 +68,8 @@ func SetupRoutes(app *fiber.App, ChatService *services.ChatService, sessionServi r.Post("/chat/useful", ChatService.Useful) // 回调 r.Post("/callback", callbackService.Callback) + // 钉钉机器人回调 + r.Get("/callback/dingtalk-robot", callbackService.CallbackDingtalkRobot) // 回调 r.Get("/qywx/callback", callbackService.QywxCallback) //广播 diff --git a/internal/services/callback.go b/internal/services/callback.go index fe46028..2a58bd7 100644 --- a/internal/services/callback.go +++ b/internal/services/callback.go @@ -364,3 +364,25 @@ func getString(str, endstr string, start int, msg *string) int { *msg = str[start:end] return end + len(endstr) } + +// CallbackDingtalkRobot 钉钉机器人回调 +func (s *CallbackService) CallbackDingtalkRobot(c *fiber.Ctx) (err error) { + // 获取query中的参数 + query := c.Request().URI().QueryString() + str, _ := url.QueryUnescape(string(query)) + // 转map + params := make(map[string]string) + for _, param := range strings.Split(str, "&") { + kv := strings.Split(param, "=") + if len(kv) == 2 { + params[kv[0]] = kv[1] + } + } + // token 校验 + token := params["token"] + if token != "aB3dE7fG9hI2jK4L5M6N7O8P9Q0R1S2T" { + return fmt.Errorf("token not match") + } + + return nil +}