Skip to main content
Page 组件允许插件在 LangBot 的 WebUI 侧边栏中注册自定义的可视化页面。页面运行在 iframe 沙箱中,通过 Page SDK 与宿主通信,并可调用插件后端 API。

适用场景

  • 管理面板:为插件提供可视化的配置和数据管理界面(如 FAQ 管理、数据统计仪表盘)
  • 数据展示:展示插件运行时的统计数据、日志、图表等
  • 交互式工具:提供表单、编辑器等交互式界面

添加页面组件

在插件目录执行命令:
根据提示输入页面名称后,会在 components/pages/ 目录下生成页面文件:
同时,manifest.yaml 中会添加组件发现配置:

清单文件:页面

后端处理

Page 组件的后端处理程序继承 Page 基类,实现 handle_api 方法来处理来自前端页面的 API 请求。

PageRequest 字段

PageResponse 构造

前端页面开发

在 HTML 文件中引入 Page SDK,即可与插件后端通信:

Page SDK API

暗色模式

SDK 会自动在页面上设置 CSS 自定义属性,直接使用即可:

页面 i18n

在页面目录下创建 i18n/ 目录,放入 JSON 翻译文件:
翻译文件格式为扁平 JSON 键值对:
在 HTML 元素上添加 data-i18n 属性,SDK 会自动替换文本:

完整示例:FAQ 管理器

以下是一个完整的 Page 组件示例,实现了 FAQ 条目的增删改查。 后端处理程序components/pages/manager/manager.py):
前端页面components/pages/manager/index.html)中通过 langbot.api() 调用后端:
完整示例代码请参考 FAQManager 插件

注意事项

  • 页面运行在 sandbox="allow-scripts allow-forms" 的 iframe 中,不能弹窗或导航父页面
  • 通过 self.plugin 访问插件实例的共享状态,Page 和 Tool 组件可以共享数据
  • 使用 PageResponse.ok()PageResponse.fail() 构造响应,确保格式一致
  • Page SDK 的 <script> 标签必须放在使用 langbot 对象的代码之前