Errors
加入失败时以 AvatarGoError reject:
import { AvatarGoError } from "@avatargo/sdk";
try {
await client.streamToVideoElement("avatar");
} catch (e) {
if (e instanceof AvatarGoError) console.log(e.code, e.status, e.message);
}code 是稳定的——按它分支处理;message 是给人看的,可能会变。
监听器(client.on(…))抛出异常时,不会影响同一事件的其他监听器,也不会影响该事件所说的工具调用;错误会写到控制台。
code | status | 含义 | 怎么处理 |
|---|---|---|---|
unauthorized | 401 | session token 缺失、格式不对或已过期(token 有效期一小时)。 | 从你的服务器拿一个新 token。 |
not_found | 404 | 没有这通会话。 | 新建一通。 |
session_ended | 410 | 会话已经结束。 | 新建一通——已结束的会话不能再加入。(会话还在进行时,用它的 token 再加入会回到这通会话。) |
quota_exceeded | 402 | 你账户的余额不够正在进行的所有通话再加上这一通各维持一分钟(用户加入时会再检查一次;会话已失败)。 | 在控制台充值或打开自动充值,然后新建一通会话。 |
concurrency_limit | 429 | 你套餐的同时通话数已用满;会话已失败。 | 等一通通话结束,或升级套餐,然后新建一通会话。 |
forbidden | 403 | 你的账户因付款问题被暂停;会话已失败。 | 联系客服。 |
connection_failed | 0 | 无法加入房间。 | 告诉用户,提供重试。 |
microphone_unavailable | 0 | 已加入房间,但麦克风打不开:用户拒绝了权限,或者没有麦克风。SDK 已经重新离开房间。 | 告诉用户,提供用 { microphone: false } 新建会话,或重试。 |
session_ended | 0 | 这个 client 的会话已经结束(调用过 stopStreaming() 或 endSession(),或它自己结束了),而一个 client 只对应一通会话。 | 用新的 session token 创建新的 client。 |
internal_error | 500 | AvatarGo 内部出错。 | 新建一通会话重试。 |
talk()、addContext() 和 sendUserMessage() 会以下列错误 reject,status 都是 0:
code | 含义 | 怎么处理 |
|---|---|---|
not_streaming | 不在会话中:streamToVideoElement resolve 之前,或会话结束之后。 | 先加入。 |
client_controls_disabled | 会话创建时没有设 sessionOptions.clientControls: true,或它是 Avatar only 会话。 | 在你的服务器上打开它,或改从服务器发送(POST /v1/sessions/{id}/talk、/context)。 |
invalid_request | text 为空或太长。 | 发送 1–4,000 个字符(talk)、1–8,000 个(addContext)或 1–2,000 个(sendUserMessage)。 |
session_not_live | 角色还没准备好(它在数字人出现前一刻才加入)。 | 等 video_play_started,或稍后重试。 |
rate_limited | 这通会话在最近一分钟里 talk(或 addContext、sendUserMessage)超过 20 次,包括你的服务器发的。 | 等一等;message 会说要等多久。 |
不认识的错误码按 internal_error 处理。创建会话时的拒绝——没有容量(concurrency_limit)、余额不足(quota_exceeded)、
数字人还没准备好、某个模型不可用、角色没有发布(character_not_published)——由 POST /v1/auth/session-token 返回给你的服务器,
还没到页面;见 API 参考。用户加入时会再判断一次套餐和余额,因为从拿到 token 到现在它们可能变了:上面表格里的
quota_exceeded、concurrency_limit 和 forbidden 就来自这里。