123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package util
- import (
- "context"
- "crypto/md5"
- "encoding/base64"
- "fmt"
- "github.com/gogf/gf/v2/errors/gerror"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/skip2/go-qrcode"
- "io"
- "net/http"
- "strings"
- )
- // SendQrImage2ChatBot 发送二维码给群聊机器人
- func SendQrImage2ChatBot(qrContent string) error {
- res, err := qrcode.Encode(qrContent, qrcode.Medium, 256)
- if err != nil {
- return gerror.Wrap(err, "解密二维码异常")
- }
- rawStr := base64.StdEncoding.EncodeToString(res)
- h := md5.New()
- h.Write(res)
- hash := h.Sum(nil)
- hashStr := fmt.Sprintf("%x", hash)
- postBody := fmt.Sprintf(`{
- "msgtype": "image",
- "image": {
- "base64": "%s",
- "md5": "%s",
- "mentioned_list":["@%s"]
- }
- }`, rawStr, strings.ToLower(hashStr), "all")
- client := new(http.Client)
- req, err := http.NewRequest("POST", g.Cfg().MustGet(context.Background(), "qwxRobotUrl").String(),
- strings.NewReader(postBody))
- if err != nil {
- return gerror.Wrap(err, "请求企业微信机器人接口异常")
- }
- req.Header.Set("Content-Type", "application/json")
- resp, err := client.Do(req)
- if err != nil {
- return err
- }
- defer resp.Body.Close()
- bb, _ := io.ReadAll(resp.Body)
- fmt.Println(string(bb))
- return nil
- }
|