首页
/ AutoGPT Platform 会议录制机器人 Block 集成指南:Baas Bots 的 Join / Fetch / Leave / Delete 全流程实战

AutoGPT Platform 会议录制机器人 Block 集成指南:Baas Bots 的 Join / Fetch / Leave / Delete 全流程实战

2026-09-06 18:26:35作者:丁柯新Fawn

本篇指南围绕 AutoGPT Platform 内置的 Baas Bots 集成(Bot as a Service,机器人即服务),系统讲解如何让 AI 录播机器人自动加入 Zoom / Google Meet / Microsoft Teams 会议,完成录制、转写、数据获取与隐私清理的完整闭环。读完你将在 Agent 画布上熟练组合四个 Baas Bots Block,掌握每个输入参数的语义、底层 API 调用关系、耗时计费模型与典型业务场景。

Baas Bots 是什么:一键把"会议录播机器人"变成可编排的 Block

AutoGPT Platform(见 autogpt_platform)提供了一种将真实世界服务封装成可视化 Block 的能力。Baas Bots 正是这样一组会议录制机器人Block——它对接第三方 "Bots as a Service" 服务(Meeting BaaS),让开发者不必自建浏览器录像基础设施,即可让一个"机器人分身"自动进入视频会议,完成入会录制 → 取回数据 → 中途离场 → 永久删数据的整条生命周期管理。

baas/bots.py 中可以看到,这组能力被拆成四个独立 Block:

Block(UI 名称) 对应类 类别 固定 ID(UUID)
Baas Bot Join Meeting BaasBotJoinMeetingBlock COMMUNICATION(通讯) 377d1a6a-a99b-46cf-9af3-1d1b12758e04
Baas Bot Leave Meeting BaasBotLeaveMeetingBlock COMMUNICATION(通讯) bf77d128-8b25-4280-b5c7-2d553ba7e482
Baas Bot Fetch Meeting Data BaasBotFetchMeetingDataBlock DATA(数据) ea7c1309-303c-4da1-893f-89c0e9d64e78
Baas Bot Delete Recording BaasBotDeleteRecordingBlock DATA(数据) bf8d1aa6-42d8-4944-b6bd-6bac554c0d3b

这些 Block 类统一以 Block 结尾命名、模块位于 backend/blocks/baas 目录下,并在 blocks/init.py 中通过自动扫描 Block 子类完成注册——因此后端启动后,这组 Block 会直接出现在画布的 Block 库中,开发者只需在搜索框输入 "Baas Bot" 即可拖拽使用。

与视频录制直接相关的还有 Baas Bots 的资质成本说明:代码注释标明 Meeting BaaS 的录制费率约为 0.69 美元/小时_MEETING_BAAS_USD_PER_SECOND = 0.69 / 3600,见 bots.py),下文"成本模型"小节会展开说明如何按实际时长结算。

前置条件:配置 Meeting BaaS API Key 凭据

由于会议录制走的是外部付费服务,所有 Baas Bots Block 的第一个输入都是 credentials(凭据),指向名为 baas 的服务商。服务商注册逻辑位于 _config.py

baas = (
    ProviderBuilder("baas")
    .with_description("Meeting recording and transcription")
    .with_api_key("MEETING_BAAS_API_KEY", "Meeting BaaS API Key")
    .with_base_cost(5, BlockCostType.RUN)  # Higher cost for meeting recording service
    .build()
)

据此可以确认三件事:

  1. 服务商标识为 baas,描述为 "Meeting recording and transcription",即负责会议录制与会话转写;
  2. 认证方式为 API Key,密钥存于 MEETING_BAAS_API_KEY 环境变量对应的凭据项;
  3. 服务商层设定了 5 信用额(RUN 计费类型)的基础运行成本,叠加到每次调用上。

在运行任何 Baas Bot Block 之前,请先在 AutoGPT Platform 的凭据管理中创建或导入一个 MEETING_BAAS_API_KEY,否则所有 Block 都会在凭据校验阶段失败。可参考仓库中 baas/_api.py 的实现来确认密钥的传递方式——客户端在初始化时会把该 Key 写入 x-meeting-baas-api-key 请求头。

