dingtalk
这是一个集成钉钉常用功能的简易版服务端开发工具库,适用于创建一次客户端,多次调用的场景。内置token过期时间维护;内置用户id到用户userid的计算函数,可以方便的在企业用户名与userid之间自动转换;同时在reduce函数中可以设置加入白名单过滤,避免在测试环境中发信息给非白名单用户。具体参数说明,请参考钉钉开发文档
仓库地址
https://github.com/kevin2027/easy-dingtalk
安装
go get -u github.com/kevin2027/easy-dingtalk
引入代码
import (
"github.com/kevin2027/easy-dingtalk/dingtalk"
"github.com/kevin2027/easy-dingtalk/utils"
)
创建客户端
srv, _, err = dingtalk.NewDingtalk(utils.DingtalkOptions{
AppKey: config.AppKey,
AppSecret: config.AppSecret,
AgentId: config.AgentId,
})
reduce函数
client.SetDingDiReduceFn(func(ctx context.Context, attr string, src ...string) (dest map[string]string) {
dest = make(map[string]string)
if attr == utils.AttDeptId {
return
}
for _, s := range src {
if user, ok := config.Users[s]; ok {
switch attr {
case utils.AttrUserid:
dest[s] = user.Userid
}
}
}
return
})
调用
消息通知
普通消息
var err error
defer deferErr(&err)
msg := &message.MessageRequest{
Msgtype: "text",
Text: &message.TextMessage{
Content: "这是一段文本消息",
},
}
receiver, err := client.Message().SendToConversation("user0", 123453556, msg)
if err != nil {
err = fmt.Errorf("%w", err)
return
}
fmt.P