You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tool/services/wecom/message/message.go

37 lines
998 B

package message
import (
"bytes"
"encoding/json"
"fmt"
"gitea.codecodify.com/golang/tool/helper"
"log"
)
// Message 定义消息范型, 统一发送消息入口, 为了类型安全, 需要实现Req接口
type Message[T Req] struct{}
const title = "【企业微信消息通知】"
// Send 发送消息
func (m *Message[T]) Send(body T, token string) (Resp, error) {
log.Printf("%s token: %v\n", title, token)
log.Printf("%s send message: %v\n", title, body)
url := fmt.Sprintf("https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s", token)
b, err := json.Marshal(body)
if err != nil {
log.Printf("%s 消息体转换json失败: %v\n", title, err)
return Resp{}, err
}
if b, err := helper.SendHttpRequest(url, "POST", bytes.NewReader(b), nil); err != nil {
return Resp{}, err
} else {
var resp Resp
if err := json.Unmarshal(b, &resp); err != nil {
log.Printf("%s 响应体转换json失败: %v\n", title, err)
return Resp{}, err
}
return resp, nil
}
}