目录
[一、申请APP ID](#一、申请APP ID)
前面的两篇内容是讲怎么把一个内容从0-1搭建起来并维护,有时候我想把它和别的企业或者人来对接,如下有两种典型场景:
场景一:模块对外对接(服务化封装) 很多时候,我们做的不是一个孤立从 0 到 1 的东西。你有一个已经打磨好的服务模块,希望把它分享到企业里、跟企业内其他模块对接 ,让别的团队也能调用你沉淀的能力。这件事靠的就是服务化封装------ 把你自己的模块包装成可对外提供、可被其他模块接入的标准服务。
场景二:通过外部 IM 触达智能体服务(IM 接入) 你可能已经跑起了本地服务,尤其是智能体服务,你希望通过外部的 IM 就能直接跟它对话 。这里的 IM 就是即时通讯工具,比如飞书就是一个典型的 IM。你可以把它想象成:我打开飞书,发一条消息,对面的 Agent 服务就能收到并直接回复 ------ 就像跟一个同事对话一样自然。这也是我们在用 OpenClaw / Hermes 这类工具时常见的体验。
飞书/企业微信/钉钉 这三个平台是目前国内比较用的多支持IM接入的IM平台。今天我们以飞书为例来做讲解。
一、申请APP ID
温馨提示:不要用豆包一键登录,要用手机号重新注册一下。不然就会反复出现21001这个错误,一直过不去。
**Step 1:**打开飞书工作台,点击创建应用,会跳转到网页上

**Step 2:**点击开发者后台,创建企业自建应用


**Step 3:**获取APP ID和APP Secret

Step 4:设置相关的一些权限
添加机器人:

权限:


每次修改要发布哦
二、IM接入
**Step 1:**告诉CodeBuddy建立消息收发连接,使用feishu_channel来完成收发调用,把APP ID和APP Secret告诉它(不能输明文,放到.env文件里)
这里我们在做模块级的开发,可以不用SpecDD。
代码生成完毕,可以看到消息是如何处理的,基本就是直接回复给你:

飞书上发消息如下:

现在基本上就是原样返回。handle_message是一个中转站,外部消息从这里传进来,我们再去加额外的模块去处理消息,处理完后又把消息从这里返回。
**Step 2:**做一个简单的Agent应答模块,然后把这个应答模块接入到handle_message函数里(要用什么模型把API Key写入到env里,在提示词中指明)
再次启动服务,输入问题:

这时候,我在手机上也装一个飞书。通过发消息给我的这个机器人,它也给我回复了,这说明完成了本地服务对公网消息的通道(飞书组织权限的前提下)。
三、扩展
上面所介绍的是最简单的形式:一个IM通道对应一个服务。

那么,如果一个IM通道想要对应多个服务,比如:通过ACP连接的方式,做一个和Codex连接的服务模块,用/use_agent这样的指令,来让我在飞书上切换实际连接的agent模块

如何应对多个IM通道对应多个服务?首先我们知道上面的handle_message是和feishu_channel绑定死了的。
我们可以采用如下的方法:

好处是左侧的IM通道可以处理成可插拔的形式,右边Agent服务也可以处理成可插拔的形式,增加了灵活度。
顺着这个思路,可以去改上面的代码,在飞书的IM通道基础上,建一个GateWay的中间层,飞书只是其中的一个插件,以后再接入其他的IM服务通道,都可以用这个插件的方式来切换。