ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

企业微信二次开发实战:如何构建支持多种消息类型的企业微信机器人

企业微信二次开发实战:如何构建支持多种消息类型的企业微信机器人 最近做的企微二开要做一个全能机器人——能收发文本、图片、文件、链接卡片、富文本、小程序消息能根据不同场景回不同类型。和之前聊的富媒体消息处理不同这篇聊的是机器人整体架构——怎么让一个机器人灵活支持多种消息类型而不是每加一种类型改一次代码。把架构设计记下来。底层用的是Eyun 平台开放的企微 API承接各类消息收发本文重点不在调接口在支持多消息类型的机器人怎么架构。能力注册插件化机器人不能把所有消息处理逻辑写在一个文件里要插件化。每种消息类型一个处理器注册到机器人class TextHandler: msg_type text def handle(self, msg, context): # 文本处理逻辑 return reply class ImageHandler: msg_type image def handle(self, msg, context): # 图片OCR加理解 return reply class FileHandler: msg_type file def handle(self, msg, context): # 文件下载加处理 return reply robot.register(TextHandler()) robot.register(ImageHandler()) robot.register(FileHandler())插件化让加新消息类型只加一个 handler 类不动核心。最早所有逻辑写一起加一种消息类型改半天还容易碰坏别的。消息处理管道消息进来不是直接丢给 handler要走管道接收 → 归一化 → 识别类型 → 分发到handler → handler处理 → 回复策略 → 发送每个环节独立归一化各类型消息转成统一结构识别类型按 msg_type 找对应 handler分发找不到 handler 的走默认回复策略决定回什么类型文本/图片/卡片管道让每个环节可替换、可插拔。比如加敏感词过滤在回复策略前插一个 filter 节点就行。多类型回复策略机器人回复不能总是文本。要根据场景回不同类型简单问答文本回复产品介绍图文卡片图片加标题加链接文件发送文件消息操作引导富文本带按钮数据报表图片图表截图回复策略配置化reply_strategy 表: scene product_intro reply_type rich_card template product_card_template variables [product_name, price, image_url]策略表配好场景和回复类型机器人按场景选模板构造回复。不做策略配置所有回复都是文本产品介绍没有图片不够直观操作引导没有按钮要员工手动找入口。关于多类型消息构造和发送可以看Eyun 开发文档。消息类型兼容性不同端对消息类型支持不同企微客户端全类型支持微信客户端外部客户部分卡片不支持低版本基础类型机器人发消息前检测接收方客户端能力不支持就降级。降级规则配置化compatibility 表: msg_type rich_card min_client_ver 3.0 fallback_type text_with_link不做兼容性外部客户在微信里看到收到不支持的卡片体验崩。机器人配置化机器人能力要可配置不是写死开关某些 handler 可启停优先级多 handler 命中时的顺序限流每种消息类型的处理并发上限超时单类型处理超时阈值配置化让运营调机器人能力不用发版。比如某段时间图片处理服务挂了关掉 ImageHandler图片消息回图片处理暂不可用不影响其他类型。写在最后多消息类型机器人这套东西难点不在调各类型发送接口在插件化架构、处理管道、回复策略、兼容降级、配置化这些工程细节。每一项都不深奥但少做一项机器人就僵硬或者出兼容问题。这套搭扎实机器人真能灵活收发多种类型消息——而不是只会发文本的半成品。
返回列表