ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

企业微信API如何构建统一身份体系?账号、员工与业务系统的数据关联方案

企业微信API如何构建统一身份体系?账号、员工与业务系统的数据关联方案 最近做的企微二开公司有 CRM、OA、工单多个业务系统每个系统有自己的用户 ID。企微也有 uin、appid 这些标识。怎么把这些 ID 关联起来让企微的员工在业务系统里能识别、业务系统的用户在企微里能找到就是统一身份体系要解决的问题。这篇重点讲调哪些企微接口拿身份数据、怎么和业务系统 ID 映射。底层用的是Eyun 平台开放的企微 API统一 POSTJSON鉴权用 App Token 加 appid响应封套{code, data, detail, message, time}code 为 0 成功。企微侧的身份标识企微接口里有几个关键身份标识appid企微实例 ID每个企微账号一个uin企微账号身份员工和客户都有 uinconversationId会话 ID单聊是 uin群聊是 roomId业务系统侧有自己的用户 ID如员工工号、客户编号。统一身份体系就是建立企微标识和业务系统 ID 的映射关系。拉员工列表调通讯录接口要建立映射先从企微拉员工列表。调联系人模块import requests BASE https://api.eyun.com HEADERS {Authorization: Bearer eyk_xxxx, Content-Type: application/json} def get_staff_list(appid): resp requests.post( f{BASE}/wx-api/api/contact/getUserList, headersHEADERS, json{appid: appid} ) return resp.json()[data][list]返回每个员工的 uin、昵称、手机号、邮箱、部门。这些字段用来和业务系统匹配。查员工详情getUserProfileDetail拉到列表后逐个查详情拿更多字段工号、职位、直属上级def get_staff_detail(appid, uin): resp requests.post( f{BASE}/wx-api/api/contact/getUserProfileDetail, headersHEADERS, json{appid: appid, uin: uin} ) data resp.json()[data] return { uin: uin, name: data[nickName], mobile: data.get(mobile, ), email: data.get(email, ), position: data.get(position, ), department: data.get(department, ), direct_manager: data.get(managerUin, ) }手机号和邮箱是匹配业务系统的关键字段——大部分业务系统用手机号或邮箱做用户标识。建立映射表uin ↔ 业务ID拉到员工数据后和业务系统用户表匹配建立映射identity_mapping 表: id uin 企微uin appid 企微实例ID biz_system 业务系统crm/oa/ticket biz_user_id 业务系统用户ID match_field 匹配字段mobile/email match_value 匹配值 created_at匹配逻辑优先用工号匹配最准工号没有用手机号手机号没有用邮箱。匹配成功的存映射表匹配失败的标记待人工确认。客户身份映射客户也需要映射。客户在企微有 uin在 CRM 有客户编号。客户加好友时通过 Webhook 回调拿到 uin调接口查客户详情def get_customer_detail(appid, uin): resp requests.post( f{BASE}/wx-api/api/contact/getUserProfileDetail, headersHEADERS, json{appid: appid, uin: uin} ) data resp.json()[data] return { uin: uin, name: data.get(nickName, ), mobile: data.get(mobile, ), corp_name: data.get(corpName, ) }用手机号在 CRM 查客户编号建立 uin ↔ 客户编号的映射。客户在企微发消息后端通过 uin 查映射表找到 CRM 客户编号调 CRM 接口拿客户信息。映射的使用跨系统调用有了映射表跨系统调用就通了def get_customer_orders(appid, customer_uin): # 1. 查映射表uin → CRM客户编号 mapping identity_mapping.find(uincustomer_uin, biz_systemcrm) if not mapping: return None # 2. 调CRM接口拿订单 return crm_api.get_orders(mapping.biz_user_id)企微侧只用 uin业务系统侧只用业务 ID中间靠映射表转换。两边互不耦合。映射的同步员工离职调岗员工离职、调岗映射要更新。定时同步企微员工列表对比映射表企微有但映射表没有新员工建立映射映射表有但企微没有离职标记失效部门/职位变了更新映射同步每天跑一次保证映射和企微一致。不同步离职员工还能调业务接口安全出事。写在最后统一身份体系这套东西本质是用好企微的通讯录接口——getUserList 拉员工、getUserProfileDetail 查详情用手机号/邮箱/工号和业务系统匹配建立 uin ↔ 业务 ID 的映射表。映射建扎实企微和业务系统的身份打通跨系统调用不用再手动对 ID。
返回列表