核心 Block 详解

Baas Bot Join Meeting:让机器人入会并开始录制

这是整条链路的入口。它的作用正如其描述:"Deploy a bot to join and record a meeting"——部署一个录播机器人加入视频会议并开始录制与转写。

输入参数

输入 说明 类型 是否必填 源码默认值
meeting_url 机器人要加入的会议链接(Zoom / Meet / Teams) str
bot_name 机器人在会议中显示的名称 str
bot_image 机器人头像图片 URL(建议 16:9 比例) str ""
entry_message 机器人入会后自动发送的聊天消息 str ""
reserved 是否占用"预约席位",为 True 时机器人提前 4 分钟入会 bool False
start_time 机器人入会的 Unix 时间戳(毫秒) int None
webhook_url 接收该机器人事件通知的 Webhook 地址 str None
timeouts 自动离会超时配置 Dict[str, Any] {}
extra 附加到机器人上的自定义元数据 Dict[str, Any] {}

底层实现

查看 bots.pyrun(),可以还原完整的请求组装逻辑:

data = await api.join_meeting(
    bot_name=input_data.bot_name,
    meeting_url=input_data.meeting_url,
    reserved=input_data.reserved,
    bot_image=input_data.bot_image if input_data.bot_image else None,
    entry_message=input_data.entry_message if input_data.entry_message else None,
    start_time=input_data.start_time,
    speech_to_text={"provider": "Default"},   # 固定使用默认转写引擎
    webhook_url=input_data.webhook_url if input_data.webhook_url else None,
    automatic_leave=input_data.timeouts if input_data.timeouts else None,
    extra=input_data.extra if input_data.extra else None,
)
yield "bot_id", data.get("bot_id", "")
yield "join_response", data

值得注意的细节:

  • 转写引擎固定为 {"provider": "Default"},即每次入会都开启语音转文字能力;
  • timeouts 输入在 API 层面对应 automatic_leave(自动离会)参数,例如"会议无人说话 X 分钟后离开"之类的超时规则可以放进这个字典;
  • bot_id 是后续所有操作的核心句柄,必须把它通过连线传给 Fetch / Leave / Delete 等下游 Block,本 Block 同时把 API 返回的完整原始 JSON 原样透出到 join_response

输出

输出 说明 类型
error 操作失败时的错误信息 str
bot_id 已部署机器人的 UUID str
join_response join 操作返回的完整响应 Dict[str, Any]

适用场景

  • 自动化录制:无需主持人操作即可自动录制会议;
  • 会议助理:让机器人代替人类记笔记、转写客户会议或团队周会;
  • 合规录制:确保所有关键会议都有存档,用于合规审查与质量保障。

Baas Bot Fetch Meeting Data:取回录制视频、转写稿与元数据

机器人完成录制后,用 bot_id 把成果取回来。本 Block "Retrieve recorded meeting data",一次返回录制文件地址、转写稿和会议元数据。

输入参数

输入 说明 类型 是否必填 源码默认值
bot_id 要取数机器人的 UUID str
include_transcripts 是否在响应中包含转写数据(含说话人识别与时间戳) bool True

注意:虽然该字段非必填,但源码中 include_transcripts 的默认值是 True(见 bots.py),不显式传入也会返回完整转写稿。

输出

