Listen to Events
React to conversation and avatar activity in your app.
Basic pattern
import { Experience } from '@liforma/client';
const experience = await Experience.startSession({
experienceId: 'exp_T0I7ACMQLBMPG6K'
});
experience.on('message', (evt) => {
// ExperienceEventEnvelope<data: ConversationMessage>
console.log(evt.data.role, evt.data.text, evt.data.status);
});
experience.on('activityChange', (evt) => {
// evt.data: 'idle' | 'listening' | 'thinking' | 'speaking'
console.log('activity:', evt.data);
});
const player = await experience.attach({
container: '#avatar',
onPlayerStatusChange: (status) => console.log('Player status', status)
});
player.on('close', ({ reason }) => {
console.log('Player closed', reason);
}); Common use cases
| Goal | API |
|---|---|
| Show transcript / chat log | message (check status === 'final') |
| Mic / speaker indicator | activityChange (envelope .data: 'idle' | 'listening' | 'speaking' | 'thinking') |
| Partial live captions | userTranscript |
| Sync UI with speech | characterSpeechStarted / characterSpeechEnded |
| Player embed lifecycle | attach({ onPlayerStatusChange }) |
| Handle user closing the player | player.on('close') or component onClose |
Full payload shapes: Events reference.