package constants import ( "net/url" "strings" "github.com/google/uuid" ) const DingTalkBseUrl = "https://oapi.dingtalk.com" type RequestUrl string const ( RequestUrlGetUserGet RequestUrl = "/topapi/v2/user/get" RequestUrlGetDeptGet RequestUrl = "/topapi/v2/department/get" ) func GetDingTalkRequestUrl(path RequestUrl, query map[string]string) string { u, _ := url.Parse(DingTalkBseUrl + string(path)) q := u.Query() for key, val := range query { q.Add(key, val) } u.RawQuery = q.Encode() return u.String() } // IsBoss 是否是老板 type IsBoss int const ( IsBossTrue IsBoss = 1 IsBossFalse IsBoss = 0 ) // IsSenior 是否是老板 type IsSenior int const ( IsSeniorTrue IsSenior = 1 IsSeniorFalse IsSenior = 0 ) type ConversationType string const ( ConversationTypeSingle = "1" // 单聊 ConversationTypeGroup = "2" //群聊 ) type BotMsgType string const ( BotMsgTypeText BotMsgType = "text" ) type CardTemp string const ( CardTempDefault CardTemp = `{ "config": { "autoLayout": true, "enableForward": true }, "header": { "title": { "type": "text", "text": "${title}", }, "logo": "@lALPDfJ6V_FPDmvNAfTNAfQ" }, "contents": [ { "type": "divider", "id": "divider_1765952728523" }, { "type": "markdown", "text": "%s", "id": "markdown_1765970168635" } ] }` ) // 交互卡片回调类型 const ( CardActionCallbackTypeAction string = "actionCallback" // 交互卡片回调事件类型 ) // 交互卡片回调事件类型 const ( CardActionTypeCreateGroup string = "create_group" // 创建群聊 ) // dingtalk 卡片 OutTrackId 模板 const CardOutTrackIdTemplate string = "{space_id}:{bot_id}:{uuid}" func BuildCardOutTrackId(spaceId string, botId string) (outTrackId string) { uuid := uuid.New().String() outTrackId = strings.ReplaceAll(CardOutTrackIdTemplate, "{space_id}", spaceId) outTrackId = strings.ReplaceAll(outTrackId, "{bot_id}", botId) outTrackId = strings.ReplaceAll(outTrackId, "{uuid}", uuid) return } func ParseCardOutTrackId(outTrackId string) (spaceId string, botId string) { parts := strings.Split(outTrackId, ":") if len(parts) != 3 { return } spaceId, botId, _ = parts[0], parts[1], parts[2] return }