package util import ( "encoding/json" "fmt" "github.com/vmihailenco/msgpack/v5" "log" "time" ) // oZMR-6SQHsxGdO9mMmvsQEz4lyHA/hy2246102093| type WxMessagetemplate struct { Openid string //微信ID Templateid string // 模板id Parameter string // 参数 Reqdata string //消息体 Ttime int64 // 发布时间 } // ** // {{character_string14.DATA}} // 企业名称 // {{thing13.DATA}} // 设备名称 // {{thing3.DATA}} // 传感器名称 // {{thing45.DATA}} // 预警时间 // {{time2.DATA}} type WxStruct struct { Character string `json:"character_string14"` Thing13 string `json:"thing13"` Thing3 string `json:"thing3"` Thing45 string `json:"thing45"` Time2 string `json:"time2"` } func Send(openid string, message WxStruct) { data := map[string]interface{}{ "character_string14": map[string]interface{}{ "value": message.Character, }, "thing13": map[string]interface{}{ "value": message.Thing13, }, "thing3": map[string]interface{}{ "value": message.Thing3, }, "thing45": map[string]interface{}{ "value": message.Thing45, }, "time2": map[string]interface{}{ "value": message.Time2, }, } marshal, _ := json.Marshal(data) fmt.Println(string(marshal)) b, _ := msgpack.Marshal(&WxMessagetemplate{ Openid: openid, Templateid: "4jtNEZ--zp1QcfkN--lhJMCULgz3fxiYwRqR8dTG-WA", Parameter: "index", Reqdata: string(marshal), Ttime: time.Now().Unix(), }) msg, err := Nats.Request("Wx_MessageTemplate", b, 30*time.Second) // 30 秒, 订阅端 超时 30秒 将丢弃消息 if err != nil { fmt.Println(err) log.Printf("Wx_MessageTemplate : %s\n", err) } fmt.Printf("Wx_MessageTemplate : %s\n", string(msg.Data)) } func Intercept(str string) string { if len(str) > 20 { return str[:20] + "..." } return str }