
最近接了几个定制化项目谈需求时发现一个有意思的现象差不多一半客户开口第一句就是——我们不用做App、小程序、网页微信就是我们的前端。说实话第一次听到这话我是懵的。但仔细一想用户每天打开微信的时间比任何App都长要是能直接在微信里把业务办了谁还愿意下载新东西但微信本身不是为业务系统设计的。做订单通知、审批流程、客户管理总不能手动一条条发消息吧后来用Eyun的个人微信API接口做了几个项目慢慢摸出了门道通过API可以让应用获得6种完整的交互能力把微信真正变成可编程的业务前端。今天整理出来分享给大家。详细接口定义可以参考 Eyun开发文档下面讲的这些能力文档里都有对应API说明。6种交互能力详解1. 主动通知能力系统推送到用户作用最常用的能力。订单发货通知、审批结果提醒、系统告警等用户不需要操作消息自动发到微信。场景电商下单后自动发订单已发货OA审批通过后立刻通知申请人。Eyun API支撑sendText/sendImage等发送接口标准RESTful APIPOSTJSON格式携带wId实例ID和Token鉴权。2. 被动响应能力用户发消息系统自动回复作用用户主动发起系统被动响应。输入订单12345返回订单状态输入帮助返回操作菜单。场景客服机器人、自助查询、关键词自动回复。Eyun API支撑Webhook回调机制用户发消息时Eyun通过HTTP POST推送JSON数据到你的回调地址处理后调用send接口回复。3. 双向会话能力多轮对话上下文关联作用不是一问一答就结束可以持续多轮对话系统记住之前的聊天内容。场景智能客服引导描述问题预约系统先问时间、再问地点、最后确认过程连贯不中断。Eyun API支撑消息记录同步接口拉取历史消息每条消息有senderId、chatId标识配合Webhook和send接口实现多轮对话。4. 多媒体交互能力8种消息类型全覆盖作用业务交互不只是文字还需要发图片、语音、视频、文件等。比如发身份证照片验证、发PDF合同。场景理赔系统拍照上传出险照片HR系统发送offer文档。Eyun API支撑支持文本/图片/语音/视频/文件/名片/位置/链接8种类型资源类消息先上传获取mediaId再发送接收时返回下载地址。5. 事件触发能力状态变更自动触发动作作用微信里的状态变化也能作为触发条件自动执行业务逻辑。场景新好友添加时自动发欢迎语被拉入新群时发群规好友删除时标记客户流失。Eyun API支撑丰富的事件回调好友添加/删除、入群/退群、群成员变更等同样通过Webhook JSON推送配置不同触发动作即可。6. 数据回流能力微信数据同步回业务系统作用微信不只是消息通道也是数据采集入口。把联系人、聊天记录、群信息同步回业务系统做分析。场景CRM系统自动同步微信联系人补充客户画像质检系统拉取聊天记录检查话术。Eyun API支撑联系人同步接口好友列表、群列表、群成员、消息同步接口按时间范围拉取历史结构化JSON支持增量同步。6种交互能力汇总表能力类型交互方向核心场景关键Eyun API主动通知系统→用户订单通知、审批提醒sendText、sendImage等被动响应用户→系统自助查询、客服机器人Webhook消息回调 send接口双向会话双向多轮智能客服、流程引导消息记录接口 会话状态多媒体交互双向图片验证、文件传输8种消息类型 资源接口事件触发事件驱动欢迎语、流失标记事件回调好友/群/状态数据回流微信→系统CRM同步、质检分析联系人/消息同步接口代码实现6种能力的统一调度入口下面是实际项目中用的调度入口类把6种能力统一封装成WechatInteraction类。参数中的wId和Token请替换成你在Eyun平台上获取的实际值。import requests class WechatInteraction: BASE_URL https://api.eyunz.com def __init__(self, w_id, token): self.w_id w_id self.token token self.session_context {} def _headers(self): return {Content-Type: application/json, Authorization: fBearer {self.token}} # 能力1主动通知 def push_notification(self, to_user, content, msg_typetext): endpoints {text: /message/sendText, image: /message/sendImage} if msg_type not in endpoints: raise ValueError(f不支持的消息类型: {msg_type}) payload {wId: self.w_id, toUser: to_user} payload[content if msg_type text else mediaId] content return requests.post(self.BASE_URL endpoints[msg_type], headersself._headers(), jsonpayload).json() # 能力23被动响应 双向会话 def handle_webhook(self, data): sender, content data.get(fromUser), data.get(content) ctx self.session_context.get(sender, {step: 0}) response self._dialog(sender, content, ctx) self.session_context[sender] ctx if response: self.push_notification(sender, response) return {code: 0} def _dialog(self, sender, content, ctx): if content 预约: ctx[step] 1 return 请告诉我预约时间 elif ctx[step] 1: ctx[time], ctx[step] content, 2 return 请告诉我预约地点 elif ctx[step] 2: ctx[step] 0 return f预约成功时间{ctx[time]}地点{content} return None # 能力5事件触发 def handle_event(self, data): et data.get(eventType) if et friend_add: self.push_notification(data.get(userId), 您好欢迎添加请问有什么可以帮您) elif et group_join: self.push_notification(data.get(groupId), 大家好我是业务小助手) return {code: 0} # 能力6数据回流 def sync_data(self, data_type, start_timeNone): urls {contacts: /contact/getFriends, groups: /contact/getGroups, messages: /message/getHistoryMsgs} if data_type not in urls: raise ValueError(f不支持的数据类型: {data_type}) payload {wId: self.w_id} if start_time: payload[startTime] start_time return requests.post(self.BASE_URL urls[data_type], headersself._headers(), jsonpayload).json()总结把微信作为业务入口刚开始我觉得是野路子做了几个项目后发现这其实是非常务实的选择。用户不用学新东西员工不用换工具落地成本极低。而Eyun的个人微信API接口本质上就是给了你一把打开微信交互能力的钥匙用熟悉的RESTful API、JSON格式、Token鉴权就能调用6种交互能力。不用研究底层协议不用维护登录状态专注写业务逻辑就行。如果你也在做微信当前端这类项目建议去 Eyun平台 了解一下文档齐全接口稳定少踩坑多干活把精力放在真正创造价值的地方。