1 Star 0 Fork 0

h79 / gothird

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
idconvert.go 9.50 KB
一键复制 编辑 原始数据 按行查看 历史
huqiuyun 提交于 2024-03-28 10:32 . 群id转化
package work
import (
"encoding/json"
"fmt"
"gitee.com/h79/gothird/token"
"gitee.com/h79/gothird/weixin/consts"
"gitee.com/h79/gothird/weixin/response"
"gitee.com/h79/gothird/weixin/work/structs"
"gitee.com/h79/goutils/common/http"
)
// IDCTmpExternalUserId tmp_external_userid的转换
// 将应用获取的外部用户临时idtmp_external_userid,转换为external_userid。
//
// 支持将以下业务类型(business_type)对应接口获取到的tmp_external_userid进行转换:
//
// 业务类型 描述 相关接口
// 1 会议 获取会议详情
// 2 收集表 收集表的统计信息查询
// 读取收集表答案
// 支持对以下用户类型(user_type)进行转换:
//
// 用户类型 描述 转换范围
// 1 客户 应用可见范围内,配置了客户联系功能的企业成员所添加的外部联系人
// 2 企业互联 共享应用配置共享范围内的成员
// 3 上下游 共享应用配置共享范围内的成员
// 4 互联企业(圈子) 管理后台配置的应用可见范围内的成员
//
// 请求方式:POST(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/idconvert/convert_tmp_external_userid?access_token=ACCESS_TOKEN
func IDCTmpExternalUserId(api *token.Api, req structs.TmpExternalUser) (*structs.TmpExternalUserResult, error) {
url := fmt.Sprintf("%s/cgi-bin/idconvert/convert_tmp_external_userid?", consts.WorkApiPrefixUrl)
buf, err := json.Marshal(&req)
if err != nil {
return nil, err
}
var res = struct {
response.Response
structs.TmpExternalUserResult
}{}
if err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
}); err != nil {
return nil, err
}
return &res.TmpExternalUserResult, res.ErrorIf()
}
// IDCKfId 微信客服ID的转换
// 最后更新:2022/09/21
// 将企业主体下的微信客服ID转换成服务商主体下的微信客服ID。
// 请求方式:POST(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/idconvert/open_kfid?access_token=ACCESS_TOKEN
func IDCKfId(api *token.Api, id []string) (*structs.KFIDResult, error) {
url := fmt.Sprintf("%s/cgi-bin/idconvert/open_kfid?", consts.WorkApiPrefixUrl)
req := struct {
Ids []string `json:"open_kfid_list"`
}{
Ids: id,
}
buf, err := json.Marshal(&req)
if err != nil {
return nil, err
}
var res = struct {
response.Response
structs.KFIDResult
}{}
if err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
}); err != nil {
return nil, err
}
return &res.KFIDResult, res.ErrorIf()
}
// IDCTagId 客户标签ID的转换
// 最后更新:2023/05/19
// 将企业主体下的客户标签ID(含标签组ID)转换成服务商主体下的客户标签ID。最多不超过1000个
// 请求方式:POST(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/idconvert/external_tagid?access_token=ACCESS_TOKEN
func IDCTagId(api *token.Api, tagId []string) (*structs.ExternalTagIDResult, error) {
url := fmt.Sprintf("%s/cgi-bin/idconvert/external_tagid?", consts.WorkApiPrefixUrl)
req := struct {
Ids []string `json:"external_tagid_list"`
}{
Ids: tagId,
}
buf, err := json.Marshal(&req)
if err != nil {
return nil, err
}
var res = struct {
response.Response
structs.ExternalTagIDResult
}{}
if err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
}); err != nil {
return nil, err
}
return &res.ExternalTagIDResult, res.ErrorIf()
}
// IDCUnionIdToExternalUserId unionid转换为第三方external_userid
// 当微信用户进入服务商的小程序或公众号时,服务商可通过此接口,将微信客户的unionid转为第三方主体的external_userid,若该微信用户尚未成为企业的客户,则返回pending_id。
// 小程序或公众号的主体名称可以是企业的,也可以是服务商的。
// 该接口有调用频率限制,当subject_type为0时,按企业作如下的限制:10万次/小时、48万次/天、750万次/月;(注意这里是所有服务商共用企业额度的)
// 当subject_type为1时,按服务商作如下的限制:10万次/小时、48万次/天、750万次/月。
// 请求方式:POST(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/idconvert/unionid_to_external_userid?access_token=ACCESS_TOKEN
func IDCUnionIdToExternalUserId(api *token.Api, req structs.UnionIdTo) (*structs.UnionIdToResult, error) {
url := fmt.Sprintf("%s/cgi-bin/idconvert/unionid_to_external_userid?", consts.WorkApiPrefixUrl)
buf, err := json.Marshal(&req)
if err != nil {
return nil, err
}
var res = struct {
response.Response
structs.UnionIdToResult
}{}
if err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
}); err != nil {
return nil, err
}
return &res.UnionIdToResult, res.ErrorIf()
}
// IDCExternalUserIdToPendingId external_userid查询pending_id
// 该接口可用于当一个微信用户成为企业客户前已经使用过服务商服务(服务商侧曾经调用过unionid转换为第三方external_userid)的场景。
// 本接口获取到的pending_id可以维持unionid和external_userid的关联关系。
// pending_id有效期为90天,超过有效期之后,将无法通过该接口将external_userid换取对应的pending_id。
// 仅认证企业可调用
// 该客户的跟进人或其所在客户群群主必须在应用的可见范围之内
// 请求方式:POST(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/idconvert/batch/external_userid_to_pending_id?access_token=ACCESS_TOKEN
func IDCExternalUserIdToPendingId(api *token.Api, req structs.ExtToPendingId) ([]structs.ExtToPendingIdResult, error) {
url := fmt.Sprintf("%s/cgi-bin/idconvert/batch/external_userid_to_pending_id?", consts.WorkApiPrefixUrl)
buf, err := json.Marshal(&req)
if err != nil {
return nil, err
}
var res = struct {
response.Response
Result []structs.ExtToPendingIdResult `json:"results"`
}{}
if err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
}); err != nil {
return nil, err
}
return res.Result, res.ErrorIf()
}
// IDCApplyMassCallTicket 获取接口高频调用凭据
// 权限说明:
// 仅限授权三个月内的企业获取,且每个企业最多仅能获取一次
// 该凭据获取成功后,有效期为7天,请在7天内完成企业的初始化操作
// 使用该凭据可以不受业务频率限制,但是依然受到基础频率限制
// 请求方式:GET(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/corp/apply_mass_call_ticket?access_token=ACCESS_TOKEN
func IDCApplyMassCallTicket(api *token.Api, req structs.ExtToPendingId) (string, error) {
url := fmt.Sprintf("%s/cgi-bin/corp/apply_mass_call_ticket?", consts.WorkApiPrefixUrl)
buf, err := json.Marshal(&req)
if err != nil {
return "", err
}
var res = struct {
response.Response
Ticket string `json:"mass_call_ticket"`
}{}
if err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
}); err != nil {
return "", err
}
return res.Ticket, res.ErrorIf()
}
// IDCApplyToUpgradeChatId 申请群ID的加密升级
// 设置代开发应用群ID完成加密升级的时间。在调用该接口后,用户可以使用新旧两种群ID调用相关接口。在到达设置的完成升级的时间点后,用户必须使用升级后的群ID调用接口,企业微信会返回升级后的群ID。
//
// 请求方式:POST(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/idconvert/apply_to_upgrade_chatid?access_token=ACCESS_TOKEN
func IDCApplyToUpgradeChatId(api *token.Api, upgradeTime int64) error {
url := fmt.Sprintf("%s/cgi-bin/idconvert/apply_to_upgrade_chatid?", consts.WorkApiPrefixUrl)
var req = struct {
Time int64 `json:"upgrade_time"`
}{
Time: upgradeTime,
}
buf, err := json.Marshal(&req)
if err != nil {
return err
}
var res = response.Response{}
if err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
}); err != nil {
return err
}
return res.ErrorIf()
}
// IDCChatId 群ID转换接口
// 用户可以将升级前的群ID转换成升级后的群ID。如果传入升级后的群ID则原样返回。
// chatId 需要转换的群ID列表,最多输入100个
// 请求方式:POST(HTTPS)
// 请求地址:https://qyapi.weixin.qq.com/cgi-bin/idconvert/chatid?access_token=ACCESS_TOKEN
func IDCChatId(api *token.Api, chatId []string) (structs.ChatIdConvertResult, error) {
url := fmt.Sprintf("%s/cgi-bin/idconvert/chatid?", consts.WorkApiPrefixUrl)
var req = struct {
List []string `json:"chat_id_list"`
}{
List: chatId,
}
buf, err := json.Marshal(&req)
if err != nil {
return structs.ChatIdConvertResult{}, err
}
var res = struct {
response.Response
structs.ChatIdConvertResult
}{}
err = api.Request("POST", url, buf, func(hp *http.Http, body []byte) error {
if er := json.Unmarshal(body, &res); er != nil {
return er
}
return res.ReturnIf(api)
})
if err != nil {
return res.ChatIdConvertResult, err
}
return res.ChatIdConvertResult, res.ErrorIf()
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/h79/gothird.git
git@gitee.com:h79/gothird.git
h79
gothird
gothird
v1.8.106

搜索帮助

344bd9b3 5694891 D2dac590 5694891