Skip to navigation

Conversation Text

Facilitates real-time communication by relaying spoken statements from both the user and the agent.

Voice Agent

The ConversationText message is a JSON message that will be sent as a user interacts with the agent.

Purpose

The ConversationText message facilitates real-time communication by relaying spoken statements from both the user and the assistant. This ensures that the conversation can be dynamically displayed on the client side, enhancing transparency and providing a clear, synchronized view of the interaction as it unfolds.

Example Payload

The server will send a ConversationText message every time the agent hears the user say something, and every time the agent speaks something. These can be used on the client side to display the conversation messages as they happen in real-time.

JSON
{
"type": "ConversationText",
"role": "", // The speaker of this statement, either "user" or "assistant"
"conversational_behavior": "", // What kind of utterance this is
"content": "" // The statement that was spoken
}

conversational_behavior

Every ConversationText message carries a conversational_behavior field annotating what kind of utterance it represents.

ValueMeaning
defaultA standard turn.
backchannelA short acknowledgement produced while the user held the floor.
presence_checkA prompt produced after extended silence.
fillerA line covering a wait, either on a function call or on an InjectAgentMessage sent with is_dynamic.

Only Think Live produces the values other than default. While it is off, every message is reported as default, so a client that ignores the field behaves exactly as it did before the field existed.

Backchannels, presence checks, and filler are conversational scaffolding rather than substance. Most clients render them differently from a default turn, or suppress them entirely, to keep transcripts and UI readable.

Multilingual Fields (Flux Multilingual)

When the listen.provider.model is set to flux-general-multi, user-role ConversationText messages include two additional fields surfaced from the STT TurnInfo response:

FieldTypeDescription
languages_hintedstring array (BCP-47)The language hints that were active at the time of the turn.
languagesstring array (BCP-47)Languages detected in the user’s speech, sorted by word count (descending).

Example

{
"type": "ConversationText",
"role": "user",
"content": "Hello, how are you amigo?",
"languages_hinted": [
"en",
"es",
"de"
],
"languages": [
"en",
"es"
]
}

These fields allow your client to adapt downstream behavior — for example, selecting the correct TTS voice or LLM prompt language based on what the user actually spoke. For full details on language hints and detection, see Flux Multilingual & Language Prompting.