Event Callbacks
| Callback | Payload | Location | Description |
|---|---|---|---|
onFirstRendering | — | AvatarView | Fires once when the avatar renders its first frame. |
onConnectionState | ConnectionState | AvatarController | Fires when the WebSocket connection state changes. SDK mode only. |
onConversationState | ConversationState | AvatarController | Fires when the avatar’s playback state changes. |
onError | AvatarError | AvatarController | Fires when a runtime error occurs. |
ConnectionState
Indicates the current state of the WebSocket connection to the driving service.| State | Description |
|---|---|
disconnected | No active connection. |
connecting | Connection is being established. |
connected | Connection is active and ready. |
failed | Connection failed. On iOS and Android, includes code and message details. |
ConversationState
Tracks the avatar’s current playback state.| State | Description |
|---|---|
idle | No active conversation — avatar shows breathing animation. |
playing | Avatar is actively playing audio and animation. |
paused | Playback is paused. |
Usage Examples
- Web
- iOS
- Android
const controller = avatarView.controller;
// First frame rendered
avatarView.onFirstRendering = () => {
console.log('First frame rendered');
};
// Connection state (SDK mode only)
controller.onConnectionState = (state) => {
console.log('Connection:', state);
};
// Conversation state
controller.onConversationState = (state) => {
console.log('Conversation:', state);
};
// Error handling
controller.onError = (error) => {
console.error('Error:', error.code, error.message);
};
let controller = avatarView.controller
// First frame rendered
avatarView.onFirstRendering = {
print("First frame rendered")
}
// Connection state (SDK mode only)
controller.onConnectionState = { state in
switch state {
case .connected:
print("Connected")
case .failed(let code, let message):
print("Failed: \(code) \(message)")
default:
break
}
}
// Conversation state
controller.onConversationState = { state in
print("Conversation: \(state)")
}
// Error handling
controller.onError = { error in
print("Error: \(error.localizedDescription)")
}
val controller = avatarView.controller
// First frame rendered
avatarView.onFirstRendering = {
Log.d("Avatar", "First frame rendered")
}
// Connection state (SDK mode only)
controller?.onConnectionState = { state ->
when (state) {
is ConnectionState.Connected ->
Log.d("Avatar", "Connected")
is ConnectionState.Failed ->
Log.e("Avatar", "Failed: ${state.message}")
else -> {}
}
}
// Conversation state
controller?.onConversationState = { state ->
Log.d("Avatar", "Conversation: $state")
}
// Error handling
controller?.onError = { error ->
Log.e("Avatar", "Error: ${error.message}")
}

