coze-js icon indicating copy to clipboard operation
coze-js copied to clipboard

Bug: Could not start media stream

Open JamesMonges opened this issue 1 month ago • 1 comments

在 coze-js-web 项目运行中使用 voice chat 功能,会报错 Could not start media stream

JamesMonges avatar Nov 09 '25 15:11 JamesMonges

正在帮您查询中,请稍等...

根据提供的信息,用户在使用 coze-js-web 项目的语音聊天功能时遇到 Could not start media stream 错误,这通常与媒体设备访问权限、初始化配置或环境限制相关。以下是具体分析和解决方案:

可能的原因与解决方案

1. 设备权限未授予

原因:浏览器未授予麦克风访问权限,导致无法启动媒体流。
解决方案

  • 检查权限:通过 RealtimeUtils.checkDevicePermission() 确保麦克风权限已获取。
    import { RealtimeUtils } from "@coze/realtime-api";
    
    // 检查麦克风权限
    const result = await RealtimeUtils.checkDevicePermission();
    if (!result.audio) {
      throw new Error("需要麦克风访问权限,请在浏览器设置中启用");
    }
    
  • 用户引导:若权限被拒绝,提示用户在浏览器设置中手动开启麦克风权限(路径:浏览器设置 > 隐私与安全 > 网站设置 > 麦克风)。

2. 初始化参数配置错误

原因RealtimeClient 初始化参数缺失或错误(如 accessTokenbotIdconnectorId 不正确)。
解决方案

  • 参数校验:确保以下参数正确配置:
    const client = new RealtimeClient({
      accessToken: "YOUR_ACCESS_TOKEN", // 个人/服务访问令牌
      botId: "YOUR_BOT_ID",             // 已发布的智能体 ID
      connectorId: "1024",              // 固定渠道 ID,无需修改
      allowPersonalAccessTokenInBrowser: true, // 开发环境允许浏览器使用 PAT
      debug: true,                      // 开启调试模式,输出详细日志
    });
    
  • 智能体发布:确保智能体已发布为 API 服务(参考 发布智能体为 API 服务)。

3. 浏览器环境限制

原因

  • 非安全环境(如 http:// 协议,仅 localhosthttps:// 支持媒体设备访问)。
  • 浏览器不支持 WebRTC 或媒体设备被占用。
    解决方案
  • 环境要求:在 localhosthttps:// 域名下运行项目(避免 http:// 非安全协议)。
  • 设备占用:关闭其他可能占用麦克风的应用(如 Zoom、微信等),重试语音功能。

4. SDK 版本或依赖问题

原因@coze/realtime-api 版本过低或依赖冲突。
解决方案

  • 更新 SDK:确保使用最新版本的 SDK:
    npm install @coze/realtime-api@latest @coze/api@latest
    
  • 依赖清理:删除 node_modulespackage-lock.json,重新安装依赖:
    rm -rf node_modules package-lock.json && npm install
    

5. 错误日志调试

原因:缺乏详细日志难以定位问题。
解决方案

  • 启用调试模式:初始化时设置 debug: true,查看浏览器控制台日志:
    const client = new RealtimeClient({
      // ...其他配置
      debug: true, // 输出 SDK 内部日志
    });
    
  • 捕获错误事件:监听 client.error 事件,获取具体错误信息:
    client.on("client.error", (error) => {
      console.error("SDK 错误:", error); // 输出错误详情
    });
    

参考文档

总结步骤

  1. 确保麦克风权限已授予,并处理权限拒绝场景。
  2. 校验 accessTokenbotId 等参数是否正确配置。
  3. https://localhost 环境中运行项目。
  4. 更新 SDK 至最新版本,并开启调试模式排查日志。

若问题仍存在,请提供浏览器控制台的详细错误日志(特别是 [RealtimeClient] 前缀的日志),以便进一步定位问题。> 正在帮您查询中,请稍等...

根据提供的信息,用户在使用 coze-js-web 项目的语音聊天功能时遇到 Could not start media stream 错误,这通常与媒体设备访问权限、初始化配置或环境限制相关。以下是具体分析和解决方案:

可能的原因与解决方案

1. 设备权限未授予

原因:浏览器未授予麦克风访问权限,导致无法启动媒体流。
解决方案

  • 检查权限:通过 RealtimeUtils.checkDevicePermission() 确保麦克风权限已获取。
    import { RealtimeUtils } from "@coze/realtime-api";
    
    // 检查麦克风权限
    const result = await RealtimeUtils.checkDevicePermission();
    if (!result.audio) {
      throw new Error("需要麦克风访问权限,请在浏览器设置中启用");
    }
    
  • 用户引导:若权限被拒绝,提示用户在浏览器设置中手动开启麦克风权限(路径:浏览器设置 > 隐私与安全 > 网站设置 > 麦克风)。

2. 初始化参数配置错误

原因RealtimeClient 初始化参数缺失或错误(如 accessTokenbotIdconnectorId 不正确)。
解决方案

  • 参数校验:确保以下参数正确配置:
    const client = new RealtimeClient({
      accessToken: "YOUR_ACCESS_TOKEN", // 个人/服务访问令牌
      botId: "YOUR_BOT_ID",             // 已发布的智能体 ID
      connectorId: "1024",              // 固定渠道 ID,无需修改
      allowPersonalAccessTokenInBrowser: true, // 开发环境允许浏览器使用 PAT
      debug: true,                      // 开启调试模式,输出详细日志
    });
    
  • 智能体发布:确保智能体已发布为 API 服务(参考 发布智能体为 API 服务)。

3. 浏览器环境限制

原因

  • 非安全环境(如 http:// 协议,仅 localhosthttps:// 支持媒体设备访问)。
  • 浏览器不支持 WebRTC 或媒体设备被占用。
    解决方案
  • 环境要求:在 localhosthttps:// 域名下运行项目(避免 http:// 非安全协议)。
  • 设备占用:关闭其他可能占用麦克风的应用(如 Zoom、微信等),重试语音功能。

4. SDK 版本或依赖问题

原因@coze/realtime-api 版本过低或依赖冲突。
解决方案

  • 更新 SDK:确保使用最新版本的 SDK:
    npm install @coze/realtime-api@latest @coze/api@latest
    
  • 依赖清理:删除 node_modulespackage-lock.json,重新安装依赖:
    rm -rf node_modules package-lock.json && npm install
    

5. 错误日志调试

原因:缺乏详细日志难以定位问题。
解决方案

  • 启用调试模式:初始化时设置 debug: true,查看浏览器控制台日志:
    const client = new RealtimeClient({
      // ...其他配置
      debug: true, // 输出 SDK 内部日志
    });
    
  • 捕获错误事件:监听 client.error 事件,获取具体错误信息:
    client.on("client.error", (error) => {
      console.error("SDK 错误:", error); // 输出错误详情
    });
    

参考文档

总结步骤

  1. 确保麦克风权限已授予,并处理权限拒绝场景。
  2. 校验 accessTokenbotId 等参数是否正确配置。
  3. https://localhost 环境中运行项目。
  4. 更新 SDK 至最新版本,并开启调试模式排查日志。

若问题仍存在,请提供浏览器控制台的详细错误日志(特别是 [RealtimeClient] 前缀的日志),以便进一步定位问题。{"msg_type":"empty result","data":"empty result","from_module":null,"from_unit":null}{"msg_type":"generate_answer_finish","data":"","from_module":null,"from_unit":null}{"msg_type":"generate_answer_finish","data":"{"finish_reason":0,"FinData":""}","from_module":null,"from_unit":null}

coze-js-bot[bot] avatar Nov 09 '25 15:11 coze-js-bot[bot]