代码拉取完成,页面将自动刷新
package dingtalkrobot
import (
"context"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"math/rand"
"net/http"
"time"
)
// DingTalk DingTalk
type DingTalk struct {
robotToken []string
}
var keyWord = "."
// InitDingTalk InitDingTalk
func InitDingTalk(tokens []string, key string) *DingTalk {
if len(tokens) == 0 {
panic("no token")
}
if keyWord != "" {
keyWord = key
}
return &DingTalk{
robotToken: tokens,
}
}
// sendMessage sendMessage
func (d *DingTalk) sendMessage(msg iDingMsg) error {
var (
ctx context.Context
cancel context.CancelFunc
url string
resp *http.Response
err error
)
ctx, cancel = context.WithTimeout(context.Background(), time.Second*2)
defer cancel()
url = dingTalkURL + d.robotToken[rand.Intn(len(d.robotToken))]
header := map[string]string{
"Content-type": "application/json",
}
resp, err = doRequest(ctx, "POST", url, header, msg.Marshaler())
if err != nil {
return err
}
if resp.StatusCode != http.StatusOK {
body, _ := ioutil.ReadAll(resp.Body)
return fmt.Errorf("send msg err: %s, token: %s, msg: %s", string(body), d.robotToken, msg.Marshaler())
}
return nil
}
// OutGoing OutGoing
func (d *DingTalk) OutGoing(r io.Reader) (outGoingMsg OutGoingModel, err error) {
buf, err := ioutil.ReadAll(r)
if err != nil {
return
}
err = json.Unmarshal(buf, &outGoingMsg)
return
}
// SendTextMessage SendTextMessage
func (d *DingTalk) SendTextMessage(content string, opt ...AtOption) error {
content = content + keyWord
return d.sendMessage(NewTextMsg(content, opt...))
}
// SendMarkDownMessage SendMarkDownMessage
func (d *DingTalk) SendMarkDownMessage(title, text string, opts ...AtOption) error {
title = title + keyWord
return d.sendMessage(NewMarkDownMsg(title, text, opts...))
}
// SendDTMDMessage 利用dtmd发送点击消息
func (d *DingTalk) SendDTMDMessage(title string, dtmdMap *DingMap, opt ...AtOption) error {
title = title + keyWord
return d.sendMessage(NewDTMDMsg(title, dtmdMap, opt...))
}
// SendMarkDownMessageBySlice SendMarkDownMessageBySlice
func (d DingTalk) SendMarkDownMessageBySlice(title string, textList []string, opts ...AtOption) error {
title = title + keyWord
text := ""
for _, t := range textList {
text = text + "\n" + t
}
return d.sendMessage(NewMarkDownMsg(title, text, opts...))
}
// SendLinkMessage SendLinkMessage
func (d *DingTalk) SendLinkMessage(title, text, picURL, msgURL string) error {
title = title + keyWord
return d.sendMessage(NewLinkMsg(title, text, picURL, msgURL))
}
// SendActionCardMessage SendActionCardMessage
func (d *DingTalk) SendActionCardMessage(title, text string, opts ...ActionCardOption) error {
title = title + keyWord
return d.sendMessage(NewActionCardMsg(title, text, opts...))
}
// SendActionCardMessageBySlice SendActionCardMessageBySlice
func (d *DingTalk) SendActionCardMessageBySlice(title string, textList []string, opts ...ActionCardOption) error {
title = title + keyWord
text := ""
for _, t := range textList {
text = text + "\n" + t
}
return d.sendMessage(NewActionCardMsg(title, text, opts...))
}
// SendFeedCardMessage SendFeedCardMessage
func (d *DingTalk) SendFeedCardMessage(feedCard []FeedCardLinkModel) error {
if len(feedCard) > 0 {
feedCard[0].Title = feedCard[0].Title + keyWord
}
return d.sendMessage(NewFeedCardMsg(feedCard))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。