bottender
用一套代码同时驱动Facebook、Slack、Telegram等9大平台机器人的Node.js对话框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用一套代码同时驱动Facebook、Slack、Telegram等9大平台机器人的Node.js对话框架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你要同时运营 Facebook Messenger、LINE、Telegram、Slack、WhatsApp 等多个渠道的客服机器人, 每个平台的 API、鉴权方式、Webhook 格式都各不相同——光是理解这些差异就够头疼了。 而 Bottender 正是为了解决这个问题而生:它用一个统一的框架,把所有平台的差异封装起来, 让你用同一套代码管理所有渠道的对话机器人的框架。
Bottender 由日本 Yoctol 公司(一家专注于 NLP 和对话 AI 的技术公司)开发和维护, 公司同时运营 Utopy.Chat 聊天机器人平台,在对话 AI 领域有深厚积累。 Bottender 的设计理念是:开发者只需要关注「用户说了什么」和「 bot 应该怎么回应」, 而不用关心底层消息平台的技术细节。
打个比方:如果把做机器人比作开店,Bottender 就像是那个帮你把所有外卖平台 (美团、饿了么、抖音)订单汇总到一个系统里的中间件。你只管接单出餐, 平台对接的事全交给 Bottender 来处理。
Bottender 目前支持 9 大主流消息平台:Facebook Messenger、LINE、Slack、 Telegram、Viber、WhatsApp、Express、XING 和 Discord。开发者可以通过配置文件 快速切换不同渠道,无需修改业务逻辑代码。
在代码层面,Bottender 提供了两种定义对话的方式:
声明式路由(Declarative Router):类似 Express/Koa 的路由写法,用 context.event.isText、
context.event.isImage 等判断条件来匹配不同的 Handler——做过 Web 开发的开发者会非常熟悉这种模式。
函数式 Actions:每个对话行为封装成独立的函数,通过返回 next 或具体的响应内容
来控制对话流向。Actions 之间可以组合、复用,天然支持状态机模式(这也是 Bottender 的核心设计)。
Bottender 最独特的设计是内置状态机机制。传统的 chatbot 开发中,处理多轮对话
(比如点餐机器人:选菜品 → 选规格 → 确认地址 → 支付)往往需要大量的 if-else
或复杂的 session 管理。而 Bottender 的 bottender.forwardTo().withState()
模式让你可以优雅地描述每个状态下的行为和状态转移条件。
Bottender 采用 Lerna Monorepo 架构,仓库包含 9 个子包:
bottender:核心框架,包含 Bot、Context、Router、Session 等基础模块bottender-express:与 Express.js 服务器集成bottender-facebook、bottender-line、bottender-slack 等:各平台的官方 Connectorbottender-dialogflow、bottender-luis、bottender-rasa:与主流 NLU 服务的集成bottender-qna-maker:微软 QnA Maker 集成create-bottender-app:脚手架工具,一行命令创建新项目核心使用 Node.js/TypeScript 开发,底层依赖 Express.js 作为 HTTP 服务器, 通过 Webhook 方式与各平台通信。框架内部大量使用了 TypeScript 类型系统, 提供了完整的类型提示,开发体验较好。
Bottender 提供了 create-bottender-app 脚手架,输入平台名称后自动生成完整的项目模板。
以 Messenger 为例:安装后只需要填写 Page Access Token 和 Verify Token,
框架自动帮你处理 Webhook 验证和消息接收,无需关心 Node.js 层面的 HTTP 细节。
文档网站(bottender.js.org)提供了详细的 API 文档和使用指南。
无内置 AI 能力:Bottender 本身不包含 LLM 或 NLP 模型, 虽然可以对接 Dialogflow、LUIS、RASA 等 NLU 服务,但这属于额外集成,增加了复杂度。 对于想直接接入 GPT 的开发者来说,需要自己实现与 OpenAI API 的通信逻辑。
维护状态:GitHub 活跃度已明显下降,issues 和 PR 响应不如以往活跃, 对于新平台(如 Telegram Bot API v6+)的跟进可能不够及时。
仅 Node.js:对 Python/Java 等后端语言生态的开发者不友好。
Bottender 在 2018-2020 年间曾是 Node.js 生态中最受关注的 chatbot 框架之一, 在 GitHub 上获得了 4,000+ Stars。它代表了「多渠道消息机器人统一抽象」 这一技术方向的早期探索,为后来的 Bot Framework 设计提供了重要参考。 随着大语言模型的崛起,传统的规则式 chatbot 框架逐渐被 AI-native 的对话框架取代, 但 Bottender 在多渠道集成方面的设计思路,仍值得在 AI Agent 时代借鉴。