一、身份信息——这个号是谁
身份信息是最基础的查询:微信号(wxid)、昵称、头像。这三个字段标识了"这个号是谁"。
身份信息的典型用途:多实例管理时区分哪个号是哪个号(用昵称和头像辨识);生成电子名片展示给客户;同步到网站客服系统展示当前接待人信息。身份信息变化频率极低,查一次缓存即可。
二、状态信息——这个号在不在
状态信息回答"在线吗":实例在线状态、Token 是否有效、最近心跳时间。这组信息不是一次查出来的,而是通过状态接口 + Token 鉴权结果 + 心跳记录综合判断。
状态信息是生产环境的基础——程序启动时查一次确认在线,运行中靠回调持续感知。具体实现536篇讲过,这里不重复。
三、关系信息——这个号有哪些好友和群
关系信息通过联系人接口和群接口查询:好友列表(数量、每人的wxid和备注)、群列表(数量、每群的ID和名称)。这组信息是"这个号连接了谁"。
关系信息数据量大,全量拉取后落库做本地管理。关系信息变化频率中等(好友增减、群变动),靠事件回调做增量。
四、内容信息——这个号有什么素材
内容信息是"这个号产生和收到了什么":聊天记录(通过消息记录接口拉取)、收到的图片和文件(通过消息回调里的素材引用下载)、朋友圈动态(如果接口支持)。
内容信息是业务价值最高的信息层——聊天记录可以分析客户需求,收到的文件可以进业务系统。但也是处理最复杂的,涉及下载、解析、存储。
四层信息对照
信息层 | 查什么 | 数据量 | 变化频率 | 业务价值 |
|---|---|---|---|---|
身份信息 | 昵称、头像、微信号 | 小 | 极低 | 标识区分 |
状态信息 | 在线、Token、心跳 | 小 | 高 | 生产基础 |
关系信息 | 好友列表、群列表 | 大 | 中 | 运营基础 |
内容信息 | 聊天记录、素材、动态 | 最大 | 高 | 业务价值 |
四层信息查询示例
def inspect_account(wid): """完整检查一个微信号的所有可查信息""" report = {"wId": wid} # 第一层:身份 ident = api("getSelfInfo", {"wId": wid}) report["identity"] = { "nickname": ident["data"]["nickname"], "wxid": ident["data"]["wxid"], "avatar": ident["data"]["avatar"] } # 第二层:状态 status = api("getInstanceStatus", {"wId": wid}) report["status"] = "online" if status["code"] == "1000" else "offline" # 第三层:关系 contacts = api("getContactList", {"wId": wid, "page": 1}) groups = api("getGroupList", {"wId": wid, "page": 1}) report["relations"] = { "contact_count": contacts["data"]["total"], "group_count": groups["data"]["total"] } # 第四层:内容(摘要) report["content"] = { "today_messages": db.count("messages", wId=wid, date=today()), "media_files": db.count("media", wId=wid) } return report落地建议
四层信息从浅到深,查询难度和价值递增。身份和状态先做(5分钟搞定),关系信息做全量同步(有数据基础),内容信息按需做(聊天记录和素材处理最复杂但价值最高)。建议做一个 inspect 函数把四层信息一次查出来生成报告,方便日常运维巡检。接口参数和字段说明参考 Eyun 开发文档,平台开通见 Eyun 官网。