Variables Master List
About
This page contains a list of every variable defined in the documentation. If you find a variable that's defined somewhere else, but not here, that's a bug!
null
absolute_codec_string
string Sets the absolute codec string to use (nothing will be appended).
Usage
<action application="set" data="absolute_codec_string=PCMU,GSM"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
accountcode
string Account code is mostly an arbitrary value that you can assign on a per leg basis. An important feature of accountcode is that if its value matches one of the CDR CSV templates defined in cdr_csv.conf.xml
then that CDR template will be used when generating a CSV CDR.
Usage
<action application="set" data="accountcode=custom"/>
acl_token
string If an incoming SIP INVITE message matches against a user ACL, this variable is set to the user ID and domain name.
alert_info
string Add an Alert-Info
Header like Snom and other Phones need for Ring or Ringtone information.
Usage
Load an external WAV ringtone on all calls:
<action application="export" data="alert_info=http://192.168.181.5/sounds/ctu.wav"/>
Use the External Ringer (Change the Ringtone for the alert-external, alert-group and alert-internal in Snom under Setup \> Preferences \> Alert-Info Ringer):
<action application="export" data="alert_info=http://www.notused.com;info=alert-external;x-line-id=0"/>
answer_epoch
integer
answer_stamp
string
answer_uepoch
integer
answermsec
integer
answersec
integer
answerusec
integer
api_after_bridge
string Execute an API command after bridge.
Usage
Paging to PA System via Portaudio (with chime before and after announcement):
<extension name="paging-with-chime">
<condition field="destination_number" expression="^7243$">
<action application="set" data="bridge_pre_execute_bleg_app=playback"/>
<action application="set" data="bridge_pre_execute_bleg_data=/tmp/2_tone_chime.wav"/>
<action application="set" data="api_after_bridge=luarun post-chime.lua"/>
<action application="bridge" data="portaudio/auto_answer"/>
</condition>
</extension>
post-chime.lua
:
api = freesswitch.API()
api:execute("pa", "play /tmp/2_tone_chime.wav")
api_hangup_hook
string Execute an API command on hangup.
See also:
- session_in_hangup_hook
- api_reporting_hook - like
api_hangup_hook
but after reporting state (both honor session_in_hangup_hook)
Usage
<action application="set" data="api_hangup_hook=jsrun cleanup.js ${uuid}"/>
api_on_answer
string Execute an api (not an application) when the called party answers. To set an application, use execute_on_answer.
Usage
<action application="export" data="nolocal:api_on_answer=uuid_broadcast ${uuid} beep.wav both"/>
<action application="bridge" data="{api_on_answer='uuid_broadcast ${uuid} beep.wav both'}sofia/gateway/provider/5551231234"/>
api_on_media
string Execute a FreeSWITCH API command when the far end sends media, i.e. ringing or 183/SDP.
The command is executed only on channels that are not already answered. Just use export
or export
with nolocal:
prefix to make sure it is executed when b-leg answers.
Usage
<action application="export" data="nolocal:execute_on_media=lua incrInUse.lua ${uuid}"/>
api_on_originate
string
api_on_post_originate
string Execute an api on the chosen newly originated channels unlike api_on_originate which runs on all candidates.
api_on_pre_answer
string
api_on_pre_originate
string
api_on_ring
string
api_on_sip_extra_headers
string
api_on_startup
string Execute an api (not an application) when the switch starts up.
Usage
<X-PRE-PROCESS cmd="set" data="api_on_startup=sofia recover"/>
api_on_tone_detect
string
asr_intercept_dtmf
string
auto_answer_destination
string In an inbound call, the remote side may send a SIP NOTIFY
message with the event type talk
, telling Sofia endpoint to answer the call. In this case, the variable auto_answer_destination
is set to the channel's destination_number, and the call is transferred to the extension auto_answer
within current dialplan and context.
auto_hunt
boolean Setting auto_hunt
to true
will alter the normal sequential processing of dialplan extensions. auto_hunt
will cause the dialplan to 'jump' to a specific extension name, not processing any other extension. The destination_number and extension name must be the same in order for this to work. The condition must still match, but the extension name is the operative element.
Usage
In conf/vars.xml
:
<X-PRE-PROCESS cmd="set" data="auto_hunt=true"/>
<extension name="do_xfer">
<condition field="destination_number" expression="^.*$">
<action application="set" data="auto_hunt=true"/>
<action application="transfer" data="333"/>
</condition>
</extension>
<extension name="333">
<condition field="destination_number" expression="^333$">
<action application="info"/>
</condition>
</extension>
base_dir
string
This defines the base directory for most other directory settings
billmsec
integer
billsec
integer
billusec
integer
bind_meta_key
dtmf digit Selects the meta key to use with the bind_meta_app dialplan application.
Usage
<action application="set" data="bind_meta_key=#"/>
bridge_answer_timeout
integer Timeout in seconds how long to tolerate a bridge that is in early media without being answered (can be set on either leg). Introduced in build 15057.
See also: Early Media
Usage
<action application="set" data="bridge_answer_timeout=20"/>
bridge_channel
string
bridge_early_media
boolean By default this is false. Set to true, this makes the bridge use the live audio from the b-leg as ringback to the a-leg. Setting bridge_early_media=true
means the early media will be buffered.
Consider setting this to true if:
- you are using a loopback channel to execute a bridge to an endpoint which sends back early media and the received early media's audio is degraded.
Note: The buffering resulting from setting bridge_early_media=true
brings with it a higher resource cost than bridge_early_media=false
, but may improve the sound quality of the early media. Set bridge_early_media
before the bridge, or in the dial string for the bridge.
- you are using multiple targets in originate or bridge (e.g.: originate \{globalVar=global\}[channelVar=channel1]sofia/gateway/GW1/123456|[channelVar=channel2]sofia/gateway/GW2/123456) where you need to receive network generated Call Progress Tones (e.g.: ringtones and network announcements). You can combine this with continue_on_fail so you can fine-tune fallback on specific release causes only.
bridge_epoch
integer
bridge_export_vars
string bridge_export_vars
lists variables to be exported to the other leg upon bridge.
bridge_filter_dtmf
boolean Setting this variable to true
will prevent DTMF digits received on this channel when bridged from being sent to the other channel.
Usage
In the dialplan:
<action application="set" data="bridge_filter_dtmf=true" />
Dialstring:
{bridge_filter_dtmf=true}sofia/default/blah@baz.com
bridge_generate_comfort_noise
string Generates comfort noise when bridged session is receiving discontinuous audio frames (silence suppression).
When greater than 0
, this variable is set to the divisor of the silence generating function. 400 or 1400 are common values set, but you may experiment with other choices to pick one that sounds best.
When true
, FreeSWITCH will pick a default comfort noise value.
When -1
, FreeSWITCH will transmit silence without comfort noise. (As of 2012-10-25)
Usage
Leg A wants a continuous stream of audio, but leg B is using silence suppression:
<action application="set" data="bridge_generate_comfort_noise=true"/>
<action application="bridge" data="sofia/user/1000"/>
Leg A uses silence suppression, but leg B wants a continuous stream of audio:
<action application="bridge" data="{bridge_generate_comfort_noise=true}sofia/user/1000"/>
bridge_hangup_cause
string This is set to the hangup cause of the last bridged B leg of the call. If you have continue_on_fail=true
and hangup_after_bridge=false
you can do checks on this to see what "really" happened to the call. You can for instance do execute_extension after bridge, do a condition check on ${bridge_hangup_cause}
to see if it contains MEDIA_TIMEOUT and then trigger a redial of the call or transfer to a cell phone. For a list of hangup causes, see Hangup Causes.
Usage
<action application="log" data="1 B-leg hangup cause: ${bridge_hangup_cause}"/>
bridge_pre_execute_aleg_app
string Command or api to be executed on the A leg before bridging the two channels. App arguments can be passed by setting bridge_pre_execute_aleg_data.
this is executed AFTER the call is setup but BEFORE the media (audio) is bridged
bridge_pre_execute_aleg_data
string Arguments to be used with bridge_pre_execute_aleg_app.
bridge_pre_execute_bleg_app
string Command or api to be executed on the B leg before bridging the two channels. Useful when originating a call from the event socket, CLI or XML-RPC.
It could for instance be used to do a HTTP GET with a script or mod_http to the IP address of a Snom phone to increase the ringer volume if you need to do a wakeup call.
Can also be used to bind a dtmf to an app on the b leg of a call so that it can survive a transfer.
Arguments can be passed to the app with bridge_pre_execute_bleg_data.
this is executed AFTER the call is setup but BEFORE the media (audio) is bridged.
Usage
<action application="set" data="bridge_pre_execute_bleg_app=bind_meta_app"/>
<action application="set" data="bridge_pre_execute_bleg_data=1 a s att_xfer::sofia/profile/destination"/>
bridge_pre_execute_bleg_data
string Arguments to be used with bridge_pre_execute_bleg_app.
Usage
<action application="set" data="bridge_pre_execute_bleg_app=bind_meta_app"/>
<action application="set" data="bridge_pre_execute_bleg_data=1 a s att_xfer::sofia/profile/destination"/>
bridge_stamp
string
bridge_terminate_key
dtmf digit Allows you to bind a key and the bridge will terminate if the DTMF matches.
You can set bridge_terminate_key
on either or both legs which will end the bridge, if it hangs up or not is decided by hangup_after_bridge=false
or what is next in your dialplan.
bridge_to
string
bridge_uepoch
integer
bridge_uuid
string
bypass_keep_codec
boolean By doing export bypass_keep_codec=true
to force re-invite with the same codec it was using previously.
bypass_media
boolean When set, the media (RTP) from the originating endpoint is sent directly to the destination endpoint and vice versa. The signaling (SIP) for both endpoints still goes through FreeSWITCH, but the media is point-to-point. See also: Bypass Media Overview
Usage
<action application="set" data="bypass_media=true"/>
bypass_media_after_bridge
boolean Same as bypass_media but will handle media for a call until it has reached the answered state (and has processed a few RTP frames.) At this point FreeSWITCH will use a ReInvite to take itself out of the media path. This helps reduce audio latency and take some load off FreeSWITCH. Especially useful for UACs behind Coned NAT as it gives RTP Auto-Adjust enough time to determine the correct ports to avoid one-way audio.
cache_dir
string
cache_speech_handles
string
call_clientcode
string This is used by SNOM phones. When FreeSWITCH receives a SIP INFO
message with x-clientcode
header, this variable is set to the value of that header.
call_timeout (deprecated)
integer Controls how long (in seconds) to ring the B leg of a call when using the bridge application. The timeout is set on the A leg, and applies to any bridges that happen in the channel.
If you need to set a timeout on a call that has no A leg, use originate_timeout.
If you need to set a timeout with enterprise bridging/originate, use originate_timeout.
If you need to set the timeout on a per-leg basis (i.e. a different timeout for each destination), use the leg_timeout variable.
Beware that if you are not using {
ignore_early_media=true}
, call_timeout
is no longer applicable as soon as early media signal is received.
Default Value: 60
Usage
<action application="set" data="call_timeout=20"/>
If a call timeout is to be specified against a group_call() list, use the following format:
<action application="bridge" data="{originate_timeout=24}${group_call(sales@$${domain})}"/>
See Also
bridge_answer_timeout - to set unanswered timeout that circumvents early media
leg_timeout - to set unanswered timeout on an individual call leg
originate_timeout - to set unanswered timeout that circumvents early media
callee_id_name
string
callee_id_number
string
caller_id_name
string readonly The caller id name set by the inbound call, not a real variable. Practically it is read only.
caller_id_number
string readonly The caller id phone number set by the inbound call, not a real variable. Practically it is read only. From sofia.c, the values used (in precedence) are the user parts from: P-Preferred-Identity
, P-Asserted-Identity
, Remote-Party-ID
, and the From
header.
campon
boolean Controls whether camping is enabled or not.
Default: false
Usage
<action application="set" data="campon=true"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
campon_announce_sound
string File to play back after the first bridge fails (e.g. to announce what key to press to skip to fallback extension).
Default: none
Usage
<action application="set" data="campon=true"/>
<action application="set" data="campon_stop_key=1"/>
<action application="set" data="campon_announce_sound=press_one_to_stop.wav"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
campon_fallback_context
string Optional context name where the call is transferred for fallback
campon_fallback_dialplan
string Optional dialplan name where the call is transferred for fallback
campon_fallback_exten
string Extention number where the call is transferred for fallback
campon_hold_music
string Optional hold music to play while camping instead of default hold_music.
Usage
<action application="set" data="campon=true"/>
<action application="set" data="campon_hold_music=/data/campmusic/RelaxingCampSounds.wav"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
campon_retries
integer Controls how many times the bridge will be retried before falling back.
Default: 100
Usage
<action application="set" data="campon=true"/>
<action application="set" data="campon_retries=13"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
campon_sleep
integer Controls how long to wait before starting a retry.
Default: 10
Usage
<action application="set" data="campon=true"/>
<action application="set" data="campon_sleep=30"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
campon_stop_key
dtmf digit DTMF digit that breaks the campon loop and skips directly to fallback extension
Default: none
Usage
<action application="set" data="campon=true"/>
<action application="set" data="campon_stop_key=1"/>
<action application="set" data="campon_announce_sound=press_one_to_stop.wav"/>
<action application="set" data="campon_fallback_exten=1000"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
campon_timeout
integer This variable controls how long to attempt each bridge before timing out. It works exactly like call_timeout but only applies to camping.
Default: 10
Usage
<action application="set" data="campon=true"/>
<action application="set" data="campon_timeout=20"/>
<action application="bridge" data="sofia/gateway/myprovider/5551231234"/>
cdr_csv_base
string
certs_dir
string
CHANNEL
string
channel_name
string
codec_string
string Sets the base codec string to use.
Usage
<action application="set" data="codec_string=PCMU,GSM"/>
conf_dir
string
conference_auto_outcall_announce
string File name of audio message to play to conference member joining conference via the conference_set_auto_outcall application. Because the conference would be originating an outbound call to a member this typically would be a greeting with an explanation that the recipient will be joining a conference call.
Usage
<action application="set" data="conference_auto_outcall_announce=sounds/soundfile.wav"/>
conference_auto_outcall_caller_id_name
string Caller ID name to use when dialing endpoints to join the conference via the conference_set_auto_outcall application.
Usage
<action application="set" data="conference_auto_outcall_caller_id_name=$${effective_caller_id_name}"/>
conference_auto_outcall_caller_id_number
string Caller ID number to use when dialing endpoints to join the conference via the conference_set_auto_outcall application.
Usage
<action application="set" data="conference_auto_outcall_caller_id_number=${effective_caller_id_number}"/>
conference_auto_outcall_flags
string Conference flags to set for members joining conference via the conference_set_auto_outcall application.
Usage
<action application="set" data="conference_auto_outcall_flags=mute"/>
conference_auto_outcall_maxwait
integer Maximum time in seconds that the channel that initiated the conference_set_auto_outcall will wait for members to join the conference.
Usage
<action application="set" data="conference_auto_outcall_maxwait=10"/>
conference_auto_outcall_prefix
string The value of conference_auto_outcall_prefix
is prepended to each of conference_set_auto_outcall values, of which there can be more than one.
Usage
<extension name="mad_boss_intercom">
<condition field="destination_number" expression="^0911$">
<action application="set" data="conference_auto_outcall_caller_id_name=Mad Boss1"/>
<action application="set" data="conference_auto_outcall_caller_id_number=0911"/>
<action application="set" data="conference_auto_outcall_timeout=60"/>
<action application="set" data="conference_auto_outcall_flags=mute"/>
<action application="set" data="conference_auto_outcall_prefix={sip_auto_answer=true,execute_on_answer='bind_meta_app 2 a s1 transfer::intercept:${uuid} inline'}"/>
<action application="set" data="sip_exclude_contact=${network_addr}"/>
<action application="conference_set_auto_outcall" data="${group_call(sales)}"/>
<action application="conference" data="madboss_intercom1@default+flags{endconf|deaf}"/>
</condition>
</extension>
conference_auto_outcall_profile
string Conference profile to use for members joining the conference via the conference_set_auto_outcall application.
Usage
<action application="set" data="conference_auto_outcall_profile=default"/>
conference_auto_outcall_timeout
integer Originate timeout to use when joining a member to a conference via conference_set_auto_outcall.
This variable controls how long the outbound call will ring. Thus, if you do not ignore early media it will likely never get a chance to increment.
Usage
<action application="set" data="conference_auto_outcall_timeout=60"/>
conference_controls
string Set this variable to specify which conference control set to use when transferring a caller into a conference. This allows you, for example, to have a control set for the conference moderator and another control set for regular conference members. The control set for the moderator could include the ability to mute or kick people, for example.
You must create the desired conference control set. Also, if this is not set then the default conference control set is used for the conference member.
Usage
<action application="set" data="conference_controls=moderator"/>
conference_enforce_security
boolean Allows the conference security to be overridden. This applies in two different scenarios, one for inbound and one for outbound. By default, conference security is always applied to inbound calls and is always skipped for outbound calls. This channel variable allows the behavior to be modified.
Usage
Inbound:
<action application="set" data="conference_enforce_security=false"/>
<action application="conference" data="3000"/>
Outbound:
originate {conference_enforce_security=true}sofia/internal/1001 &conference(3000)
conference_enter_sound
string When set, this channel variable will override the enter-sound param on conference profile for any conferences into which the call leg is transferred.
Usage
<action application="set" data="conference_enter_sound=silence_stream://10"/>
conference_exit_sound
string
Usage
<action application="set" data="conference_exit_sound=silence_stream://10"/>
conference_input_buffer_flush_msec
If the input buffer (audio from this member into the conference) builds up to longer than x milliseconds, then clear the buffer. Default is 500. Added in FreeSWITCH Enterprise v20.23.2
conference_last_matching_digits
dtmf digit readonly Contains the last matching digits that the user on this channel sent into the conference.
Usage
<action application="log" data="INFO Last digits sent by this user: ${conference_last_matching_digits}"/>
conference_member_id
string Contains the conference_member_id
value for any conference to which the channel may be connected.
conference_moderator
boolean Is true
if the channel is connected to a conference as a moderator.
conference_output_buffer_flush_msec
If the output buffer (audio from the conference to this member) builds up to longer than x milliseconds, then clear the buffer. Default is 500.
This will log Flushing output buffer (getting behind) mux_used=%d flush_len=%d
at DEBUG level when the limit is hit.
Added in FreeSWITCH Enterprise v20.23.2
conference_output_discard_low_energy
If the packet's energy level is less than this value and there are more than 2 packets waiting in the output buffer (audio from the conference to this member) then drop this packet. A few low energy packets must be sent first before any are dropped to avoid totally truncating silence. To discard the standard comfort noise in a conference, set this to 15 or higher. Default is 0 (don't discard low energy packets). Added in FreeSWITCH Enterprise v20.23.2
conference_recording
string Contains the file name of the conference recording for the conference to which the channel is connected.
conference_uuid
string Every instance of a conference has its own UUID. This channel variable stores the conference UUID for the most recent conference in which the channel was a member. It is set as soon as the channel enters the conference, and will show up in XML CDRs and uuid_dump calls, as well as any events that show channel variables.
continue_on_fail
string Controls what happens when the called party can not be reached (busy/offline). If true
the dialplan continues to be processed. If false
the dialplan will stop processing. Can contain the return messages that will continue on fail also.
Usage
<action application="set" data="continue_on_fail=true"/>
<action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,NO_ROUTE_DESTINATION"/>
With Q.850 cause codes:
<action application="set" data="continue_on_fail=3,17,18,27"/>
copy_xml_cdr
string Copies the other leg's XML CDR into this leg's CDR. For example, the A leg's CDR will contain a variable named b_leg_cdr
whose contents are the URL-encoded XML CDR data from the B leg. This variable must be set on the B leg, so use {copy_xml_cdr=true}
in the dialstring or use export
instead of set
.
Usage
<action application="bridge" data="{copy_xml_cdr=true}user/${dialed_extension}@${domain_name}"/>
core_uuid
string
created_time
string Contains the start time (in microseconds) of when the call was created.
In the event that a call is transferred, this will contain the time of when the entire call was created, not that specific transfer. If you need the transfer created time, see profile_created_time and variable_progress_time.
current_application
string
current_application_data
string
current_application_response
string
data
string
db_dir
string
default_language
string Controls the default language the Say Phrase engine will use when no language is explicitly specified in the API call. This permits you to easily support multiple languages by only changing a single variable at call time.
Usage
<action application="set" data="default_language=fr"/>
deny_refer_requests
string If this variable is set to true
on either leg of a bridged SIP call, and the other end sends a REFER
request, this will be denied by FreeSWITCH.
destination_number
string
See also Variables Master List (although this variable is also listed there without any descriptions).
detect_speech_result
string readonly The result of play_and_detect_speech.
dialed_domain
string
dialed_group
string
dialed_user
string
digits_dialed
string
Notes
Seems to be the DTMF buffer, but only seems to be set on hangup. At least it only shows up in CHANNEL_HANGUP
and CHANNEL_HANGUP_COMPLETE
, but then all the entered DTMF digits are there.
TODO So where is the buffer, and how to access it and to flush it? (The latter may be important for a long running IVR).
UPDATE: it's not the DTMF buffer...
direction
string It is used to determine if the particular leg of the call is inbound or outbound.
Usage
<condition field="${direction}" expression="^inbound$">
disable_app_log
boolean
disable_q850_reason
boolean When set to true, this disables sending of the Reason header, which includes the Q.850 reason code, in responses and BYEs. For a list of hangup causes and their Q.850 codes, see Hangup Causes. This is available as of revision 15850 committed 12/8/2009.
Usage
<action application="set" data="disable_q850_reason=true"/>
disable_radius_start
boolean
disable_radius_stop
boolean
disable_rtp_auto_adjust
string Disable rtp auto adjust if it is not behaving as you expected. It stops the switch from rewriting the RTP destination based on the source. When RTP Auto-Adjust is ON FreeSWITCH will change the destination RTP address to match the source of the incoming packets, this doesn't work if the other end is really wanting to send and receive on a different addr.
Usage
Add {disable_rtp_auto_adjust=true} in your dial string.
DISPLACE_HANGUP_ON_ERROR
boolean When set to true
this channel variable will cause the call to hangup if there is an error when trying to mod_commands#uuid_displace the call. The default is false
. The default behavior before 2013/03/21 was to hangup.
Usage
<action application="set" data="DISPLACE_HANGUP_ON_ERROR=true"/>
dl_cid_msg
string
dl_from_host
string
dl_from_user
string
dl_host
string
dl_user
string
domain_name
string
drop_dtmf
boolean Set this on an inbound channel before answer or on an outbound channel before the bridge/originate in order to prevent DTMF events from being sent to the channel.
Only tested with RFC2833, may also work for INFO / inband. See FS-4769 -Authenticate to see issue details Commit 60f7849cbe72.
TODO RFC 2833 is obsoleted by RFC 4733.
Usage
<action application="set" data="drop_dtmf=true"/>
<action application="answer"/>
<action application="export" data="nolocal:drop_dtmf=true"/>
<action application="bridge" data="sofia/internal/100@1.2.3.4"/>
<action application="bridge" data="{drop_dtmf=true}sofia/internal/100@1.2.3.4"/>
drop_dtmf_masking_digits
dtmf digit If drop_dtmf
is true
play specified tone for every tone received.
Usage
Each DTMF tone that is entered into the a-leg will be dropped and a "d" sent to the b-leg.
<action application="set" data="drop_dtmf=true"/>
<action application="set" data="drop_dtmf_masking_digits=d"/>
To drop and replace DTMF on the b-leg use:
<action application="export" data="nolocal:drop_dtmf=true"/>
<action application="export" data="nolocal:drop_dtmf_masking_digits=d"/>
drop_dtmf_masking_file
string If drop_dtmf
is true
, play specified file for every tone received.
Usage
Each DTMF tone that is entered into the a-leg will be dropped and the file dtmf_masking_tone
played to the b-leg.
<action application="export" data="drop_dtmf=true"/>
<action application="export" data="drop_dtmf_masking_file=/etc/freeswitch/Sounds/dtmf_masking_tone"/>
To drop and replace DTMF on the b-leg use
<action application="export" data="nolocal:drop_dtmf=true"/>
<action application="export" data="nolocal:drop_dtmf_masking_file=/etc/freeswitch/Sounds/dtmf_masking_tone" />
A, B, C, D tones
Make sure to expect (and handle) the DTMF tones A
, B
, C
, and D
; these are very rare nowadays but they are still possible to send (e.g., someone has an old device with the extra ABCD column). See DTMF for more.
dtmf_type
string For inband DTMF, start_dtmf must be used in the dialplan.
Usage
<action application="set" data="dtmf_type=info"/>
<action application="set" data="dtmf_type=rfc2833"/>
TODO RFC 2833 is obsoleted by RFC 4733.
<action application="set" data="dtmf_type=none"/>
dtmf_verbose
boolean Enables verbose logging of Spandsp DTMF detector. Default is false
. Set this variable prior to executing spandsp_start_dtmf.
Usage
<action application="set" data="dtmf_verbose=true"/>
<action application="spandsp_start_dtmf" />
duration
integer
easy_acctcode
string
easy_destnum
string
easy_dialstring
string
easy_group
string
easy_limit
string
eavesdrop_annnounce_macro
string
eavesdrop_announce_id
string
eavesdrop_group
string
eavesdrop_indicate_failed
string
eavesdrop_indicate_idle
string
eavesdrop_indicate_new
string
eavesdrop_require_group
string
effective_ani
string
effective_aniii
string
effective_caller_id_name
string Sets the effective callerid name. This is automatically exported to the B-leg; however, it is not valid in an origination string. In other words, set this before calling bridge, otherwise use origination_caller_id_name.
Snom 370/820
If you want to display LEG A's name (if available) as soon as LEG B (here the local Snom) rings, you have to set origination_caller_id_name
or effective_caller_id_name
as described. Otherwise, in LEG B's display, you will see LEG A's number during ringing and switching to LEG A's name after picking up the call by LEG B. To remove it set it to _undef_
.
Usage
<action application="set" data="effective_caller_id_name=Bob Smith"/>
effective_caller_id_number
string Sets the effective callerid number. This is automatically exported to the B-leg; however, it is not valid in an origination string. In other words, set this before calling bridge, otherwise use origination_caller_id_number.
Usage
<action application="set" data="effective_caller_id_number=9185551212"/>
effective_sip_cid_in_1xx
boolean Prevents FreeSWITCH when it receives 183 from leg-B to automatically insert RPID before sending 183 to leg-A.
Usage
<action application="set" data="sip_cid_in_1xx=false"/>
enable_file_write_buffering
string Enable file buffering when recording a file, defaults to true
if not set. Buffer size defaults to SWITCH_DEFAULT_FILE_BUFFER_LEN
but can be overridden by putting bytes size instead of true
(see below example). Mailing list discussion
Usage
<action application="set" data="enable_file_write_buffering=false"/>
<action application="set" data="enable_file_write_buffering=true"/>
<action application="set" data="enable_file_write_buffering=65535"/>
enable_heartbeat_events
boolean
end_epoch
integer
end_stamp
string
end_uepoch
integer
endpoint_disposition
string
ep_codec_prefer_sdp
string ep_codec_prefer_sdp
contains the "endpoint" codec string on the A leg. The order of preference is chosen by the A leg
ep_codec_string
string ep_codec_string
contains the "endpoint" codec string on the A leg. This codec list includes only the codecs that both the A leg and FreeSWITCH agree upon. This variable is set only when inbound-late-negotiation is enabled on the SIP profile.
When there is more than one codec in the list, the order of preference is chosen by FreeSWITCH, not by the A leg.
Usage
<action application="bridge" data="{absolute_codec_string=${ep_codec_string}}sofia/foo/bar@baz"/>
exec_after_bridge_app
string Execute an application command after the bridge has been terminated. To be used with exec_after_bridge_arg. By contrast, to execute when the bridge has been established use execute_on_answer.
Usage
<action application="set" data="exec_after_bridge_app=transfer"/>
<action application="set" data="exec_after_bridge_arg=2102"/>
exec_after_bridge_arg
string Argument passed to exec_after_bridge_app.
Usage
<action application="set" data="exec_after_bridge_app=transfer"/>
<action application="set" data="exec_after_bridge_arg=2102"/>
execute_on_answer
string Execute an application (not an api) when the called party answers. To set an api, use api_on_answer. execute_on_answer
will also allow for more control when dealing with no answer conditions in cases where you cannot ignore early media.
The command is executed only on channels that are not already answered. Just use export
or export
with nolocal:
prefix to make sure it is executed when b-leg answers.
In the second usage example below, we have originated an outbound call to a local extension, where we will wait 30 seconds while manually ignoring media. In this case we use set
and not export
.
Usage
<action application="export" data="nolocal:execute_on_answer=lua incrInUse.lua ${uuid}"/>
To wait 30 seconds for an answer while 'manually' ignoring early media:
originate {ignore_early_media=true}sofia/gateway/my_gateway/5551212 885551212
<extension name="exe_on_ans">
<condition field="destination_number" expression="^88(\d+)$">
<action application="set" data="execute_on_answer=transfer ANSWEREDCALL XML default"/>
<action application="log" data="INFO Waiting 30 seconds for $1 to answer..."/>
<action application="sleep" data="30000"/>
<action application="log" data="INFO Call to $1 was not answered, taking alternative action..."/>
<action application="transfer" data="UNANSWEREDCALL XML default"/>
</condition>
</extension>
execute_on_fax_detect
string
execute_on_fax_failure
string
execute_on_fax_result
string
execute_on_fax_success
string
execute_on_media
string Execute an application when the far end sends media, i.e. ringing or 183/SDP.
The command is executed only on channels that are not already answered. Just use export
or export
with nolocal:
prefix to make sure it is executed when b-leg answers.
In the second usage example below, we have originated an outbound call to a local extension, where we will wait 30 seconds without ignoring media. In this case we use set
and not export
.
Usage
<action application="export" data="nolocal:execute_on_media=lua incrInUse.lua ${uuid}"/>
To wait 30 seconds for an answer without ignoring early media:
originate sofia/gateway/my_gateway/5551212 885551212
<extension name="exe_on_ans">
<condition field="destination_number" expression="^88(\d+)$">
<action application="set" data="execute_on_media=transfer ANSWEREDCALL XML default"/>
<action application="log" data="INFO Waiting 30 seconds for $1 to answer..."/>
<action application="sleep" data="30000"/>
<action application="log" data="INFO Call to $1 was not answered, taking alternative action..."/>
<action application="transfer" data="UNANSWEREDCALL XML default"/>
</condition>
</extension>
execute_on_media_timeout
string Execute an application if the far end stops sending media and times out.
Usage
<action application="export" data="nolocal:execute_on_media_timeout=lua oops_timeout.lua ${uuid}"/>
<action application="set" data="execute_on_media_timeout=transfer HANDLE_MEDIA_TIMEOUT XML default"/>
execute_on_originate
string
Execute syntax: <app> <arg>
Asynchronous syntax: <app>::<arg>
Executes code on successful origination.
Successful origination means the remote server responds, NOT when the call is actually answered.
Usage
originate {ignore_early_media=true,execute_on_originate='cng_plc'}sofia/gateway/foo/123456789 9664
originate {ignore_early_media=true,execute_on_originate='my_app::my_arg'}sofia/gateway/foo/123456789 9664
execute_on_post_bridge
STRING
execute_on_post_originate
string
execute_on_pre_answer
string Execute an application (not an api) when the called party "preanswers" - that is, when some form of early media is coming or the far end sends a 180 Ringing.
The command is executed only on channels that are not already answered. Just use export
or export
with nolocal:
prefix to make sure it is executed when b-leg answers.
In the second usage example below, we have originated an outbound call to a local extension, where we will wait 30 seconds without ignoring media. In this case we use set
and not export
.
Usage
<action application="export" data="nolocal:execute_on_pre_answer=lua incrInUse.lua ${uuid}"/>
To wait 30 seconds for an answer without ignoring early media:
originate sofia/gateway/my_gw/5551212 885551212
<extension name="exe_on_preans">
<condition field="destination_number" expression="^88(\d+)$">
<action application="set" data="execute_on_pre_answer=transfer ANSWEREDCALL XML default"/>
<action application="log" data="INFO Waiting 30 seconds for $1 to answer..."/>
<action application="sleep" data="30000"/>
<action application="log" data="INFO Call to $1 was not answered, taking alternative action..."/>
<action application="transfer" data="UNANSWEREDCALL XML default"/>
</condition>
</extension>
execute_on_pre_bridge
This will execute after the call has been answered and media is being exchanged. Use this instead of execute_on_answer if for example, the REFER commands blocks for 10 seconds in your dialplan extension.
STRING
execute_on_pre_originate
string
execute_on_ring
string Execute a command when the called party rings.
Usage
<action application="set" data="nolocal:execute_on_ring=lua markring ${uuid}"/>
execute_on_sip_extra_headers
string Execute a command when SIP extra headers are detected in a SIP message.
execute_on_sip_reinvite
string Execute a command when SIP Reinvite.
execute_on_tone_detect
STRING
export_vars
string export_vars
lists variables to be exported to the other leg upon bridge. Unlike export, it only lists the variables to export without actually setting them.
This is useful to transfer information from a-leg (INVITE) to the future b-leg of REFER.
EXTEN
string
fail_on_single_reject
string This is useful when using the ,
AND operator in the data
field of a bridge. The AND operator notifies a list of destinations, bridging to the first destination that accepts the call. Typically if a destination in the list rejects the call, the bridge will continue to be attempted until either another destination accepts the call, or a timeout occurs. See below for an example of using fail_on_single_reject
with the |
OR operator.
This variable allows one to terminate the bridging attempt on a single rejection of the call. This means the bridge attempt would fail, and if continue_on_fail has not been set, the call is terminated. This variable would be set within a condition before a bridge application. When used in conjunction with the continue_on_fail
variable, one can perform operations such as rolling over a rejected caller to an answering machine application.
The default setting is false
, meaning a single rejection will not terminate the bridging attempt.
It can also be set to a list of failure causes to stop on, and can be negated to a list of causes not to stop on (i.e. stop on all other failure causes).
Usage
<action application="set" data="fail_on_single_reject=true"/>
<action application="bridge" data="sofia/$${profile}/$${kitchen}%$${domain},sofia/$${profile}/$${dining}%$${domain}"/>
<action application="javascript" data="answermachine.js"/>
<action application="set" data="fail_on_single_reject=USER_BUSY"/>
<action application="set" data="fail_on_single_reject=!NORMAL_CIRCUIT_CONGESTION"/>
To use a list:
<action application="set" data="fail_on_single_reject=^^:CALL_REJECTED:NORMAL_CLEARING:USER_BUSY"/>
For negated list:
<action application="set" data="fail_on_single_reject=!^^:ALLOTTED_TIMEOUT:NETWORK_OUT_OF_ORDER"/>
For use with the OR operator, consider the following example. Here the dialplan sends a call to multiple gateways simultaneously. In the case of GATEWAY_DOWN
or INVALID_GATEWAY
the bridge should not fail (i.e. negated fail_on_single_reject
) and the dialplan should continue (i.e. continue_on_fail
):
<action application="set" data="continue_on_fail=GATEWAY_DOWN,INVALID_GATEWAY"/>
<action application="set" data="fail_on_single_reject=!^^:GATEWAY_DOWN:INVALID_GATEWAY"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="bridge" data="sofia/gateway/gw1/$1|sofia/gateway/gw2/$1|sofia/gateway/gw3/$1"/>
failed_xml_cdr_prefix
string If you set that on the A leg and any and all failed B originates generate a full XML CDR report and set it as a variable, this includes during a forked dial.
So say you try to call sofia/profile/a@xxxxxxx,sofia/profile/b@xxxxxxx
.
And it fails completely, before you make the call you set failed_xml_cdr_prefix
to "bad_call".
Then you end up with ${bad_call_1}
and ${bad_call_2}
which are each a full XML report including all the vars etc.
Usage
<action application="set" data="failed_xml_cdr_prefix=failinggw" />
failure_causes
string Controls which failure causes will be considered as a failure to the bridge(s). This will change the values for which continue_on_fail will fail by default unless continue_on_fail
is set to true
.
Usage
<action application="set" data="failure_causes=USER_BUSY,NO_ANSWER"/>
With Q.850 cause codes:
<action application="set" data="failure_causes=487"/>
fax_bad_rows
string
fax_disable_v17
boolean fax_disable_v17
prevents the use of the V.17 (9,600bps to 14,400bps) FAX modem. This means FAXes will be limited to the use of V.29 (9,600bps and 7,200bps) and V.27ter (4,800bps). Some VoIP systems handle V.17 so poorly there are often good reasons to want to disable the use of this modem.
fax_document_total_pages
integer
fax_document_transferred_pages
integer
fax_ecm_requested
boolean
fax_ecm_used
boolean
fax_end_page
string
fax_filename
string
fax_force_caller
boolean
fax_header
string
fax_ident
string
fax_image_resolution
string
fax_image_size
string
fax_local_station_id
string
fax_prefix
string
fax_remote_station_id
string
fax_result_code
string
Result Code | Message |
---|---|
0 | OK |
2 | Timed out waiting for initial communication |
3 | Timed out waiting for the first message |
5 | The HDLC carrier did not stop in a timely manner |
6 | Failed to train with any of the compatible modems |
13 | Unexpected message received |
14 | Received bad response to DCS or training |
15 | Received a DCN from remote after sending a page |
17 | Received a DCN while waiting for a DIS |
20 | Received no response to DCS or TCF |
23 | Invalid ECM response received from transmitter |
31 | Timer T2 expired while waiting for fax page |
32 | Timer T2 expired while waiting for next fax page |
48 | Disconnected after permitted retries |
49 | The call dropped prematurely |
fax_result_text
string
fax_start_page
string
fax_success
boolean
fax_transfer_rate
string
fax_use_ecm
boolean
fax_v17_disabled
boolean
fax_verbose
boolean
fifo_announce
string If you invoke fifo
without providing an announce file as an argument, mod_fifo will fall back to the value of fifo_announce
.
fifo_bridged
boolean mod_fifo sets fifo_bridged
to true
when manually tracking a call.
fifo_caller_consumer_import
string Import list of variables from the caller to the consumer.
Usage
<action application="set" data="fifo_caller_consumer_import=var1,var2"/>
fifo_caller_exit_key
dtmf digit When the caller dials one of the digits you define in fifo_caller_exit_key
, they will exit the fifo.
fifo_chime_freq
integer The time to wait between playing each chime.
fifo_chime_list
string A ,
delimited list of files to broadcast while the customer is waiting for someone to answer.
fifo_consumer_caller_import
string Import list of variables from the consumer to the caller.
Usage
<action application="set" data="fifo_consumer_caller_import=var1,var2"/>
fifo_consumer_exit_key
dtmf digit When fifo_consumer_exit_key
is pressed, we hangup on the caller (unless we've put the caller on hold).
fifo_consumer_id
string If set, mod_fifo will set the fifo_serviced_by variable to this value when the consumer answers a call from the fifo.
fifo_consumer_wrapup_key
dtmf digit If this variable is set and the consumer is in wait
mode, mod_fifo will cause the consumer to reenter the fifo when they press fifo_consumer_wrapup_key
or the fifo_consumer_wrapup_time milliseconds timeout is met.
fifo_consumer_wrapup_sound
string Played at the end of a serviced caller when wrapup starts.
fifo_consumer_wrapup_time
string A timeout in milliseconds that, when reached, will cause the consumer to reenter the fifo.
fifo_hold_music
string The music played to the consumer when they place a caller on hold by pressing 0
. It falls back to fifo_music and then the default hold music if fifo_music
is not set.
fifo_manual_bridge
boolean readonly mod_fifo sets this variable to true
when a manually tracking a call.
fifo_member_wait
string If this variable is set to wait
, the consumer's leg will not hangup when the caller hangs up. This is the default behavior.
If set to nowait
, the consumer's leg will hangup when the caller hangs up.
Usage
<action application="set" data="result=${fifo_member(add MyQueueName {fifo_member_wait=nowait}user/1001@VoiceNetwork.ca )"/>
fifo_music
string
fifo_orbit_announce
string This file will be played to the caller before transferring the caller to fifo_orbit_exten.
fifo_orbit_context
string Sets the context for fifo_orbit_exten. Must be set prior to placing the caller in the queue.
Usage
<action application="set" data="fifo_orbit_context=MyContext"/>
fifo_orbit_exten
string
Syntax: exten:timeout
Set a destination extension and timeout, and it will cause FreeSWITCH to run the caller through the FIFO until the specified timeout, then the caller will get transferred to the destination extension. Can be set before launching the caller into the FIFO.
Usage
Before executing the fifo
application:
<action application="set" data="fifo_orbit_exten=MyFIFOVoicemail:60"/>
Now after 60 seconds of waiting in the FIFO, the caller will be transferred to MyFIFOVoicemail
.
<action application="fifo" data="MyFIFO in"/>
fifo_outbound_announce
string Play this to a member.
fifo_outbound_uuid
string Used by mod_fifo to track manual calls.
fifo_override_announce
string Play this announcement to the consumer.
fifo_pop_order
string A ,
delimited list of priorities to answered from most important to least important.
Usage
<action application="set" data="fifo_pop_order=1,2" />
fifo_position
integer readonly mod_fifo writes the caller's position to this variable.
fifo_priority
string
fifo_record_template
string If set, this is the file where the session will record to, expanded on the caller channel.
fifo_role
string For reporting purposes, i.e. in the CDRs, the variable will contain "consumer" or "caller" depending upon the call leg.
fifo_serviced_by
string
fifo_serviced_uuid
string
fifo_status
string The status of the consumer or caller. Usually WAITING
or TALKING
.
fifo_strategy
string
fifo_target
string
fifo_timestamp
string Contains the timestamp of when the caller was bridged to the consumer.
fire_asr_events
boolean If set, fire an event when speech is detected.
See Also
flow_billmsec
integer
flow_billsec
integer
flow_billusec
integer
force_transfer_context
string When handling transfer/REFER FreeSWITCH normally inherits the context from the original channel. This variable forces the context in which to handle the transfer/REFER.
Usage
<action application="bridge" data="{force_transfer_context=some_context}sofia/gateway/gw_name/12345"/>
force_transfer_dialplan
string When handling transfer/REFER FreeSWITCH normally inherits the diaplan from the original channel. This variable forces the dialplan in which to handle the transfer/REFER.
funny_stun
string
grammar_dir
string
group_confirm_cancel_timeout
integer If set, cancels leg_timeout after the call is answered. originate_timeout still remains active.
When using group confirm, a call passes through three phases:
- Call is ringing.
- Call is answered, waiting to be confirmed.
- Call is confirmed and bridged.
However, if you do
<action application="set" data="group_confirm_cancel_timeout=1"/>
then the timeout will only apply to phase 1. So, once phase 1 is crossed, leg_timeout
counter stops.
group_confirm_file
string This variable is used together with group_confirm_key
. In group_confirm_file
, you specify the wav file you want to play when the called party picks up the call. See answer confirmation for more examples.
Usage
<action application="set" data="group_confirm_file=/usr/local/freeswitch/sounds/take_call_question.wav" />
See Also
group_confirm_key — Specify a DTMF to bridge leg-A to leg-B
group_confirm_key
dtmf digit In the group_confirm_key
variable, you define the DTMF that the called party should send to FS to bridge the call. If a wrong DTMF or no DTMF is sent, the called won't be bridged and the wav file will be repeated.
Usage
<action application="set" data="group_confirm_key=1" />
See Also
group_confirm_file — Specify a sound file to play to leg-B to prompt to dial a confirmation key
group_context
string
boolean Controls what happens to a calling (A) party when in a bridge state, and the called (B) party hangs up. If true
the dialplan will stop processing, and the A leg will be terminated when the B leg terminates. If false
(default) the dialplan continues to be processed after the B leg terminates. This is checked after park_after_bridge and transfer_after_bridge.
The default value is false
Usage
<action application="set" data="hangup_after_bridge=true"/>
hangup_after_conference
boolean Controls what happens to a calling (A) party when in a conference and the conference ends (e.g. endconf flag set and moderator leaves). If true
(default) the dialplan will stop processing and the A leg will be terminated. If false
the dialplan continues to be processed after the end of conference.
Usage
<action application="set" data="hangup_after_conference=false"/>
<!-- all regular memebers who dial "3500" will continue to the echo action after the "endconf" member below leaves conference -->
<!-- note that "hangup_after_true" is depenent on "endconf", one members (or more) must have endconf flag -->
<!-- if two or more managers join, call, participants will be kicked after laster member with "endconf" flag leaves -->
<!-- When a person calls into "3500-admin" and leaves, the partipants who came in via "3500" will continue to thier own echo app -->
<extension name="cdquality_conferences">
<condition field="destination_number" expression="^(35\d{2})$">
<action application="answer"/>
<action application="set" data="hangup_after_conference=false"/>
<action application="conference" data="$1-${domain_name}@video-mcu-stereo"/>
<action application="set" data="echo_encode_video=true"/>
<action application="echo"/>
</condition>
</extension>
<extension name="conference manager">
<condition field="destination_number" expression="^(35\d{2})-admin$">
<action application="set" data="conference_member_flags=endconf"/>
<action application="conference" data="$1-${domain_name}@video-mcu-stereo"/>
</condition>
</extension>
hangup_cause
string This is set to the hangup cause of the A leg of the call (note that as such it doesn't make much sense before the end of the call). Often this will take the hangup cause from the B leg of the call, if there is one. For a list of hangup causes, see Hangup Causes.
Usage
<action application="log" data="1 A-leg hangup cause: ${hangup_cause}"/>
hangup_cause_q850
string This is set to the Q850 numeric code of the hangup cause of the A leg of the call (note that as such it doesn't make much sense before the end of the call). Often this will take the hangup cause from the B leg of the call, if there is one. For a list of hangup causes, see Hangup Causes.
Usage
<action application="log" data="1 A-leg hangup Q850 cause: ${hangup_cause_q850}"/>
has_t38
boolean
hold_hangup_xfer_exten
string Controls what happens to a calling (A) party when in a bridge state and the bridge ends while the called (B) party is on hold. If not set on leg B (ie. the default), then A leg is hung up. If it is set on leg B, then leg A is transferred to the given extension, as per transfer_after_bridge.
Usage
<action application="set" data="hold_hangup_xfer_exten=1000:XML:default"/>
hold_music
string Per-channel hold music. Supports all audio formats and audio streams. The hold_music
variable can also be set globally in vars.xml
.
Usage
<action application="set" data="hold_music=/sounds/holdmusic.wav" />
<action application="set" data="hold_music=silence" />
You can also use phrase:
to indicate to use a phrase instead of a specific file:
<action application="set" data="hold_music=phrase:my_hold_music" />
You can also set your hold_music
to the special value indicate_hold
instead of a music source and it will pass the hold signaling through to the far-end via the SDP:
<action application="set" data="hold_music=indicate_hold" />
For multi-tenant environment, if you want to have a separate MOH for the phone with hold button (like Polycom) that utilizes RE-INVITE with no media ip addr (0.0.0.0) for hold, you can override the hold-music values in the sip profile parameter similar to the following example:
<action application="bridge_export" data="hold_music=$${sounds_dir}/music/company-a.mp3"/>
holding_uuid
string
hostname
string This global variable is set dynamically by the FreeSWITCH core and is set to the host name of the server on which FreeSWITCH is running. You cannot override the value of this variable by setting it. However if you change the host name of the server the value of the variable will be updated.
htdocs_dir
string
id
string
ignore_display_updates
string Tells freeswitch not to send display UPDATEs to the leg of the call. (update_display)
Usage
From dialplan/default.xml
, to set on A-Leg:
<action application="set" data="ignore_display_updates=true"/>
To set on B-Leg:
<action application="bridge" data="{ignore_display_updates=true}sofia/gateway/provider/18005551212"/>
ignore_early_media
string Controls if the call returns on early media or not. Default is false
.
Usage
<action application="set" data="ignore_early_media=true"/>
You may also specify a value for ignore_early_media
in the argument to the bridge application, using the { }
syntax. (ignore_early_media
may not be specified on a per-leg basis, using the [ ]
syntax, as it specifically is a global variable to the originate session):
<action application="bridge" data="{ignore_early_media=true}sofia/test-int/1001@somebox,sofia/test-int/1000@somehost"/>
Setting the value to ring_ready
will work the same as ignore_early_media=true
but also send a SIP 180 to the inbound leg when the first SIP 183 is caught.
<action application="set" data="ignore_early_media=ring_ready"/>
import
string The import variable, when used before a bridge, imports the variables of the other channel on the actual channel. Implemented by mod_lcr.
Usage
<action application="set" data="import=this_is_a_variable_name"/>
inbound_dialplan
string
inherit_codec
boolean If late negotiation is on, and you set inherit_codec=true on the A leg, the negotiated codec of the B leg will be forced onto the A leg.
Usage
<action application="set" data="inherit_codec=true"/>
initial_callee_id_name
string Sets the callee id name during the 183. This allows the phone to see the name of the called party prior to the phone being answered.
Usage
An example of setting this to the caller id name of the number being dialed:
<action application="set" data="initial_callee_id_name='${user_data(${dialed_extension}@${domain_name} var effective_caller_id_name)}'"/>
instant_ringback
boolean When set, ringback will not wait for indication before sending ringback tone to calling party.
Usage
this may cause undesirable effects, like ringing for 3 seconds that turns into a busy signal.
<action application="set" data="instant_ringback=true"/>
intercept_unanswered_only
boolean If set to true
, the leg will only be intercepted if the channel is not answered.
Default: false
Usage
<action application="set" data="intercept_unanswered_only=true"/>
<action application="intercept" data="myUUID"/>
intercept_unbridged_only
boolean If set to true, the leg will only be mod_dptools: intercept if the channel is not bridged to anyone.
Default: false
Usage
<action application="set" data="intercept_unbridged_only=true"/>
<action application="intercept" data="myUUID"/>
ip_invite_params
string
is_outbound
boolean
ivr_menu_status
string ivr_menu_status
is a channel variable that returns the status of the IVR menu:
success
failure
timeout
ivr_menu_terminator
dtmf digit You can set to none or the dtmf chars you want to terminate input.
Usage
<action application="set" data="ivr_menu_terminator=#"/>
jitterbuffer_msec
string
Channel variable. Activates the jitter buffer. The jitter buffer has three params: length, max length, and max drift.
Usage
jitterbuffer_msec=buffer length:maximum buffer length:maximum drift
The three arguments specify the size of the jitter buffer either in units of milliseconds when only numerals are used or in the count of packets when the suffix 'p' is appended to the number.
buffer length – beginning length of jitter buffer
max length – maximum size to which the jitter buffer is allowed to grow
max drift – maximum delay the jitter buffer will tolerate before dropping frames to make up ground
Examples
Numeric time example
<action application="set" data="jitterbuffer_msec=60:200:20"/>
<action application="answer"/>
Packet count example
<action application="set" data="jitterbuffer_msec=2p:25p:4p"/>
<action application="answer"/>
Or to set it only on the subsequent outbound (Leg B) call: the export dialplan app sets a variable on both the current channel and on any channels it creates, while the 'nolocal:' directive disables setting it on the current (Leg A) channel and only sets it on the subsequent outbound channels.
Leg B only with nolocal:
<action application="export" data="nolocal:jitterbuffer_msec=60"/>
<action application="bridge" data="sofia/default/888@conference.freeswitch.org"/>
You can also activate the Jitter Buffer in the bridge as follows:
jb in bridge app
<action application="bridge" data="{jitterbuffer_msec=60}sofia/gateway/$1@gateway.com"/>
This will add a jitter buffer to packets flowing from a remote gateway towards a local freeswitch user. The network would look like this:
(local sip user) -----\> FreeSWITCH -----\> (remote gateway)
Where the link between FreeSWITCH and the remote gateway has jitter, and say the local SIP user has no jitter buffering on their IP-phone. This will help the voice quality for the incoming audio.
language
string
last_app
string
last_arg
string