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 } // dingtalk 卡片模板 const ( DingtalkCardTplBaseMsg string = "291468f8-a048-4132-a37e-a14365e855e9.schema" // 基础消息卡片(title + content) DingtalkCardTplCreateGroupApprove string = "faad6d5d-726d-467f-a6ba-28c1930aa5f3.schema" // 创建群聊申请 ) // dingtalk 模板群相关 const ( // 群模板id GroupTemplateIdIssueHandling string = "420089e3-b0fb-40f5-89d2-ec47223bff3b" // 问题处理群模板id // 模板群机器人ID GroupTemplateRobotIdIssueHandling string = "VqgJYpB91j3RnB217690607273471011" // 问题处理群模板机器人ID ) // 群模板机器人 - 主应用机器人映射 var GroupTemplateRobotIdMap = map[string]string{ GroupTemplateRobotIdIssueHandling: "ding5wwvnf9hxeyjau7t", } const CardDebugToolEntryShow string = "show" // 卡片调试工具 [show:展示 hide:隐藏]