This commit is contained in:
邹宗楠
2023-01-29 14:42:40 +08:00
parent 268eace3d4
commit 9f0e014981
3 changed files with 101 additions and 6 deletions

View File

@@ -0,0 +1,73 @@
package enterprise_wechat
import (
"errors"
"git.rosy.net.cn/baseapi/utils"
"net/http"
)
const (
MsgTypeText = "text" // 文本消息
MsgTypeImg = "image" // 图片消息
MsgTypeVoice = "voice" // 语音消息
MsgTypeVideo = "video" // 视频消息
MsgTypeFile = "file" // 文件消息
MsgTypeTextCard = "textcard" // 文本卡片消息
MsgTypeNews = "news" // 图文消息
MsgTypeMpNews = "mpnews" // 图文消息
MsgTypeMarkdown = "markdown" // markdown消息
MsgTypeMiniprogramNotice = "miniprogram_notice" // 小程序通知消息
MsgTypeTemplateCard = "template_card" // 模板卡片消息(文本型/图文型/按钮型/投票型/多项选择型)
)
// EnterpriseSendMsgReq 发送企业微信文本卡片消息请求参数
type EnterpriseSendMsgReq struct {
Touser string `json:"touser"` // 成员ID列表消息接收者多个接收者用|分隔最多支持1000个
Toparty string `json:"toparty"` // 部门ID列表多个接收者用|分隔最多支持100个
Totag string `json:"totag"` // 标签ID列表多个接收者用|分隔最多支持100个
Msgtype string `json:"msgtype"` // 消息类型此时固定为textcard
Agentid int `json:"agentid"` // 企业应用的id
Textcard TextCardObject `json:"textcard"`
EnableIdTrans int `json:"enable_id_trans"` // 表示是否开启id转译0表示否1表示是默认0
EnableDuplicateCheck int `json:"enable_duplicate_check"` // 表示是否开启重复消息检查0表示否1表示是
DuplicateCheckInterval int `json:"duplicate_check_interval"` // 表示是否重复消息检查的时间间隔默认1800s最大不超过4小时
}
type TextCardObject struct {
Title string `json:"title"` // 标题不超过128个字节
Description string `json:"description"` // 描述不超过512个字节
Url string `json:"url"` // 点击后跳转的链接
Btntxt string `json:"btntxt"` // 按钮文字
}
// EnterpriseSendMsgRes 返回参数
type EnterpriseSendMsgRes struct {
Errcode int `json:"errcode"` // 返回码
Errmsg string `json:"errmsg"` // 对返回码的文本描述内容
Invaliduser string `json:"invaliduser"` // 不合法的userid不区分大小写统一转为小写
Invalidparty string `json:"invalidparty"` // 不合法的partyid
Invalidtag string `json:"invalidtag"` // 不合法的标签id
Unlicenseduser string `json:"unlicenseduser"` // 没有基础接口许可(包含已过期)的userid
Msgid string `json:"msgid"` // 消息id用于撤回应用消息
ResponseCode string `json:"response_code"` // 仅消息类型为“按钮交互型”“投票选择型”和“多项选择型”的模板卡片消息返回应用可使用response_code调用更新模版卡片消息接口72小时内有效且只能使用一次
}
// SendMsgToUser 将消息发送给企业微信用户
func (a *API) SendMsgToUser(msg *EnterpriseSendMsgReq) error {
a.CheckAccessTokenExpiresIn()
param := utils.Struct2Map(msg, "", false)
data, err := a.AccessAPI(WeChatBaseApi, SendMsgToUser, http.MethodPost, param)
if err != nil {
return err
}
result := &EnterpriseSendMsgRes{}
if err := utils.Map2StructByJson(data, result, false); err != nil {
return err
}
if result.Errcode != 0 {
return errors.New(result.Errmsg)
}
return nil
}