-
Notifications
You must be signed in to change notification settings - Fork 0
/
message.go
46 lines (40 loc) · 1.16 KB
/
message.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package dingtalk
import (
"context"
"errors"
"strings"
)
type SendMessageByTemplateRequest struct {
AgentId int
TemplateId string
UserIds []string
DeptIds []string
Data string
}
type SendMessageByTemplateResponse struct {
OpenAPIResponse
TaskId int `json:"task_id"`
RequestId string `json:"request_id"`
}
// 使用模板发送工作通知消息
func (dtc *DingTalkClient) SendMessageByTemplate(ctx context.Context, authCorpId string, req SendMessageByTemplateRequest) (SendMessageByTemplateResponse, error) {
var data SendMessageByTemplateResponse
if len(req.UserIds) == 0 && len(req.DeptIds) == 0 {
return data, errors.New("user Ids and dept ids have at least one")
}
requestData := map[string]interface{}{
"agent_id": req.AgentId,
"template_id": req.TemplateId,
}
if len(req.UserIds) > 0 {
requestData["userid_list"] = strings.Join(req.UserIds, ",")
}
if len(req.DeptIds) > 0 {
requestData["dept_id_list"] = strings.Join(req.DeptIds, ",")
}
if len(req.Data) > 0 {
requestData["data"] = req.Data
}
err := dtc.httpTOP(ctx, "message/corpconversation/sendbytemplate", authCorpId, nil, requestData, &data)
return data, err
}