You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Meet Media API v2beta connectActiveConference返回500 UNKNOWN求助

Google Meet Media API v2beta ConnectActiveConference 持续返回500 UNKNOWN错误

我正在将Google Meet Media API(v2beta开发预览版)集成到Node.js语音代理中,实现程序化加入Meet会议,但调用SpacesService.ConnectActiveConference时始终返回REST 500 UNKNOWN错误,所有测试环境均可复现。

已完成的验证工作

  • 通过**域范围委托(Domain-Wide Delegation)**授权了SDK要求的全部6个权限范围,通过oauth2.googleapis.com/tokeninfo验证签发的token,确认所有权限范围存在且aud字段正确。
  • 当会议无参会人员时,接口正确返回NO_ACTIVE_CONFERENCE(HTTP 400 FAILED_PRECONDITION),证明鉴权和权限范围校验通过。
  • 被模拟用户未通过浏览器/移动端加入会议(否则会触发INCOMPATIBLE_DEVICE错误,该问题已解决)。
  • SDP Offer已与官方TypeScript参考客户端对齐:3个recvonly音频收发器、4个数据通道(session-control、media-stats、media-entries、participants)均设置为{ordered: true},BUNDLE: 0 1 2 3,Opus PT 111 + RED PT 63,包含标准头部扩展和rtcp-fb。
  • 已将SDP与同一会议空间下从chrome://webrtc-internals捕获的浏览器SDP对比,结构完全一致。

当前问题现象

直接调用REST接口(不使用SDK):

POST https://meet.googleapis.com/v2beta/spaces/<SPACE>:connectActiveConference

请求头:

Authorization: Bearer <token>
Content-Type: application/json

请求体:

{ "offer": "<SDP>" }

返回结果:

HTTP 500
{"error":{"code":500,"message":"Unknown Error.","status":"UNKNOWN"}}

错误响应速度极快(约500ms),远快于ICE/DTLS握手,说明拒绝发生在SDP验证或握手前配置阶段,而非网络问题。值得注意的是,500响应的元数据中没有trace_id,但接口返回NO_ACTIVE_CONFERENCE错误时会包含该字段,导致Google支持无法关联内部日志。

最小复现代码

import { JWT } from 'google-auth-library';

const jwt = new JWT({
  email: '<sa>',
  key: '<sa-private-key>',
  scopes: [
    'https://www.googleapis.com/auth/meetings.conference.media.audio.readonly',
    'https://www.googleapis.com/auth/meetings.conference.media.video.readonly',
    'https://www.googleapis.com/auth/meetings.conference.media.readonly',
    'https://www.googleapis.com/auth/meetings.space.created',
    'https://www.googleapis.com/auth/meetings.space.readonly',
    'https://www.googleapis.com/auth/meetings.space.settings',
  ],
  subject: '<workspace-user>',
});

await jwt.authorize();
const { token } = await jwt.getAccessToken();

const r = await fetch(
  `https://meet.googleapis.com/v2beta/spaces/<SPACE>:connectActiveConference`,
  { 
    method: 'POST',
    headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ offer: '<sdp-matching-reference-client>' }) 
  }
);

console.log(r.status);  // 500

已尝试的解决方案

  • 使用werift v0.23(纯JS WebRTC库)——仍返回500
  • 使用@roamhq/wrtc v0.10(原生libwebrtc绑定)——仍返回500
  • 尝试多个Meet会议空间(多次使用meet.new创建)
  • 同时使用@google-apps/meet SDK v0.7.2和直接REST调用——REST返回的错误更清晰,SDK会误导性返回gRPC PERMISSION_DENIED(同一条件下REST返回NO_ACTIVE_CONFERENCE或500 UNKNOWN)
  • 更换网络环境(住宅宽带;将尝试从公网IP VPS发起请求)
  • 开启/关闭Meet中的“帮我记笔记”功能
  • 尝试多个Chrome浏览器和移动端Meet参会人员

问题咨询

有没有人成功集成过v2beta connectActiveConference接口?如果有,解决500错误的关键步骤是什么?除以下已完成的配置外,是否存在未公开的配置步骤:

  1. 项目已加入Workspace开发者预览计划
  2. 服务账号(SA)已通过DWD配置全部6个权限范围
  3. 已启用Workspace管理员的Meet Media API策略
  4. SDP结构与官方TypeScript参考客户端一致
  5. 被模拟用户未通过浏览器/移动端加入会议

或者这是v2beta开发预览版中的已知bug?

内容的提问来源于stack exchange,提问作者Reliance Fund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 21:09:51