636 lines
21 KiB
Go
636 lines
21 KiB
Go
package alibaba
|
||
|
||
import (
|
||
"backend/Type"
|
||
"encoding/json"
|
||
"fmt"
|
||
"time"
|
||
|
||
clientv2 "github.com/alibabacloud-go/darabonba-openapi/v2/client"
|
||
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
|
||
dingtalkcard_1_0 "github.com/alibabacloud-go/dingtalk/card_1_0"
|
||
dingtalkim_1_0 "github.com/alibabacloud-go/dingtalk/im_1_0"
|
||
util "github.com/alibabacloud-go/tea-utils/v2/service"
|
||
"github.com/alibabacloud-go/tea/tea"
|
||
)
|
||
|
||
var NOTIFY_TITLE_COLOR = map[string]string{
|
||
"Not classified": "grey",
|
||
"Information": "blue",
|
||
"Warning": "yellow",
|
||
"Average": "orange",
|
||
"High": "pink",
|
||
"Disaster": "red",
|
||
}
|
||
|
||
// 由于接口要求卡片数据的键值对均为 string 类型,需要对卡片数据进行预处理
|
||
func convertJSONValuesToString(obj map[string]any) map[string]*string {
|
||
result := make(map[string]*string)
|
||
for key, value := range obj {
|
||
switch v := value.(type) {
|
||
case string:
|
||
result[key] = tea.String(v)
|
||
default:
|
||
bytes, err := json.Marshal(v)
|
||
if err != nil {
|
||
result[key] = tea.String("")
|
||
} else {
|
||
result[key] = tea.String(string(bytes))
|
||
}
|
||
}
|
||
}
|
||
return result
|
||
}
|
||
|
||
// Description:
|
||
// 使用 Token 初始化账号Client
|
||
// @return Client
|
||
// @throws Exception
|
||
func createCardClient() (_result *dingtalkcard_1_0.Client, _err error) {
|
||
config := &openapi.Config{}
|
||
config.Protocol = tea.String("https")
|
||
config.RegionId = tea.String("central")
|
||
_result = &dingtalkcard_1_0.Client{}
|
||
_result, _err = dingtalkcard_1_0.NewClient(config)
|
||
return _result, _err
|
||
}
|
||
|
||
func SendCard() (_err error) {
|
||
client, _err := createCardClient()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
accessToken, _ := GetToken()
|
||
robotCode := "dingrmgtodzxaik76jpc"
|
||
userId := ""
|
||
openConversationId := "cidivmW+tO/JGyIFM/XHNeQcA=="
|
||
templateId := "679d07b8-f649-4b5d-b223-d082db55b0d6.schema"
|
||
lastMessage := "<用于消息列表展示、搜索结果展示的文案>"
|
||
searchIcon := "<搜索结果展示的图标>"
|
||
searchDesc := "<用于搜索的字段,最多 200 个字符>"
|
||
|
||
createAndDeliverHeaders := &dingtalkcard_1_0.CreateAndDeliverHeaders{}
|
||
createAndDeliverHeaders.XAcsDingtalkAccessToken = tea.String(accessToken)
|
||
|
||
imGroupOpenDeliverModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenDeliverModel{
|
||
RobotCode: tea.String(robotCode),
|
||
// 卡片接收人
|
||
Recipients: []*string{},
|
||
}
|
||
imGroupOpenSpaceModelLastMessageI18n := map[string]*string{
|
||
"ZH_CN": tea.String(lastMessage),
|
||
}
|
||
imGroupOpenSpaceModelSearchSupport := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModelSearchSupport{
|
||
SearchIcon: tea.String(searchIcon),
|
||
SearchDesc: tea.String(searchDesc),
|
||
}
|
||
imGroupOpenSpaceModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModel{
|
||
SupportForward: tea.Bool(true),
|
||
LastMessageI18n: imGroupOpenSpaceModelLastMessageI18n,
|
||
SearchSupport: imGroupOpenSpaceModelSearchSupport,
|
||
}
|
||
|
||
// 此处使用了 MockData 作为测试数据,请结合真实场景设置卡片公有数据
|
||
cardDataJSONStr := `{
|
||
"grid_object_list": [
|
||
{
|
||
"text": "Grid 11"
|
||
},
|
||
{
|
||
"text": "Grid 12"
|
||
},
|
||
{
|
||
"text": "Grid 13"
|
||
},
|
||
{
|
||
"text": "Grid 21"
|
||
},
|
||
{
|
||
"text": "Grid 22"
|
||
},
|
||
{
|
||
"text": "Grid 23"
|
||
}
|
||
],
|
||
"host": "测试主机"
|
||
}`
|
||
var cardDataCardParamMap map[string]any
|
||
cardDataError := json.Unmarshal([]byte(cardDataJSONStr), &cardDataCardParamMap)
|
||
if cardDataError != nil {
|
||
panic(cardDataError)
|
||
}
|
||
cardData := &dingtalkcard_1_0.CreateAndDeliverRequestCardData{
|
||
CardParamMap: convertJSONValuesToString(cardDataCardParamMap),
|
||
}
|
||
createAndDeliverRequest := &dingtalkcard_1_0.CreateAndDeliverRequest{
|
||
UserId: tea.String(userId),
|
||
CardTemplateId: tea.String(templateId),
|
||
// 用于标识卡片的唯一 ID,业务需自行建立关联关系,用于后续的卡片更新
|
||
OutTrackId: tea.String(fmt.Sprintf("test-out-track-id-%d", time.Now().Unix())),
|
||
CallbackType: tea.String("STREAM"),
|
||
CardData: cardData,
|
||
ImGroupOpenSpaceModel: imGroupOpenSpaceModel,
|
||
ImGroupOpenDeliverModel: imGroupOpenDeliverModel,
|
||
OpenSpaceId: tea.String(fmt.Sprintf("dtv1.card//im_group.%s", openConversationId)),
|
||
UserIdType: tea.Int32(1),
|
||
}
|
||
tryErr := func() (_e error) {
|
||
defer func() {
|
||
if r := tea.Recover(recover()); r != nil {
|
||
_e = r
|
||
}
|
||
}()
|
||
_, _err = client.CreateAndDeliverWithOptions(createAndDeliverRequest, createAndDeliverHeaders, &util.RuntimeOptions{})
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
return nil
|
||
}()
|
||
|
||
if tryErr != nil {
|
||
var err = &tea.SDKError{}
|
||
if _t, ok := tryErr.(*tea.SDKError); ok {
|
||
err = _t
|
||
} else {
|
||
err.Message = tea.String(tryErr.Error())
|
||
}
|
||
if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
|
||
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
||
}
|
||
}
|
||
return _err
|
||
}
|
||
func CreateImClient() (_result *dingtalkim_1_0.Client, _err error) {
|
||
config := &clientv2.Config{}
|
||
config.Protocol = tea.String("https")
|
||
config.RegionId = tea.String("central")
|
||
_result = &dingtalkim_1_0.Client{}
|
||
_result, _err = dingtalkim_1_0.NewClient(config)
|
||
return _result, _err
|
||
}
|
||
|
||
func SendZabbixMsg(data *Type.NotifyData) (_err error) {
|
||
client, _err := createCardClient()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
accessToken, _ := GetToken()
|
||
robotCode := "dingrmgtodzxaik76jpc"
|
||
userId := ""
|
||
openConversationId := "cidivmW+tO/JGyIFM/XHNeQcA=="
|
||
templateId := "15624ae4-b499-40b4-bf04-af03c38ee8d7.schema"
|
||
lastMessage := "Zabbix告警"
|
||
searchIcon := ""
|
||
searchDesc := ""
|
||
|
||
createAndDeliverHeaders := &dingtalkcard_1_0.CreateAndDeliverHeaders{}
|
||
createAndDeliverHeaders.XAcsDingtalkAccessToken = tea.String(accessToken)
|
||
imGroupOpenDeliverModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenDeliverModel{
|
||
RobotCode: tea.String(robotCode),
|
||
// 卡片接收人
|
||
Recipients: []*string{},
|
||
}
|
||
if data.Severity == "Disaster" || data.Severity == "High" {
|
||
imGroupOpenDeliverModel.Recipients = []*string{tea.String("035105216620273488")}
|
||
imGroupOpenDeliverModel.AtUserIds = map[string]*string{
|
||
"035105216620273488": tea.String("伍敏哲"),
|
||
}
|
||
}
|
||
imGroupOpenSpaceModelLastMessageI18n := map[string]*string{
|
||
"ZH_CN": tea.String(lastMessage),
|
||
}
|
||
imGroupOpenSpaceModelSearchSupport := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModelSearchSupport{
|
||
SearchIcon: tea.String(searchIcon),
|
||
SearchDesc: tea.String(searchDesc),
|
||
}
|
||
imGroupOpenSpaceModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModel{
|
||
SupportForward: tea.Bool(true),
|
||
LastMessageI18n: imGroupOpenSpaceModelLastMessageI18n,
|
||
SearchSupport: imGroupOpenSpaceModelSearchSupport,
|
||
}
|
||
|
||
// 此处使用了 MockData 作为测试数据,请结合真实场景设置卡片公有数据
|
||
cardDataJSONStr := `{
|
||
"host": "` + data.Host + `",
|
||
"notify_msg": "` + data.NotifyMsg + `",
|
||
"event_name": "` + data.EventName + `",
|
||
"severity": "` + data.Severity + `",
|
||
"alarm_time": "` + data.AlarmTime + `",
|
||
"title_color": "` + NOTIFY_TITLE_COLOR[data.Severity] + `"
|
||
}`
|
||
var cardDataCardParamMap map[string]any
|
||
cardDataError := json.Unmarshal([]byte(cardDataJSONStr), &cardDataCardParamMap)
|
||
if cardDataError != nil {
|
||
panic(cardDataError)
|
||
}
|
||
cardData := &dingtalkcard_1_0.CreateAndDeliverRequestCardData{
|
||
CardParamMap: convertJSONValuesToString(cardDataCardParamMap),
|
||
}
|
||
createAndDeliverRequest := &dingtalkcard_1_0.CreateAndDeliverRequest{
|
||
UserId: tea.String(userId),
|
||
CardTemplateId: tea.String(templateId),
|
||
// 用于标识卡片的唯一 ID,业务需自行建立关联关系,用于后续的卡片更新
|
||
OutTrackId: tea.String(fmt.Sprintf("test-out-track-id-%d", time.Now().Unix())),
|
||
CallbackType: tea.String("STREAM"),
|
||
CardData: cardData,
|
||
ImGroupOpenSpaceModel: imGroupOpenSpaceModel,
|
||
ImGroupOpenDeliverModel: imGroupOpenDeliverModel,
|
||
OpenSpaceId: tea.String(fmt.Sprintf("dtv1.card//im_group.%s", openConversationId)),
|
||
UserIdType: tea.Int32(1),
|
||
}
|
||
tryErr := func() (_e error) {
|
||
defer func() {
|
||
if r := tea.Recover(recover()); r != nil {
|
||
_e = r
|
||
}
|
||
}()
|
||
_, _err = client.CreateAndDeliverWithOptions(createAndDeliverRequest, createAndDeliverHeaders, &util.RuntimeOptions{})
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
return nil
|
||
}()
|
||
|
||
if tryErr != nil {
|
||
var err = &tea.SDKError{}
|
||
if _t, ok := tryErr.(*tea.SDKError); ok {
|
||
err = _t
|
||
} else {
|
||
err.Message = tea.String(tryErr.Error())
|
||
}
|
||
if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
|
||
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
||
}
|
||
}
|
||
return _err
|
||
}
|
||
|
||
func SendZabbixRecoveryMsg(data *Type.NotifyRecoveryData) (_err error) {
|
||
client, _err := createCardClient()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
accessToken, _ := GetToken()
|
||
robotCode := "dingrmgtodzxaik76jpc"
|
||
userId := ""
|
||
openConversationId := "cidivmW+tO/JGyIFM/XHNeQcA=="
|
||
templateId := "9a6ae88a-ba93-419e-b640-2e5fcd2556cf.schema"
|
||
lastMessage := "Zabbix告警"
|
||
searchIcon := ""
|
||
searchDesc := ""
|
||
|
||
createAndDeliverHeaders := &dingtalkcard_1_0.CreateAndDeliverHeaders{}
|
||
createAndDeliverHeaders.XAcsDingtalkAccessToken = tea.String(accessToken)
|
||
|
||
imGroupOpenDeliverModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenDeliverModel{
|
||
RobotCode: tea.String(robotCode),
|
||
// 卡片接收人
|
||
Recipients: []*string{},
|
||
}
|
||
imGroupOpenSpaceModelLastMessageI18n := map[string]*string{
|
||
"ZH_CN": tea.String(lastMessage),
|
||
}
|
||
imGroupOpenSpaceModelSearchSupport := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModelSearchSupport{
|
||
SearchIcon: tea.String(searchIcon),
|
||
SearchDesc: tea.String(searchDesc),
|
||
}
|
||
imGroupOpenSpaceModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModel{
|
||
SupportForward: tea.Bool(true),
|
||
LastMessageI18n: imGroupOpenSpaceModelLastMessageI18n,
|
||
SearchSupport: imGroupOpenSpaceModelSearchSupport,
|
||
}
|
||
|
||
// 此处使用了 MockData 作为测试数据,请结合真实场景设置卡片公有数据
|
||
cardDataJSONStr := `{
|
||
"host": "` + data.Host + `",
|
||
"notify_msg": "` + data.NotifyMsg + `",
|
||
"event_name": "` + data.EventName + `",
|
||
"severity": "` + data.Severity + `",
|
||
"alarm_time": "` + data.AlarmTime + `",
|
||
"recovery": "` + data.Recovery + `",
|
||
"age": "` + data.Age + `",
|
||
"title_color": "` + NOTIFY_TITLE_COLOR[data.Severity] + `"
|
||
}`
|
||
var cardDataCardParamMap map[string]any
|
||
cardDataError := json.Unmarshal([]byte(cardDataJSONStr), &cardDataCardParamMap)
|
||
if cardDataError != nil {
|
||
panic(cardDataError)
|
||
}
|
||
cardData := &dingtalkcard_1_0.CreateAndDeliverRequestCardData{
|
||
CardParamMap: convertJSONValuesToString(cardDataCardParamMap),
|
||
}
|
||
createAndDeliverRequest := &dingtalkcard_1_0.CreateAndDeliverRequest{
|
||
UserId: tea.String(userId),
|
||
CardTemplateId: tea.String(templateId),
|
||
// 用于标识卡片的唯一 ID,业务需自行建立关联关系,用于后续的卡片更新
|
||
OutTrackId: tea.String(fmt.Sprintf("test-out-track-id-%d", time.Now().Unix())),
|
||
CallbackType: tea.String("STREAM"),
|
||
CardData: cardData,
|
||
ImGroupOpenSpaceModel: imGroupOpenSpaceModel,
|
||
ImGroupOpenDeliverModel: imGroupOpenDeliverModel,
|
||
OpenSpaceId: tea.String(fmt.Sprintf("dtv1.card//im_group.%s", openConversationId)),
|
||
UserIdType: tea.Int32(1),
|
||
}
|
||
tryErr := func() (_e error) {
|
||
defer func() {
|
||
if r := tea.Recover(recover()); r != nil {
|
||
_e = r
|
||
}
|
||
}()
|
||
_, _err = client.CreateAndDeliverWithOptions(createAndDeliverRequest, createAndDeliverHeaders, &util.RuntimeOptions{})
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
return nil
|
||
}()
|
||
|
||
if tryErr != nil {
|
||
var err = &tea.SDKError{}
|
||
if _t, ok := tryErr.(*tea.SDKError); ok {
|
||
err = _t
|
||
} else {
|
||
err.Message = tea.String(tryErr.Error())
|
||
}
|
||
if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
|
||
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
||
}
|
||
}
|
||
return _err
|
||
}
|
||
|
||
func SendStandardMsg(title, content, color string) (_err error) {
|
||
client, _err := createCardClient()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
accessToken, _ := GetToken()
|
||
robotCode := "dingrmgtodzxaik76jpc"
|
||
userId := ""
|
||
openConversationId := "cidSdyTEELI8btxKdGnSprffg=="
|
||
templateId := "843a23ff-29d2-4efc-b7f4-2dea2766d7db.schema"
|
||
lastMessage := title
|
||
searchIcon := ""
|
||
searchDesc := ""
|
||
|
||
createAndDeliverHeaders := &dingtalkcard_1_0.CreateAndDeliverHeaders{}
|
||
createAndDeliverHeaders.XAcsDingtalkAccessToken = tea.String(accessToken)
|
||
|
||
imGroupOpenDeliverModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenDeliverModel{
|
||
RobotCode: tea.String(robotCode),
|
||
// 卡片接收人
|
||
Recipients: []*string{},
|
||
AtUserIds: map[string]*string{
|
||
"@ALL": tea.String("@ALL"),
|
||
},
|
||
}
|
||
imGroupOpenSpaceModelLastMessageI18n := map[string]*string{
|
||
"ZH_CN": tea.String(lastMessage),
|
||
}
|
||
imGroupOpenSpaceModelSearchSupport := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModelSearchSupport{
|
||
SearchIcon: tea.String(searchIcon),
|
||
SearchDesc: tea.String(searchDesc),
|
||
}
|
||
imGroupOpenSpaceModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModel{
|
||
SupportForward: tea.Bool(true),
|
||
LastMessageI18n: imGroupOpenSpaceModelLastMessageI18n,
|
||
SearchSupport: imGroupOpenSpaceModelSearchSupport,
|
||
}
|
||
|
||
// 此处使用了 MockData 作为测试数据,请结合真实场景设置卡片公有数据
|
||
cardDataCardParamMap := map[string]any{
|
||
"title": title,
|
||
"markdown": content,
|
||
"color": color,
|
||
"config": map[string]any{
|
||
"autoLayout": true,
|
||
},
|
||
}
|
||
cardDataError := error(nil)
|
||
_ = cardDataError
|
||
cardData := &dingtalkcard_1_0.CreateAndDeliverRequestCardData{
|
||
CardParamMap: convertJSONValuesToString(cardDataCardParamMap),
|
||
}
|
||
createAndDeliverRequest := &dingtalkcard_1_0.CreateAndDeliverRequest{
|
||
UserId: tea.String(userId),
|
||
CardTemplateId: tea.String(templateId),
|
||
// 用于标识卡片的唯一 ID,业务需自行建立关联关系,用于后续的卡片更新
|
||
OutTrackId: tea.String(fmt.Sprintf("standard-out-track-id-%d", time.Now().Unix())),
|
||
CallbackType: tea.String("STREAM"),
|
||
CardData: cardData,
|
||
ImGroupOpenSpaceModel: imGroupOpenSpaceModel,
|
||
ImGroupOpenDeliverModel: imGroupOpenDeliverModel,
|
||
OpenSpaceId: tea.String(fmt.Sprintf("dtv1.card//im_group.%s", openConversationId)),
|
||
UserIdType: tea.Int32(1),
|
||
// CardAtUserIds: []*string{tea.String("all")},
|
||
}
|
||
tryErr := func() (_e error) {
|
||
defer func() {
|
||
if r := tea.Recover(recover()); r != nil {
|
||
_e = r
|
||
}
|
||
}()
|
||
_, _err = client.CreateAndDeliverWithOptions(createAndDeliverRequest, createAndDeliverHeaders, &util.RuntimeOptions{})
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
return nil
|
||
}()
|
||
|
||
if tryErr != nil {
|
||
var err = &tea.SDKError{}
|
||
if _t, ok := tryErr.(*tea.SDKError); ok {
|
||
err = _t
|
||
} else {
|
||
err.Message = tea.String(tryErr.Error())
|
||
}
|
||
if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
|
||
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
||
}
|
||
}
|
||
return _err
|
||
}
|
||
|
||
func SendAliveMsg(title, content, color string) (_err error) {
|
||
client, _err := createCardClient()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
accessToken, _ := GetToken()
|
||
robotCode := "dingrmgtodzxaik76jpc"
|
||
userId := ""
|
||
openConversationId := "cidivmW+tO/JGyIFM/XHNeQcA=="
|
||
templateId := "843a23ff-29d2-4efc-b7f4-2dea2766d7db.schema"
|
||
lastMessage := title
|
||
searchIcon := ""
|
||
searchDesc := ""
|
||
|
||
createAndDeliverHeaders := &dingtalkcard_1_0.CreateAndDeliverHeaders{}
|
||
createAndDeliverHeaders.XAcsDingtalkAccessToken = tea.String(accessToken)
|
||
|
||
imGroupOpenDeliverModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenDeliverModel{
|
||
RobotCode: tea.String(robotCode),
|
||
// 卡片接收人
|
||
Recipients: []*string{},
|
||
AtUserIds: map[string]*string{
|
||
"@ALL": tea.String("@ALL"),
|
||
},
|
||
}
|
||
imGroupOpenSpaceModelLastMessageI18n := map[string]*string{
|
||
"ZH_CN": tea.String(lastMessage),
|
||
}
|
||
imGroupOpenSpaceModelSearchSupport := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModelSearchSupport{
|
||
SearchIcon: tea.String(searchIcon),
|
||
SearchDesc: tea.String(searchDesc),
|
||
}
|
||
imGroupOpenSpaceModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModel{
|
||
SupportForward: tea.Bool(true),
|
||
LastMessageI18n: imGroupOpenSpaceModelLastMessageI18n,
|
||
SearchSupport: imGroupOpenSpaceModelSearchSupport,
|
||
}
|
||
|
||
// 此处使用了 MockData 作为测试数据,请结合真实场景设置卡片公有数据
|
||
cardDataCardParamMap := map[string]any{
|
||
"title": title,
|
||
"markdown": content,
|
||
"color": color,
|
||
"config": map[string]any{
|
||
"autoLayout": true,
|
||
},
|
||
}
|
||
cardDataError := error(nil)
|
||
_ = cardDataError
|
||
cardData := &dingtalkcard_1_0.CreateAndDeliverRequestCardData{
|
||
CardParamMap: convertJSONValuesToString(cardDataCardParamMap),
|
||
}
|
||
createAndDeliverRequest := &dingtalkcard_1_0.CreateAndDeliverRequest{
|
||
UserId: tea.String(userId),
|
||
CardTemplateId: tea.String(templateId),
|
||
// 用于标识卡片的唯一 ID,业务需自行建立关联关系,用于后续的卡片更新
|
||
OutTrackId: tea.String(fmt.Sprintf("standard-out-track-id-%d", time.Now().Unix())),
|
||
CallbackType: tea.String("STREAM"),
|
||
CardData: cardData,
|
||
ImGroupOpenSpaceModel: imGroupOpenSpaceModel,
|
||
ImGroupOpenDeliverModel: imGroupOpenDeliverModel,
|
||
OpenSpaceId: tea.String(fmt.Sprintf("dtv1.card//im_group.%s", openConversationId)),
|
||
UserIdType: tea.Int32(1),
|
||
// CardAtUserIds: []*string{tea.String("all")},
|
||
}
|
||
tryErr := func() (_e error) {
|
||
defer func() {
|
||
if r := tea.Recover(recover()); r != nil {
|
||
_e = r
|
||
}
|
||
}()
|
||
_, _err = client.CreateAndDeliverWithOptions(createAndDeliverRequest, createAndDeliverHeaders, &util.RuntimeOptions{})
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
return nil
|
||
}()
|
||
|
||
if tryErr != nil {
|
||
var err = &tea.SDKError{}
|
||
if _t, ok := tryErr.(*tea.SDKError); ok {
|
||
err = _t
|
||
} else {
|
||
err.Message = tea.String(tryErr.Error())
|
||
}
|
||
if !tea.BoolValue(util.Empty(err.Code)) && !tea.BoolValue(util.Empty(err.Message)) {
|
||
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
||
}
|
||
}
|
||
return _err
|
||
}
|
||
|
||
// cid64GX+2M7KehttynmDM8msQ==
|
||
func SendOrderMsg(data *Type.OrderData) (_err error) {
|
||
client, _err := createCardClient()
|
||
if _err != nil {
|
||
return _err
|
||
}
|
||
|
||
accessToken, _ := GetToken()
|
||
robotCode := "dingrmgtodzxaik76jpc"
|
||
userId := ""
|
||
openConversationId := "cid64GX+2M7KehttynmDM8msQ=="
|
||
templateId := "843a23ff-29d2-4efc-b7f4-2dea2766d7db.schema"
|
||
lastMessage := "[充值]充值发货通知"
|
||
searchIcon := ""
|
||
searchDesc := ""
|
||
|
||
createAndDeliverHeaders := &dingtalkcard_1_0.CreateAndDeliverHeaders{}
|
||
createAndDeliverHeaders.XAcsDingtalkAccessToken = tea.String(accessToken)
|
||
|
||
imGroupOpenDeliverModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenDeliverModel{
|
||
RobotCode: tea.String(robotCode),
|
||
// 卡片接收人
|
||
Recipients: []*string{},
|
||
AtUserIds: map[string]*string{},
|
||
}
|
||
imGroupOpenSpaceModelLastMessageI18n := map[string]*string{
|
||
"ZH_CN": tea.String(lastMessage),
|
||
}
|
||
imGroupOpenSpaceModelSearchSupport := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModelSearchSupport{
|
||
SearchIcon: tea.String(searchIcon),
|
||
SearchDesc: tea.String(searchDesc),
|
||
}
|
||
imGroupOpenSpaceModel := &dingtalkcard_1_0.CreateAndDeliverRequestImGroupOpenSpaceModel{
|
||
SupportForward: tea.Bool(true),
|
||
LastMessageI18n: imGroupOpenSpaceModelLastMessageI18n,
|
||
SearchSupport: imGroupOpenSpaceModelSearchSupport,
|
||
}
|
||
contentStr := `
|
||
# **充值发货通知**
|
||
- UID:**%d**
|
||
- 订单号:**%s**
|
||
- 金额:**%s** 元
|
||
- 商品描述:**%s**
|
||
- 支付时间:**%s**
|
||
- 发货时间:**%s**
|
||
- 总充值金额:**%s** 元
|
||
|
||
[微笑]如有任何问题,请联系在线客服处理。
|
||
`
|
||
content := fmt.Sprintf(contentStr, data.UID, data.OrderId, data.Product, data.ProductName, data.EventRecovery, data.EventAge, data.TotalCharge)
|
||
|
||
// 此处使用了 MockData 作为测试数据,请结合真实场景设置卡片公有数据
|
||
cardDataCardParamMap := map[string]any{
|
||
"title": "[充值]充值发货通知",
|
||
"markdown": content,
|
||
"color": "green",
|
||
"config": map[string]any{
|
||
"autoLayout": true,
|
||
},
|
||
}
|
||
cardDataError := error(nil)
|
||
_ = cardDataError
|
||
cardData := &dingtalkcard_1_0.CreateAndDeliverRequestCardData{
|
||
CardParamMap: convertJSONValuesToString(cardDataCardParamMap),
|
||
}
|
||
createAndDeliverRequest := &dingtalkcard_1_0.CreateAndDeliverRequest{
|
||
UserId: tea.String(userId),
|
||
CardTemplateId: tea.String(templateId),
|
||
// 用于标识卡片的唯一 ID,业务需自行建立关联关系,用于后续的卡片更新
|
||
OutTrackId: tea.String(fmt.Sprintf("standard-out-track-id-%d", time.Now().Unix())),
|
||
CallbackType: tea.String("STREAM"),
|
||
CardData: cardData,
|
||
ImGroupOpenSpaceModel: imGroupOpenSpaceModel,
|
||
ImGroupOpenDeliverModel: imGroupOpenDeliverModel,
|
||
OpenSpaceId: tea.String(fmt.Sprintf("dtv1.card//im_group.%s", openConversationId)),
|
||
UserIdType: tea.Int32(1),
|
||
// CardAtUserIds: []*string{tea.String("all")},
|
||
}
|
||
_, _err = client.CreateAndDeliverWithOptions(createAndDeliverRequest, createAndDeliverHeaders, &util.RuntimeOptions{})
|
||
return _err
|
||
}
|