前言
-
corp_id 每个企业都拥有唯一的ID【我的企业-企业信息获取】
-
Secret 每一个·应用都有一个独立的访问密钥 (secret务必不能泄漏)【应用管理或管理工具获取】
-
access_token 是应用调用api的凭证,由 corp_id和Secret换取
基于以上了解,开发的应用分类为:企业内部应用开发、第三方应用开发。通讯录被认为是企业微信内的一个应用,为了保证通讯录数据完整性,第三方应用没有写通讯录的权限。以下内容基于企业内部应用开发身份而说明(2022年8月10日)
通讯录
同步模式
-
应用程序向企业微信同步
-
企业微信向应用程序同步(需要配置接收事件服务器、提供回调接收服务)
配置说明
回调配置
回调配置(企业微信处理完成后调用应用程序,入参为xml格式,没有json格式,下载解密工具包时直接选择xml格式的)
接收事件服务器要求
同时满足GET、POST请求
GET:仅用于在应用创建配置应用信息时的验证,企业微信服务端会向回调URL发起一个 Get 请求,当该回调URL按照约定进行了响应后,表明第三方服务具备解析企业微信推送消息的能力
POST:用于实际的业务请求,比如应用菜单的点击事件,用户消息等。当有回调的行为发生时,企业微信服务端会向该回调URL发起一个 Post 请求,同时数据会已加密的形式推送到该回调 URL,第三方服务商接受信息、解密信息,处理业务逻辑,并且按照约定进行响应即可
通讯录管理
通讯录管理(应用程序操作企业微信通讯录API,请求参数为json格式)
加解密说明
加解密说明官方提供的工具包(下载java xml版本)https://developer.work.weixin.qq.com/devtool/introduce?id=10128
接收事件服务器代码演示
调用企业微信api代码演示
回调请求数据示例
--创建 2次请求
<xml>
<ToUserName>
<![CDATA[wwf20cexxxx]]>
</ToUserName>
<FromUserName>
<![CDATA[sys]]>
</FromUserName>
<CreateTime>1558850428</CreateTime>
<MsgType>
<![CDATA[event]]>
</MsgType>
<Event>
<![CDATA[change_contact]]>
</Event>
<ChangeType>
<![CDATA[update_user]]>
</ChangeType>
<UserID>
<![CDATA[vvvv]]>
</UserID>
<Department>
<![CDATA[1]]>
</Department>
<IsLeader>0</IsLeader>
<IsLeaderInDept>
<![CDATA[0]]>
</IsLeaderInDept>
</xml>
------------------------------------
<xml>
<ToUserName>
<![CDATA[wwf20cexxxx]]>
</ToUserName>
<FromUserName>
<![CDATA[sys]]>
</FromUserName>
<CreateTime>1558851428</CreateTime>
<MsgType>
<![CDATA[event]]>
</MsgType>
<Event>
<![CDATA[change_contact]]>
</Event>
<ChangeType>
<![CDATA[create_user]]>
</ChangeType>
<UserID>
<![CDATA[vvvv]]>
</UserID>
<Name>
<![CDATA[vvvv]]>
</Name>
<Mobile>
<![CDATA[15045268636]]>
</Mobile>
<Gender>1</Gender>
<Avatar>
<![CDATA[https://rescdn.qqmail.com/node/wwmng/wwmng/style/images/independent/DefaultAvatar$73ba92b5.png]]>
</Avatar>
<Department>
<![CDATA[1]]>
</Department>
<Status>4</Status>
<IsLeader>0</IsLeader>
<IsLeaderInDept>
<![CDATA[0]]>
</IsLeaderInDept>
<MainDepartment>1</MainDepartment>
<BizMail>
<![CDATA[vvvv@xxx.wecom.work]]>
</BizMail>
</xml>
编辑 只发送有变化的标签 <xml> <ToUserName> <![CDATA[wwf20cexxxx]]> </ToUserName> <FromUserName> <![CDATA[sys]]> </FromUserName> <CreateTime>1558860428</CreateTime> <MsgType> <![CDATA[event]]> </MsgType> <Event> <![CDATA[change_contact]]> </Event> <ChangeType> <![CDATA[update_user]]> </ChangeType> <UserID> <![CDATA[aaabbb]]> </UserID> <Email> <![CDATA[xxx@xxx.com]]> </Email> </xml>
--删除 <xml> <ToUserName> <![CDATA[wwf20cexxxx]]> </ToUserName> <FromUserName> <![CDATA[sys]]> </FromUserName> <CreateTime>1558861428</CreateTime> <MsgType> <![CDATA[event]]> </MsgType> <Event> <![CDATA[change_contact]]> </Event> <ChangeType> <![CDATA[delete_user]]> </ChangeType> <UserID> <![CDATA[wangwen]]> </UserID> </xml>
注意事项
-
账号是企业成员唯一标识,可以使用公司系统内统一ID
-
员工的手机和邮箱不能同时为空
-
企业微信根据手机号与邮箱验证唯一性
- 数据初始化:企业微信api没有提供批量创建的接口能力,可以使用批量导入功能
问题讨论
可能发生数据不一致问题
-
企业微信未发送回调:
-
接收服务宕机
-
可能收到重复消息?
针对以上问题需要指定对应的处理方案 。
如果觉得内容有用请点赞收藏