47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
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
|
|
}
|