Answer call
Answer an incoming call. You must issue this command before executing subsequent commands on an incoming call.
To answer with an AI assistant, include assistant.id and any per-call overrides in the assistant object. Telnyx attempts to warm up the assistant before answering the call, then starts the assistant automatically when the call is answered. Do not also send ai_assistant_start for this flow. The HTTP success response can arrive before the call is answered; use the call.answered webhook to track the answer. If warm-up fails, Telnyx falls back to starting the assistant after answering.
When assistant.id is supplied, obtain the conversation ID from data.payload.conversation_id in the call.conversation.created webhook and correlate it using data.payload.call_control_id. The answer HTTP response does not include conversation_id. The created event is emitted during assistant startup and does not indicate that the assistant is ready to speak.
Set the assistant voice with assistant.voice_settings.voice and speech-to-text settings with assistant.transcription. You can reuse one stored assistant with different per-call settings. Warm-up prepares assistant configuration and dependencies; it does not wait for the greeting audio to be ready or guarantee zero silence after answer. A plain answer followed by ai_assistant_start performs assistant startup after the call has already been answered.
Expected Webhooks:
call.answeredcall.conversation.createdwhen the requested assistant conversation is createdcall.holdandcall.unholdif the call is held/unheldcall.deepfake_detection.resultifdeepfake_detectionwas enabledcall.deepfake_detection.errorifdeepfake_detectionwas enabled and an error occurredstreaming.started,streaming.stoppedorstreaming.failedifstream_urlwas set
When the record parameter is set to record-from-answer, the response will include a recording_id field.
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.calls.actions.answer('call_control_id');
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.calls.actions.answer(
call_control_id="call_control_id",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Calls.Actions.Answer(
context.TODO(),
"call_control_id",
telnyx.CallActionAnswerParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.calls.actions.ActionAnswerParams;
import com.telnyx.sdk.models.calls.actions.ActionAnswerResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
ActionAnswerResponse response = client.calls().actions().answer("call_control_id");
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.calls.actions.answer("call_control_id")
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Calls\StreamBidirectionalCodec;
use Telnyx\Calls\StreamBidirectionalMode;
use Telnyx\Calls\StreamBidirectionalTargetLegs;
use Telnyx\Calls\StreamCodec;
use Telnyx\Calls\Actions\GoogleTranscriptionLanguage;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->calls->actions->answer(
'call_control_id',
assistant: [
'id' => 'asst_123',
'dynamicVariables' => [
'customer_name' => 'John', 'account_id' => 'ACC-12345'
],
'externalLlm' => [
'authenticationMethod' => 'token',
'baseURL' => 'base_url',
'certificateRef' => 'certificate_ref',
'forwardMetadata' => true,
'llmAPIKeyRef' => 'llm_api_key_ref',
'model' => 'model',
'tokenRetrievalURL' => 'token_retrieval_url',
],
'fallbackConfig' => [
'externalLlm' => [
'authenticationMethod' => 'token',
'baseURL' => 'base_url',
'certificateRef' => 'certificate_ref',
'forwardMetadata' => true,
'llmAPIKeyRef' => 'llm_api_key_ref',
'model' => 'model',
'tokenRetrievalURL' => 'token_retrieval_url',
],
'llmAPIKeyRef' => 'llm_api_key_ref',
'model' => 'model',
],
'greeting' => 'Hi, I\'m your assistant. How can I help?',
'instructions' => 'You are a friendly voice assistant.',
'llmAPIKeyRef' => 'my_llm_api_key',
'mcpServers' => [['foo' => 'bar']],
'model' => 'gpt-4o',
'name' => 'name',
'observabilitySettings' => ['foo' => 'bar'],
'openaiAPIKeyRef' => 'my_openai_api_key',
'tools' => [
['hangup' => ['description' => 'description'], 'type' => 'hangup']
],
],
billingGroupID: 'f5586561-8ff0-4291-a0ac-84fe544797bd',
clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',
commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',
conversationRelayConfig: [
'url' => 'wss://example.com/conversation-relay',
'customParameters' => ['customer_id' => 'bar'],
'dtmfDetection' => true,
'greeting' => 'Hi! Ask me anything!',
'interruptible' => 'speech',
'interruptibleGreeting' => 'dtmf',
'interruptionSettings' => [
'enable' => true,
'interruptible' => 'speech',
'interruptibleGreeting' => 'speech',
'welcomeGreetingInterruptible' => 'speech',
],
'language' => 'en-US',
'languages' => [
[
'language' => 'en-US',
'speechModel' => 'nova-3',
'transcriptionEngine' => 'Deepgram',
'transcriptionEngineConfig' => ['transcription_model' => 'bar'],
'transcriptionProvider' => 'Deepgram',
'ttsProvider' => 'telnyx',
'voice' => 'Telnyx.Ultra.alloy',
'voiceSettings' => [
'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'
],
],
],
'provider' => 'elevenlabs',
'structuredProvider' => ['voice_id' => 'bar', 'model_id' => 'bar'],
'transcriptionEngine' => 'Google',
'transcriptionEngineConfig' => [
'transcription_model' => 'bar',
'interim_results' => 'bar',
'keywords_boosting' => 'bar',
],
'ttsProvider' => 'telnyx',
'voice' => 'Telnyx.KokoroTTS.af',
'voiceSettings' => ['type' => 'telnyx', 'voiceSpeed' => 1],
],
customHeaders: [
['name' => 'head_1', 'value' => 'val_1'],
['name' => 'head_2', 'value' => 'val_2'],
],
deepfakeDetection: ['enabled' => true, 'rtpTimeout' => 30, 'timeout' => 15],
preferredCodecs: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264',
record: 'record-from-answer',
recordChannels: 'single',
recordCustomFileName: 'my_recording_file_name',
recordFormat: 'wav',
recordMaxLength: 1000,
recordTimeoutSecs: 100,
recordTrack: 'outbound',
recordTrim: 'trim-silence',
sendSilenceWhenIdle: true,
sipHeaders: [['name' => 'User-to-User', 'value' => 'value']],
soundModifications: [
'octaves' => 0.1, 'pitch' => 0.8, 'semitone' => -2, 'track' => 'both'
],
streamBidirectionalCodec: StreamBidirectionalCodec::G722,
streamBidirectionalMode: StreamBidirectionalMode::RTP,
streamBidirectionalTargetLegs: StreamBidirectionalTargetLegs::BOTH,
streamCodec: StreamCodec::PCMA,
streamTrack: 'both_tracks',
streamURL: 'wss://www.example.com/websocket',
transcription: true,
transcriptionConfig: [
'clientState' => 'aGF2ZSBhIG5pY2UgZGF5ID1d',
'commandID' => '891510ac-f3e4-11e8-af5b-de00688a4901',
'transcriptionEngine' => 'Google',
'transcriptionEngineConfig' => [
'enableSpeakerDiarization' => true,
'hints' => ['string'],
'interimResults' => true,
'language' => GoogleTranscriptionLanguage::EN,
'maxSpeakerCount' => 4,
'minSpeakerCount' => 4,
'model' => 'latest_long',
'profanityFilter' => true,
'speechContext' => [['boost' => 1, 'phrases' => ['string']]],
'transcriptionEngine' => 'Google',
'useEnhanced' => true,
],
'transcriptionTracks' => 'both',
],
webhookRetriesPolicies: [
'call.hangup' => ['retriesMs' => [1000, 2000, 5000]]
],
webhookURL: 'https://www.example.com/server-b/',
webhookURLMethod: 'POST',
webhookURLs: [
'call.hangup' => 'https://www.example.com/webhooks/hangup',
'call.bridge' => 'https://www.example.com/webhooks/bridge',
],
webhookURLsMethod: 'POST',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx calls:actions answer \
--api-key 'My API Key' \
--call-control-id call_control_idcurl --request POST \
--url https://api.telnyx.com/v2/calls/{call_control_id}/actions/answer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"assistant": {
"id": "asst_123"
},
"client_state": "aGF2ZSBhIG5pY2UgZGF5ID1d",
"command_id": "891510ac-f3e4-11e8-af5b-de00688a4901",
"webhook_url": "https://www.example.com/server-b/",
"webhook_url_method": "POST",
"send_silence_when_idle": true,
"deepfake_detection": {
"enabled": true,
"timeout": 15,
"rtp_timeout": 30
}
}
'Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Unique identifier and token for controlling the call
Body
Answer call request
AI Assistant configuration and per-call overrides. All fields except id are optional. Omitted assistant fields use the stored configuration. Supplied voice_settings and transcription objects replace their stored objects rather than merging individual settings; include every setting you want to retain. dynamic_variables are merged, with request values taking precedence.
Show child attributes
Show child attributes
Starts a Conversation Relay session automatically when the answered/dialed call is answered. This embedded shape is supported on answer and dial. It uses public field names (url, dtmf_detection, greeting, voice, language, etc.) and maps them to the underlying Conversation Relay action. client_state, tts_language, and transcription_language inside this object are ignored; use the parent command's client_state and command_id fields instead.
Show child attributes
Show child attributes
{ "url": "wss://example.com/conversation-relay", "dtmf_detection": true, "greeting": "Hi! Ask me anything!", "voice": "Telnyx.KokoroTTS.af", "tts_provider": "telnyx", "voice_settings": { "type": "telnyx" }, "language": "en-US", "languages": [ { "language": "en-US", "voice": "Telnyx.Ultra.alloy", "tts_provider": "telnyx", "transcription_engine": "Deepgram", "transcription_engine_config": { "transcription_model": "deepgram/nova-3" } } ], "interruptible": "speech", "interruptible_greeting": "dtmf", "custom_parameters": { "customer_id": "12345" } }
Use this field to set the Billing Group ID for the call. Must be a valid and existing Billing Group ID.
"f5586561-8ff0-4291-a0ac-84fe544797bd"
Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string.
"aGF2ZSBhIG5pY2UgZGF5ID1d"
Use this field to avoid duplicate commands. Telnyx will ignore any command with the same command_id for the same call_control_id.
"891510ac-f3e4-11e8-af5b-de00688a4901"
Custom headers to be added to the SIP INVITE response.
Show child attributes
Show child attributes
[ { "name": "head_1", "value": "val_1" }, { "name": "head_2", "value": "val_2" } ]
The list of comma-separated codecs in a preferred order for the forked media to be received.
G722,PCMU,PCMA,G729,OPUS,VP8,H264 "G722,PCMU,PCMA,G729,OPUS,VP8,H264"
SIP headers to be added to the SIP INVITE response. Currently only User-to-User header is supported.
Show child attributes
Show child attributes
[ { "name": "User-to-User", "value": "value" } ]
Use this field to modify sound effects, for example adjust the pitch.
Show child attributes
Show child attributes
{ "pitch": 0.8, "semitone": -2, "octaves": 0.1, "track": "both" }
The destination WebSocket address where the stream is going to be delivered.
"wss://www.example.com/websocket"
Specifies which track should be streamed.
inbound_track, outbound_track, both_tracks "both_tracks"
Specifies the codec to be used for the streamed audio. When set to 'default' or when transcoding is not possible, the codec from the call will be used.
PCMU, PCMA, G722, OPUS, AMR-WB, L16, default "PCMA"
Configures method of bidirectional streaming (mp3, rtp).
mp3, rtp "rtp"
Indicates codec for bidirectional streaming RTP payloads. Used only with stream_bidirectional_mode=rtp. Case sensitive.
PCMU, PCMA, G722, OPUS, AMR-WB, L16 "G722"
Specifies which call legs should receive the bidirectional stream audio.
both, self, opposite "both"
Generate silence RTP packets when no transmission available.
true
Use this field to override the URL for which Telnyx will send subsequent webhooks to for this call.
"https://www.example.com/server-b/"
HTTP request type used for webhook_url.
POST, GET "GET"
Enable standalone call transcription upon call answer. The default value is false. Configure this feature with transcription_config. To configure speech recognition for an AI assistant, use assistant.transcription instead.
true
Show child attributes
Show child attributes
{ "transcription_engine": "Google", "transcription_engine_config": { "transcription_engine": "Google", "language": "en" }, "client_state": "aGF2ZSBhIG5pY2UgZGF5ID1d", "command_id": "891510ac-f3e4-11e8-af5b-de00688a4901" }
Start recording automatically after an event. Disabled by default.
record-from-answer "record-from-answer"
Defines which channel should be recorded ('single' or 'dual') when record is specified.
single, dual "single"
Defines the format of the recording ('wav' or 'mp3') when record is specified.
wav, mp3 "wav"
Defines the maximum length for the recording in seconds when record is specified. The minimum value is 0. The maximum value is 43200. The default value is 0 (infinite).
1000
The number of seconds that Telnyx will wait for the recording to be stopped if silence is detected when record is specified. The timer only starts when the speech is detected. Please note that call transcription is used to detect silence and the related charge will be applied. The minimum value is 0. The default value is 0 (infinite).
100
The audio track to be recorded. Can be either both, inbound or outbound. If only single track is specified (inbound, outbound), channels configuration is ignored and it will be recorded as mono (single channel).
both, inbound, outbound "outbound"
When set to trim-silence, silence will be removed from the beginning and end of the recording.
trim-silence "trim-silence"
The custom recording file name to be used instead of the default call_leg_id. Telnyx will still add a Unix timestamp suffix.
1 - 40"my_recording_file_name"
A map of event types to arrays of webhook URLs. When an event of the specified type occurs, the webhook URLs associated with that event type will be called instead of webhook_url. Events not mapped here will use the default webhook_url.
Show child attributes
Show child attributes
{ "call.hangup": ["https://www.example.com/webhooks/hangup"], "call.bridge": ["https://www.example.com/webhooks/bridge"] }
HTTP request method to invoke webhook_urls.
POST, GET "POST"
A map of event types to retry policies. Each retry policy contains an array of retries_ms specifying the delays between retry attempts in milliseconds. Maximum 5 retries, total delay cannot exceed 60 seconds.
Show child attributes
Show child attributes
{ "call.hangup": { "retries_ms": [1000, 2000, 5000] } }
Enables deepfake detection on the call. When enabled, audio from the remote party is streamed to a detection service that analyzes whether the voice is AI-generated. Results are delivered via the call.deepfake_detection.result webhook.
Show child attributes
Show child attributes
Response
Successful response upon making a call control command that includes recording_id.
Show child attributes
Show child attributes
{ "result": "ok", "recording_id": "d7e9c1d4-8b2a-4b8f-b3a7-9a671c9e9b0a" }
Was this page helpful?
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
const response = await client.calls.actions.answer('call_control_id');
console.log(response.data);import os
from telnyx import Telnyx
client = Telnyx(
api_key=os.environ.get("TELNYX_API_KEY"), # This is the default and can be omitted
)
response = client.calls.actions.answer(
call_control_id="call_control_id",
)
print(response.data)
package main
import (
"context"
"fmt"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
func main() {
client := telnyx.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Calls.Actions.Answer(
context.TODO(),
"call_control_id",
telnyx.CallActionAnswerParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
}
package com.telnyx.sdk.example;
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
import com.telnyx.sdk.models.calls.actions.ActionAnswerParams;
import com.telnyx.sdk.models.calls.actions.ActionAnswerResponse;
public final class Main {
private Main() {}
public static void main(String[] args) {
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
ActionAnswerResponse response = client.calls().actions().answer("call_control_id");
}
}require "telnyx"
telnyx = Telnyx::Client.new(api_key: "My API Key")
response = telnyx.calls.actions.answer("call_control_id")
puts(response)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Telnyx\Client;
use Telnyx\Calls\StreamBidirectionalCodec;
use Telnyx\Calls\StreamBidirectionalMode;
use Telnyx\Calls\StreamBidirectionalTargetLegs;
use Telnyx\Calls\StreamCodec;
use Telnyx\Calls\Actions\GoogleTranscriptionLanguage;
use Telnyx\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('TELNYX_API_KEY') ?: 'My API Key');
try {
$response = $client->calls->actions->answer(
'call_control_id',
assistant: [
'id' => 'asst_123',
'dynamicVariables' => [
'customer_name' => 'John', 'account_id' => 'ACC-12345'
],
'externalLlm' => [
'authenticationMethod' => 'token',
'baseURL' => 'base_url',
'certificateRef' => 'certificate_ref',
'forwardMetadata' => true,
'llmAPIKeyRef' => 'llm_api_key_ref',
'model' => 'model',
'tokenRetrievalURL' => 'token_retrieval_url',
],
'fallbackConfig' => [
'externalLlm' => [
'authenticationMethod' => 'token',
'baseURL' => 'base_url',
'certificateRef' => 'certificate_ref',
'forwardMetadata' => true,
'llmAPIKeyRef' => 'llm_api_key_ref',
'model' => 'model',
'tokenRetrievalURL' => 'token_retrieval_url',
],
'llmAPIKeyRef' => 'llm_api_key_ref',
'model' => 'model',
],
'greeting' => 'Hi, I\'m your assistant. How can I help?',
'instructions' => 'You are a friendly voice assistant.',
'llmAPIKeyRef' => 'my_llm_api_key',
'mcpServers' => [['foo' => 'bar']],
'model' => 'gpt-4o',
'name' => 'name',
'observabilitySettings' => ['foo' => 'bar'],
'openaiAPIKeyRef' => 'my_openai_api_key',
'tools' => [
['hangup' => ['description' => 'description'], 'type' => 'hangup']
],
],
billingGroupID: 'f5586561-8ff0-4291-a0ac-84fe544797bd',
clientState: 'aGF2ZSBhIG5pY2UgZGF5ID1d',
commandID: '891510ac-f3e4-11e8-af5b-de00688a4901',
conversationRelayConfig: [
'url' => 'wss://example.com/conversation-relay',
'customParameters' => ['customer_id' => 'bar'],
'dtmfDetection' => true,
'greeting' => 'Hi! Ask me anything!',
'interruptible' => 'speech',
'interruptibleGreeting' => 'dtmf',
'interruptionSettings' => [
'enable' => true,
'interruptible' => 'speech',
'interruptibleGreeting' => 'speech',
'welcomeGreetingInterruptible' => 'speech',
],
'language' => 'en-US',
'languages' => [
[
'language' => 'en-US',
'speechModel' => 'nova-3',
'transcriptionEngine' => 'Deepgram',
'transcriptionEngineConfig' => ['transcription_model' => 'bar'],
'transcriptionProvider' => 'Deepgram',
'ttsProvider' => 'telnyx',
'voice' => 'Telnyx.Ultra.alloy',
'voiceSettings' => [
'type' => 'elevenlabs', 'apiKeyRef' => 'my_elevenlabs_api_key'
],
],
],
'provider' => 'elevenlabs',
'structuredProvider' => ['voice_id' => 'bar', 'model_id' => 'bar'],
'transcriptionEngine' => 'Google',
'transcriptionEngineConfig' => [
'transcription_model' => 'bar',
'interim_results' => 'bar',
'keywords_boosting' => 'bar',
],
'ttsProvider' => 'telnyx',
'voice' => 'Telnyx.KokoroTTS.af',
'voiceSettings' => ['type' => 'telnyx', 'voiceSpeed' => 1],
],
customHeaders: [
['name' => 'head_1', 'value' => 'val_1'],
['name' => 'head_2', 'value' => 'val_2'],
],
deepfakeDetection: ['enabled' => true, 'rtpTimeout' => 30, 'timeout' => 15],
preferredCodecs: 'G722,PCMU,PCMA,G729,OPUS,VP8,H264',
record: 'record-from-answer',
recordChannels: 'single',
recordCustomFileName: 'my_recording_file_name',
recordFormat: 'wav',
recordMaxLength: 1000,
recordTimeoutSecs: 100,
recordTrack: 'outbound',
recordTrim: 'trim-silence',
sendSilenceWhenIdle: true,
sipHeaders: [['name' => 'User-to-User', 'value' => 'value']],
soundModifications: [
'octaves' => 0.1, 'pitch' => 0.8, 'semitone' => -2, 'track' => 'both'
],
streamBidirectionalCodec: StreamBidirectionalCodec::G722,
streamBidirectionalMode: StreamBidirectionalMode::RTP,
streamBidirectionalTargetLegs: StreamBidirectionalTargetLegs::BOTH,
streamCodec: StreamCodec::PCMA,
streamTrack: 'both_tracks',
streamURL: 'wss://www.example.com/websocket',
transcription: true,
transcriptionConfig: [
'clientState' => 'aGF2ZSBhIG5pY2UgZGF5ID1d',
'commandID' => '891510ac-f3e4-11e8-af5b-de00688a4901',
'transcriptionEngine' => 'Google',
'transcriptionEngineConfig' => [
'enableSpeakerDiarization' => true,
'hints' => ['string'],
'interimResults' => true,
'language' => GoogleTranscriptionLanguage::EN,
'maxSpeakerCount' => 4,
'minSpeakerCount' => 4,
'model' => 'latest_long',
'profanityFilter' => true,
'speechContext' => [['boost' => 1, 'phrases' => ['string']]],
'transcriptionEngine' => 'Google',
'useEnhanced' => true,
],
'transcriptionTracks' => 'both',
],
webhookRetriesPolicies: [
'call.hangup' => ['retriesMs' => [1000, 2000, 5000]]
],
webhookURL: 'https://www.example.com/server-b/',
webhookURLMethod: 'POST',
webhookURLs: [
'call.hangup' => 'https://www.example.com/webhooks/hangup',
'call.bridge' => 'https://www.example.com/webhooks/bridge',
],
webhookURLsMethod: 'POST',
);
var_dump($response);
} catch (APIException $e) {
echo $e->getMessage();
}telnyx calls:actions answer \
--api-key 'My API Key' \
--call-control-id call_control_idcurl --request POST \
--url https://api.telnyx.com/v2/calls/{call_control_id}/actions/answer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"assistant": {
"id": "asst_123"
},
"client_state": "aGF2ZSBhIG5pY2UgZGF5ID1d",
"command_id": "891510ac-f3e4-11e8-af5b-de00688a4901",
"webhook_url": "https://www.example.com/server-b/",
"webhook_url_method": "POST",
"send_silence_when_idle": true,
"deepfake_detection": {
"enabled": true,
"timeout": 15,
"rtp_timeout": 30
}
}
'