diff --git a/external_contact.go b/external_contact.go index b8ddbba..6cf46ec 100644 --- a/external_contact.go +++ b/external_contact.go @@ -26,12 +26,20 @@ func (c *WorkwxApp) GetExternalContact(externalUserID string) (*ExternalContactI return &resp.ExternalContactInfo, nil } -// BatchListExternalContact 批量获取客户详情 +// BatchListExternalContact +// +// Deprecated: 因为批量获取客户详情 https://developer.work.weixin.qq.com/document/path/92994 已经 deprecated UserID参数 +// 请使用 BatchListExternalContactsOfUserIDs 代替 为了保证兼容此函数保留 func (c *WorkwxApp) BatchListExternalContact(userID string, cursor string, limit int) (*BatchListExternalContactsResp, error) { + return c.BatchListExternalContactsOfUserIDs([]string{userID}, cursor, limit) +} + +// BatchListExternalContactsOfUserIDs 批量获取客户详情 支持多个不同UserID +func (c *WorkwxApp) BatchListExternalContactsOfUserIDs(userID []string, cursor string, limit int) (*BatchListExternalContactsResp, error) { resp, err := c.execExternalContactBatchList(reqExternalContactBatchList{ - UserID: userID, - Cursor: cursor, - Limit: limit, + UseridList: userID, + Cursor: cursor, + Limit: limit, }) if err != nil { return nil, err diff --git a/external_contact.md.go b/external_contact.md.go index 8f65d8f..fe9c28c 100644 --- a/external_contact.md.go +++ b/external_contact.md.go @@ -127,7 +127,9 @@ type FollowUserTag struct { GroupName string `json:"group_name"` // TagName 该成员添加此外部联系人所打标签名称 TagName string `json:"tag_name"` - // Type 该成员添加此外部联系人所打标签类型, 1-企业设置, 2-用户自定义 + // TagId 该成员添加此外部联系人所打企业标签的id,用户自定义类型标签(type=2)不返回 + TagId string `json:"tag_id"` + // Type 该成员添加此外部联系人所打标签类型, 1-企业设置, 2-用户自定义 3-规则组标签(仅系统应用返回) Type FollowUserTagType `json:"type"` } diff --git a/models.go b/models.go index c2c50c7..5fda6c1 100644 --- a/models.go +++ b/models.go @@ -526,10 +526,12 @@ type BatchListExternalContactsResp struct { } // reqExternalContactBatchList 批量获取客户详情 +// https://developer.work.weixin.qq.com/document/path/92994 +// 本接口已经支持批量请求 单个 UserID参数已经废弃 type reqExternalContactBatchList struct { - UserID string `json:"userid"` - Cursor string `json:"cursor"` - Limit int `json:"limit"` + UseridList []string `json:"userid_list"` + Cursor string `json:"cursor"` + Limit int `json:"limit"` } var _ bodyer = reqExternalContactBatchList{} diff --git a/rx_msg.md.go b/rx_msg.md.go index 6c89300..8d4260a 100644 --- a/rx_msg.md.go +++ b/rx_msg.md.go @@ -52,9 +52,6 @@ type EventType string // EventTypeChangeExternalContact 企业客户事件 const EventTypeChangeExternalContact EventType = "change_external_contact" -// EventTypeChangeExternalChat 客户群变更事件 -const EventTypeChangeExternalChat EventType = "change_external_chat" - // EventTypeSysApprovalChange 审批申请状态变化回调通知 const EventTypeSysApprovalChange EventType = "sys_approval_change" @@ -82,12 +79,33 @@ const ChangeTypeDelFollowUser ChangeType = "del_follow_user" // ChangeTypeTransferFail 客户接替失败事件 const ChangeTypeTransferFail ChangeType = "transfer_fail" +// EventTypeChangeExternalChat 客户群变更事件 +const EventTypeChangeExternalChat EventType = "change_external_chat" + +// EventTypeChangeExternalTag 企业客户标签变更事件 +const EventTypeChangeExternalTag EventType = "change_external_tag" + // ChangeTypeCreateUser 新增成员事件 const ChangeTypeCreateUser ChangeType = "create_user" // ChangeTypeUpdateUser 更新成员事件 const ChangeTypeUpdateUser ChangeType = "update_user" +// ChangeTypeCreate 事件变更类型: 创建 +const ChangeTypeCreate ChangeType = "create" + +// ChangeTypeUpdate 事件变更类型: 更新 +const ChangeTypeUpdate ChangeType = "update" + +// ChangeTypeDismiss 事件变更类型: 解散 +const ChangeTypeDismiss ChangeType = "dismiss" + +// ChangeTypeDelete 事件变更类型: 删除 +const ChangeTypeDelete ChangeType = "delete" + +// ChangeTypeShuffle 事件变更类型: 重排 +const ChangeTypeShuffle ChangeType = "shuffle" + // EventTypeAppMenuClick 点击菜单 const EventTypeAppMenuClick = "click" diff --git a/rx_msg_extras.go b/rx_msg_extras.go index f089b94..e9758de 100644 --- a/rx_msg_extras.go +++ b/rx_msg_extras.go @@ -480,6 +480,11 @@ type EventAddHalfExternalContact interface { // GetState 添加此用户的「联系我」方式配置的state参数,可用于识别添加此用户的渠道 GetState() string + + // GetWelcomeCode 欢迎语code,可用于发送欢迎语 + // 当企业微信开启加好友无须验证且人员不主动添加到通讯录,则收到此事件,可以发送欢迎语 + // See also: https://developer.work.weixin.qq.com/document/path/92130#%E5%A4%96%E9%83%A8%E8%81%94%E7%B3%BB%E4%BA%BA%E5%85%8D%E9%AA%8C%E8%AF%81%E6%B7%BB%E5%8A%A0%E6%88%90%E5%91%98%E4%BA%8B%E4%BB%B6 + GetWelcomeCode() string } var _ EventAddHalfExternalContact = (*rxEventAddHalfExternalContact)(nil) diff --git a/user_info.md.go b/user_info.md.go index 55cf458..b28dd1b 100644 --- a/user_info.md.go +++ b/user_info.md.go @@ -76,11 +76,14 @@ type UserDeptInfo struct { } // UserIdentityInfo 访问用户身份信息 +// See alose https://developer.work.weixin.qq.com/document/path/91023 type UserIdentityInfo struct { // UserID 成员UserID。若需要获得用户详情信息,可调用通讯录接口:读取成员。如果是互联企业,则返回的UserId格式如:CorpId/userid - UserID string `json:"UserId"` + UserID string `json:"userid"` // OpenID 非企业成员的标识,对当前企业唯一。不超过64字节 - OpenID string `json:"OpenId"` - // DeviceID 手机设备号(由企业微信在安装时随机生成,删除重装会改变,升级不受影响) - DeviceID string `json:"DeviceId"` + OpenID string `json:"openid"` + // 成员票据,最大为512字节,有效期为1800s。 scope为snsapi_privateinfo,且用户在应用可见范围之内时返回此参数。后续利用该参数可以获取用户信息或敏感信息 + UserTicket string `json:"user_ticket"` + // 外部联系人id,当且仅当用户是企业的客户,且跟进人在应用的可见范围内时返回。如果是第三方应用调用,针对同一个客户,同一个服务商不同应用获取到的id相同 + ExternalUserid string `json:"external_userid"` }