输出 说明 类型
error 操作失败时的错误信息 str
mp4_url 会议录制的下载地址(限时有效,应及时下载 str
transcript 会议转写数据(含说话人、时间戳) List[Any]
metadata 会议元数据与机器人信息 Dict[str, Any]

底层实现与"按时长计费"的关键逻辑

对照 bots.py,取数后的字段抽取规则非常清晰:

data = await api.get_meeting_data(bot_id=..., include_transcripts=...)
bot_meta = data.get("bot_data", {}).get("bot", {}) or {}
duration_seconds = float(bot_meta.get("duration_seconds") or 0)
if duration_seconds > 0:
    self.merge_stats(NodeExecutionStats(
        provider_cost=duration_seconds * _MEETING_BAAS_USD_PER_SECOND,
        provider_cost_type="cost_usd",
    ))
yield "mp4_url", data.get("mp4", "")
yield "transcript", data.get("bot_data", {}).get("transcripts", [])
yield "metadata", bot_meta

也就是说:

  • mp4_url 取自响应顶层的 mp4 字段,URL 限时有效,文档与 Schema 描述都强调应在拿到后尽快下载;
  • transcript 取自 bot_data.transcripts,是含说话人识别与时间戳的列表;
  • metadata 则是 bot_data.bot 内嵌的会议与机器人元数据(其中包含用于计费的 duration_seconds 字段);
  • duration_seconds > 0 时,本 Block 会按实际录制秒数 ×(0.69/3600)美元 上报 provider_cost,把"长会议欠费"的问题修正掉——详见下文成本模型小节。

适用场景

  • 会议摘要:拉取转写稿交给 LLM 生成会议纪要与行动项;
  • 录制归档:及时下载并归档会议录像用于留档或回看;
  • 数据分析:基于会议元数据统计参会情况与会议时长。

Baas Bot Leave Meeting:中途让机器人离场

"Remove a bot from an ongoing meeting"。当需要提前停止录制时(例如会议进入敏感的非录制环节),调用本 Block 让机器人优雅退场,随后录制数据即可被 Fetch 取回。

输入参数

输入 说明 类型 是否必填
bot_id 要从会议中移除的机器人 UUID str

输出

输出 说明 类型
error 操作失败时的错误信息 str
left 机器人是否成功离场 bool

底层实现

bots.py 中,本 Block 把 bot_id 直接交给 API 客户端的 leave_meeting 方法;而 baas/_api.py 显示该方法是向 /bots/{uuid} 发送 DELETE 请求,HTTP 200 / 204 即视为离场成功并输出 left=True。也就是说,只要服务端接受了删除/退场请求,left 即为 True

适用场景

  • 提前终止:会议转入不录制的私下讨论时立刻停止录制;
  • 按时长切片:只录下会议指定时段的内容;
  • 故障恢复:录制出现异常时先 Leave 再重新 Join 一个新机器人。

Baas Bot Delete Recording:不可逆地删除会议录制数据

"Permanently delete a meeting's recorded data"。会议数据使用完毕后,用本 Block 将某个 bot_id 对应的全部录制文件与转写稿彻底删除。删除不可逆。

输入参数

输入 说明 类型 是否必填
bot_id 要删除数据的机器人 UUID str

输出

输出 说明 类型
error 操作失败时的错误信息 str
deleted 数据是否删除成功 bool

底层实现

bots.py_api.py:删除操作对应 POST /bots/{uuid}/delete_data,仅当响应状态码为 200deleted=True

适用场景

  • 隐私合规:按数据保留策略或用户"被遗忘权"请求删除录制;
  • 存储成本治理:定期清理旧录制以控制存储费用;
  • 后处理清理:完成摘要/归档后立刻销毁原始音视频与转写,降低数据泄露面。

端到端工作流:从"自动入会录制"到"取数分析"再到"安全清理"

四个 Block 单独看是原子能力,组合起来就是一条完整的"会议机器人自动化"流水线。下面是一张建议的 Agent 编排方式(所有连线通过变量名传递):

  1. Join(Baas Bot Join Meeting):传入 meeting_urlbot_name;如会议是预定事件,可设置 reserved=True 让机器人提前 4 分钟入场,或用 start_time 精确指定入场时刻;
  2. 等待/通知:利用 webhook_url 接收"会议结束、录制就绪"的事件;也可以在 Join 之后接等待节点,轮询 Fetch;
  3. Fetch(Baas Bot Fetch Meeting Data):用 Join 输出的 bot_id 取回 mp4_urltranscriptmetadata
  4. 消费(下游任意 AI Block):把 transcript 交给文本/LLM Block 做会议摘要与行动项提取,把 metadata 交给分析类 Block 做时长与参与度统计;
  5. Delete(Baas Bot Delete Recording):分析归档完成后,用同一个 bot_id 删除原始数据,满足隐私与存储治理要求。

这一流程同时覆盖了官方文档为四类 Block 标注的主要 use case(自动录制、会议纪要、合规留档、数据清理),是 bots.md 描述的核心产品意图在 Agent 层面的落地。

底层 API 客户端:HTTP 端点与未暴露的扩展能力

所有 Baas Bots Block 的请求都收敛到同一个客户端 MeetingBaasAPIbaas/_api.py),基址为 https://api.meetingbaas.com,统一携带 x-meeting-baas-api-key 请求头,使用 SDK 提供的 Requests 异步客户端发送请求。已知端点汇总如下:

