For the complete documentation index, see llms.txt. This page is also available as Markdown.

事件参考

使用 `client.on(event, callback)` 订阅。返回值是一个取消订阅函数。

const unsub = client.on('botReady', () => {
  console.log('机器人已准备就绪');
});

// 之后
unsub();
// 或者
client.off('botReady', handler);

连接事件

connect

当 WebRTC/WebSocket 传输连接时触发。机器人可能还没有准备好 —— 发送消息前请等待 botReady

client.on('connect', () => {
  console.log('传输已连接');
});

botReady

当角色确认已准备好接收消息时触发。这是开始交互的正确信号。

client.on('botReady', () => {
  client.sendUserTextMessage('你好!');
});

disconnect

会话结束时触发。接收一个 DisconnectReason 代码。

stateChange

每当 ConvaiClientState 的任何部分发生变化时触发。用于 UI 更新。

error

在连接错误或 bot-ready 超时时触发。


对话事件

conversationStart

当新的对话轮次开始时触发——无论是用户发送文本消息还是开始说话。

turnEnd

当机器人完成某轮发言时触发。

message

为每个新的 ChatMessage 添加到对话中时触发。完整历史也可在 client.chatMessages.

messagesChange

每当消息数组发生变化时触发(包括流式传输中的消息更新)。

userTranscriptionChange

当用户说话时反复触发,提供实时语音转文本。


发言事件

speakingChange

当机器人开始或停止说话时触发。

botOutput

为机器人输出的每个聚合块触发。包含已说出和未说出的文本。

botTtsStarted

当 TTS 引擎开始生成音频时触发。

botTtsStopped

当 TTS 引擎完成时触发。

botTtsText

随着机器人说话逐词触发,与 TTS 音频同步。


麦克风事件

userMuteStarted

当服务器静音用户麦克风时触发(例如,机器人开始说话以防止回声时)。

userMuteStopped

当服务器取消静音用户麦克风时触发。


Blendshape / lipsync 事件

这些需要 enableLipsync: true 在配置中。

blendshapes

为每个传入的 blendshape 块触发(默认 10 帧)。请使用 client.blendshapeQueue 而不是直接处理原始块。

blendshapeStatsReceived

当服务器发送轮次结束的 blendshape 统计信息时触发。表示此轮不会再有更多帧。


动作事件

需要 actionConfig 在配置中。

actionResponse

每个机器人轮次结束后触发,包含机器人决定执行的动作。

完整指南请参见 Actions。


服务器响应事件

serverResponse

作为你发送到服务器的每条消息的确认而触发。

interactionCreated

在会话生命周期的早期触发——在 botReady ——当服务器分配唯一的 interaction ID 时触发。这是第一条同时携带 interactionId 是位于 characterSessionId的消息,因此是捕获用于分析、日志记录或会话恢复标识符的合适位置。

字段
类型
说明

interactionId

string

此交互的唯一标识符。用于分析或日志关联。

characterSessionId

string

角色会话标识符。与 client.characterSessionId 在连接后相同。

interactionCreated 每次 connect() 调用时触发一次。如果你重新连接,会发放新的 interactionId


会话事件

idleWarning

在服务器断开空闲会话之前触发。

llmNoResponse

当 LLM 明确选择不响应时触发(例如,输入不需要回复时)。


metrics

每轮结束后携带性能数据触发。


音频轨道(WebSocket 传输)

botAudioTrack

当机器人有新的音频轨道可用时触发(仅 WebSocket 传输)。附加到一个 <audio> 元素以播放。


事件速查

事件
负载

connect

传输已连接

botReady

机器人已确认就绪

disconnect

DisconnectReason

会话已结束

stateChange

ConvaiClientState

任何状态变更

error

错误

连接或超时错误

conversationStart

{ sessionId, userMessage, timestamp }

新轮次开始

turnEnd

{ sessionId, duration, timestamp }

机器人发言结束

message

ChatMessage

新消息

messagesChange

ChatMessage[]

历史已更新

userTranscriptionChange

string

实时 STT 更新

speakingChange

布尔值

机器人发言状态

botOutput

{ text, spoken, aggregatedBy }

聚合后的机器人块

botTtsStarted

TTS 开始

botTtsStopped

TTS 结束

botTtsText

{ text }

逐词 TTS

userMuteStarted

服务器已静音用户麦克风

userMuteStopped

服务器已取消静音用户麦克风

blendshapes

原始数据

Blendshape 块

blendshapeStatsReceived

统计信息

轮次结束统计

actionResponse

{ actions }

机器人动作决策

serverResponse

ServerResponse

服务器确认

interactionCreated

{ interactionId, characterSessionId }

已分配会话 ID

idleWarning

{ remainingSeconds }

空闲超时警告

llmNoResponse

LLM 选择不响应

metrics

数据

轮次性能数据

botAudioTrack

MediaStreamTrack

新的音频轨道(WS 传输)

最后更新于

这有帮助吗?