Reference
createClient(sessionToken, options?)
返回一个对应一通会话的 AvatarGoClient。在调用 streamToVideoElement 之前,不会有任何网络请求。
| 选项 | 类型 | 默认值 | |
|---|---|---|---|
baseUrl | string | https://api.avatargo.ai | API 地址。末尾的斜杠会被忽略。 |
timezone | string | 浏览器的时区 | 终端用户的时区,IANA 名称,比如 "Asia/Shanghai"。角色会被告知那里的今天日期;通话跨过那里的午夜时,会被告知新的日期。你的服务器创建会话时设置的时区(sessionOptions.timezone)优先于这里。 |
client.streamToVideoElement(target, options?) → Promise<void>
加入会话并显示数字人。target 是一个 <video> 元素或它的 id。数字人的画面放进这个元素;它的声音通过
SDK 创建的一个音频元素播放。加入成功(并且麦克风已打开)时 resolve,connection_established 也在同一时刻触发。
画面稍后才到——video_play_started 告诉你是什么时候。
| 选项 | 类型 | 默认值 | |
|---|---|---|---|
microphone | boolean | true | 发送用户的麦克风声音。角色会听;用 Avatar only 或想静音加入时传 false。 |
poster | boolean | true | 通话接通期间,在元素里显示数字人的脸:用来渲染数字人的那张图,模糊处理后设为 <video> 的 poster,视频开始播放时变清晰。冷启动可能要半分钟,用户会立刻看到这张脸,而不是一个空框。传 false 则不动这个元素;元素已有 poster 时也不动。图片来自 GET /v1/engine/session/face,用 session token 获取。 |
waitingPrompt | boolean 或 object | true | 通话在等空闲的渲染器时,在画面上告诉用户服务正忙——见 Waiting for a renderer。传一个写着你自己文字的对象可替换其中任意几句,传 false 则根据 start_waiting 自己画。 |
endingNotice | boolean 或 object | true | 通话的最后几秒,在画面上方倒计时到结束——见 The call’s last seconds。传一个写着你自己文字的对象,或传 false 根据 call_ending 自己画。 |
在角色会话里,第一次加入同时会启动对话(先是角色,再是数字人)——没用过的 session token 不花钱。
如果角色设置了 greeting,数字人上线后会说出来。
会话无法加入时,以 AvatarGoError reject。如果是进入房间之后失败的(connection_failed,或麦克风打不开时的
microphone_unavailable),SDK 会再离开房间,让会话在服务器上结束,而不是占着资源;这个 reject 就是全部的回答——
session_ended 不会再触发。找不到这个 id 的 <video> 元素时,抛出普通的 Error。
一个 client 只对应一通会话:会话一旦结束(你调用了 stopStreaming() 或 endSession(),或它自己结束了),再调用这个方法会以
session_ended reject——请用新的 session token 创建新的 client。
client.endSession() → Promise<void>
彻底结束会话:通知 AvatarGo,同时像 stopStreaming() 一样离开(触发 session_ended)。适合用在挂断按钮上:
会话在这一刻就结束,不用等系统发现用户已离开;还在排队等它的渲染器也会被取消。结束后不能再加入。
它不等 AvatarGo 的回复:连不上 AvatarGo 时,client 照样离开,会话按 stopStreaming() 之后的方式结束。
「服务正忙」提示里的「稍后再打」和最长等待到点时用的就是它。在 Avatar only 会话里(由你的服务器发送音频),你的服务器也会随之断开。
document.getElementById("hang-up").onclick = () => client.endSession();client.muteInputAudio() / client.unmuteInputAudio() → Promise<void>
停止和恢复发送麦克风声音。数字人照常说话;静音期间听不到用户。
client.stopStreaming() → Promise<void>
离开会话。用户离开后,服务器会结束会话;在那之前,用同一个 session token 再加入会回到这通会话——所以页面卸载后重新挂载
(React 的 StrictMode 会这样做)时,通话还在。触发 session_ended。要立刻彻底结束会话,用 endSession()。
在 streamToVideoElement 还在加入时调用(冷启动可能要半分钟),会取消这次加入:client 不会进入房间、不会打开麦克风,
触发 session_ended,不触发 connection_established,挂起的 streamToVideoElement 会 resolve。服务器发现没人来,
大约 30 秒内在它那一侧结束会话。
client.sessionId — string | null
会话的 id(se_…),在 streamToVideoElement 被允许进入会话后设置——和你的服务器拿到的是同一个 id,可用于你的日志或
GET /v1/sessions/{id}。
client.on(event, listener) / client.off(event, listener) → client
添加或移除监听器;两者都返回 client,可以链式调用。见 Events。
client.registerToolCallHandler(toolName, handler) → () => void
处理角色的某个客户端工具;返回一个函数,调用它就不再处理。见 Client tools。
client.sendUserMessage(text) → Promise<void>
用打字和角色对话:text 是用户这一轮说的话,等同于用户说出来。见 Typing to the character。
client.talk(text) → Promise<void>
让角色一字不差地说出 text。默认关闭,需要你的服务器打开;见 Talk and add context。
client.addContext(text) → Promise<void>
告诉角色用户在你的页面里正在做什么,不需要它回答。默认关闭,需要你的服务器打开;见 Talk and add context。