Interaction Types
- Echo interactions
- Response interactions
- Interrupt interactions
- Override conversation context interactions
- Sensitivity interactions
Observable Events
- Utterance Events
- Tool Call Events
- Perception Tool Call Events
- Perception Analysis Events
- Replica Started/Stopped Speaking
- User Started/Stopped Speaking
Event Ordering and Turn Tracking
All events broadcasted by Tavus include two fields for ordering and grouping:-
seq(integer) — A globally monotonic sequence number. Every event gets the next value in the sequence, so a higherseqalways means the event was sent later. Use this to reconcile events that may arrive out of order over the data channel. -
turn_idx(integer, optional) — The conversation turn index. This value increments each time aconversation.respondinteraction is received, and groups all events that belong to the same conversational turn. Use it to correlate related events — for example, an utterance, its tool calls, and the replica speaking state changes that all stem from the same user input. This field is present on conversation-related events (utterances, tool calls, speaking state changes, perception events, etc.) and omitted on events that are not tied to a specific turn.
Call Client Example
The interactions protocol uses a WebRTC data channel for communication. In Tavus’s case, this is powered by Daily, which makes setting up the call client quick and simple.- Daily JS
- Daily Python
- Daily React
Here’s an example of using DailyJS to create a call client in JavaScript:
The Daily
app-message event is used to send and receive events and interactions between your server and CVI.