方法 HTTP 调用 对应 Block / 用途
join_meeting POST /bots Join Meeting Block;可携带 recording_mode(默认 speaker_view 演讲者视图)、streamingdeduplication_keyzoom_sdk_id/pwd 等扩展参数
leave_meeting DELETE /bots/{uuid} Leave Meeting Block;200/204 判定成功
get_meeting_data GET /bots/meeting_data Fetch Meeting Data Block;query 参数 bot_idinclude_transcripts
delete_data POST /bots/{uuid}/delete_data Delete Recording Block;200 判定成功
retranscribe POST /bots/retranscribe 未封装为独立 Block(202 表示异步受理):对已录制音频重新转写
get_screenshots GET /bots/{uuid}/screenshots 未封装:取回会议期间捕获的截图
list_bots_with_metadata GET /bots/bots_with_metadata 未封装:按 limit/offset/sort_by/sort_order/filter_by 分页罗列机器人及其元数据

从源码结构看,客户端层的能力明显多于 UI 层 Block——retranscribeget_screenshotslist_bots_with_metadata 这三个方法(_api.py)目前停留在客户端层面,尚未暴露成画布上的可视化 Block。如果你的场景需要"批量管理多个录制机器人"或"对某个机器人重新转写",这些接口为后续二次封装预留了可能性。

成本模型:30 信用额预付 + 按时长结算的混合计费

会议录制是外部付费服务,AutoGPT Platform 为 Baas Bots 设计了混合成本模型,其规则写在 bots.py 的注释与装饰器中:

  • Join Meeting Block:标注 @cost(BlockCost(cost_type=RUN, cost_amount=30)),即每次部署机器人预付 30 信用额的固定费用,用于覆盖中短会议的录制成本;
  • Fetch Meeting Data Block:采用 COST_USD(美元计费型)成本注解,其真实费用在运行时按会议的 duration_seconds 动态结算,不再存在"长会议少扣费"的问题;
  • 费率基准:代码注释的公开费率为 0.69 美元/小时,换算为每秒 0.69 / 3600 美元后乘以实际录制秒数,作为 provider_cost 上报;
  • 服务商基础成本_config.py 中另有每次执行 5 信用额(RUN)的服务商级基础成本。

这一结算行为被单元测试 baas/bots_cost_test.py 严格验证,测试断言覆盖了四种典型情况:

录制时长(duration_seconds) 期望 provider_cost 说明
3600(1 小时) 0.69 美元 恰好一整小时
1800(30 分钟) 0.345 美元 半小时
0 不产生费用 没有录制则不上报
缺失该字段 不产生费用 元数据异常时安全跳过

测试同时验证了无论时长如何,mp4_urltranscriptmetadata 三个输出都会照常产出,成本上报失败不会阻断取数流程(bots_cost_test.py)。这意味着在编排长会议任务时,可以把 Fetch 块的执行视作真正的"按量计费"入口。

小结

Baas Bots 用四个职责单一、参数可配置、成本透明的 Block,把"让 AI 替人参加会议并完成录制转写"这一复杂外部集成,压缩成了 AutoGPT Platform 画布上可以自由编排的节点。实践中建议按"Join 入会 → webhook/轮询等待 → Fetch 取数 → 分析归档 → Delete 清理"的顺序使用,并注意 mp4_url 的限时性与 bot_id 沿线的正确传递;如需对计费行为做更深验证,可直接阅读并运行 bots_cost_test.py,从测试角度确认 $0.69/小时费率与时长结算的正确性。

登录后查看全文
热门项目推荐
相关项目推荐