package msg import ( "bytes" "context" "encoding/json" "io" "log" "net/http" "time" ) var MesSendUrl = "https://oapi.dingtalk.com/robot/send?access_token=d8367c13499dfb164b1e02a4c024024f6857a892e7406265be08d5b5e06fc590" func SendDingTalkAlert(ctx context.Context, sdkName, url string) { client := &http.Client{ Timeout: 10 * time.Second, } // ✅ 正确的 link 消息格式 message := map[string]interface{}{ "msgtype": "link", "link": map[string]interface{}{ "title": "[ai_sdk]🎉 " + sdkName + " 代码生成完成,点此进入仓库", "text": url + ".git", "messageUrl": url, "picUrl": "", // 可选:图片 URL }, } jsonData, err := json.Marshal(message) if err != nil { log.Printf("JSON序列化失败: %v", err) return } resp, err := client.Post(MesSendUrl, "application/json", bytes.NewBuffer(jsonData)) if err != nil { log.Printf("发送钉钉告警失败: %v", err) return } defer resp.Body.Close() data, _ := io.ReadAll(resp.Body) log.Printf("钉钉告警发送结果,状态码: %s,内容:%s", resp.Status, data) return }