System configuration options in ecallmgr

Schema for ecallmgr system_config

KeyDescriptionTypeDefaultRequiredSupport Level
acl_request_timeout_fudge_msecallmgr acl_request_timeout_fudge_msinteger()100false
acl_request_timeout_msecallmgr acl_request_timeout_msinteger()2000false
aclsecallmgr aclsobject(){}false
allow_endless_recordingecallmgr allow_endless_recordingboolean()falsefalse
authz_default_actionecallmgr authz default actionstring()denyfalse
authz_dry_runecallmgr authz dry runboolean()falsefalse
authz_enabledecallmgr authz enabledboolean()falsefalse
authz_local_resourcesecallmgr authz local resourcesboolean()falsefalse
balance_crawler_cycle_msecallmgr balance crawler cycle in millisecondsinteger()60000false
balance_crawler_enabledecallmgr balance crawler enabledboolean()falsefalse
balance_crawler_fetch_timeout_msecallmgr balance crawler fetch timeout in millisecondsinteger()10000false
balance_crawler_interaccount_delay_msecallmgr balance crawler interaccount delay in millisecondsinteger()10false
call_routing_bindings.[]string()false
call_routing_bindingsecallmgr call routing bindingsarray(string())["context_2"]false
capabilitiesecallmgr capabilitiesarray(object())["{"capability":"conference","is_loaded":false,"module":"mod_conference"}", "{"capability":"channel_move","is_loaded":false,"module":"mod_channel_move"}", "{"capability":"http_cache","is_loaded":false,"module":"mod_http_cache"}", "{"capability":"dialplan","is_loaded":false,"module":"mod_dptools"}", "{"capability":"sip","is_loaded":false,"module":"mod_sofia"}", "{"capability":"fax","is_loaded":false,"module":"mod_spandsp"}", "{"capability":"tts","is_loaded":false,"module":"mod_flite"}", "{"capability":"freetdm","is_loaded":false,"module":"mod_freetdm"}", "{"capability":"skype","is_loaded":false,"module":"mod_skypopen"}", "{"capability":"xmpp","is_loaded":false,"module":"mod_dingaling"}", "{"capability":"skinny","is_loaded":false,"module":"mod_skinny"}", "{"capability":"sms","is_loaded":false,"module":"mod_sms"}"]false
debug_channelecallmgr debug channelboolean()falsefalse
default_fax_extensionecallmgr default fax extensionstring().tifffalse
default_realmecallmgr default realmstring()nodomain.comfalse
default_recording_extensionecallmgr default recording extensionstring().mp3false
default_ringbackecallmgr default ringbackstring()%(2000,4000,440,480)false
event_stream_idle_alertecallmgr event stream idle alertinteger()0false
expandable_macrosmacros that will be expanded at call-time, for use in custom SIP headersobject(){"{reseller_id}":"${ecallmgr_Reseller-ID}","{caller_id_number}":"${caller_id_number}","{caller_id_name}":"${caller_id_name}","{billing_id}":"${ecallmgr_Billing-ID}","{account_id}":"${ecallmgr_Account-ID}"}false
expires_deviation_timeecallmgr expires deviation timeinteger()180false
failover_when_all_unregfailover only when all devices are offlineboolean()falsefalse
fax_file_pathecallmgr fax file pathstring()/tmp/false
fetch_timeoutecallmgr fetch timeoutinteger()2600false
freeswitch_contextecallmgr freeswitch contextstring()context_2false
fs_cmdsecallmgr fs cmdsarray(object())["{"load":"mod_sofia"}", "{"reloadacl":""}"]false
fs_cmds_wait_msecallmgr fs cmds wait in millisecondsinteger()5000false
fs_node_uptime_secallmgr fs node uptime in secondsinteger()600false
fs_nodes.[]string()false
fs_nodesecallmgr fs nodesarray(string())[]false
fs_profilesecallmgr fs profilesobject(){}false
fs_reconnect_cmdsecallmgr fs reconnect cmdsarray(object())false
gatewaysecallmgr gatewaysobject(){}false
insert_fetched_registration_locallyecallmgr insert fetched registration locallyboolean()falsefalse
max_channel_cleanup_timeout_msecallmgr maximum channel cleanup timeout in millisecondsinteger()60000false
max_channel_uptime_secallmgr maximum channel uptime in secondsinteger()0false
max_timeout_for_node_restartecallmgr maximum timeout for node restartinteger()10000false
multivar_separatorecallmgr multivar_separatorstring()~false
network_mapecallmgr network mapobject(){}false
node_commandsfalse
node_down_grace_periodecallmgr node down grace periodinteger()10000false
process_gatewaysecallmgr process gatewaysboolean()falsefalse
publish_channel_reconnectecallmgr publish channel reconnectboolean()falsefalse
publish_channel_stateecallmgr publish channel stateboolean()truefalse
publish_conference_event.[]string()false
publish_conference_eventecallmgr publish conference eventarray(string())["conference-create", "conference-destroy", "lock", "unlock", "add-member", "del-member", "stop-talking", "start-talking", "mute-member", "unmute-member", "deaf-member", "undeaf-member"]false
record_sample_rateecallmgr record sample rateinteger()8000false
record_stereo_sample_rateecallmgr record stereo sample rateinteger()16000false
record_waste_resourcesecallmgr record waste resourcesboolean()falsefalse
recording_file_pathecallmgr recording file pathstring()/tmp/false
recording_software_nameecallmgr recording software namestring()2600Hz, Inc.'s Kazoofalse
redirect_via_proxyecallmgr redirect via proxyboolean()truefalse
restrict_channel_state_publisherecallmgr restrict channel state publisherboolean()falsefalse
sanitize_fs_value_regexecallmgr sanitize_fs_value_regexstring()[^0-9\w\s-]false
should_detect_inband_dtmfecallmgr should detect inband dtmfboolean()falsefalse
sofia_confecallmgr sofia confboolean()false
tcp_packet_typeecallmgr tcp packet typeinteger()2false
text_routing_bindings.[]string()false
text_routing_bindingsecallmgr text routing bindingsarray(string())["context_2"]false
use_bypass_media_after_bridgeecallmgr use bypass media after bridgeboolean()falsefalse
use_http_cacheecallmgr use http cacheboolean()truefalse
use_shoutecallmgr use shoutboolean()falsefalse
use_vlcecallmgr use vlcboolean()falsefalse
user_cache_time_in_msecallmgr user cache time in in millisecondsinteger()3600000false

failover_when_all_unreg

When a list of endpoints is passed to ecallmgr for bridging (say via a ring group or a user’s owned devices), the listing can optionally include failover endpoints to be dialed if a user’s normal devices are offline.

When this flag is enabled, the provided SIP endpoints are checked for active registrations; if no SIP endpoints remain after filtering those endpoints missing registrations, the failover endpoint(s) are used instead.

User callflow

When a user has one or more SIP endpoints and has also configured failover (by setting "call_failover.enabled":true plus the call failover details), a bridge command will be sent to ecallmgr with the failover endpoint. When ecallmgr goes to build the bridge string for FreeSWITCH, the SIP endpoint statuses will be checked; if all SIP endpoints are missing registrations, the failover endpoint will be used. If any SIP endpoint is registered, the failover endpoint is omitted from the bridge string.

Ring Group callflow

When KAZOO builds a ring group endpoint list, it resolves all group and user IDs into their owned device IDs. That list of endpoints is then sent to ecallmgr for bridging.

This means that if any SIP device from the resulting endpoint list has an active registration, all failover endpoints will be filtered out and not dialed. So if a user has no online SIP endpoints and has failover configured, their failover endpoint will not ring if any other SIP endpoint in the ring group is actively registered.

”Normal” call forwarded endpoints

If a user or ring group has “normal” call-forwarded endpoints included, since these endpoints don’t maintain a registration (since they typically are forwarded to another DID), then they aren’t ever “offline” from KAZOO’s perspective. Bear this in mind when failover endpoints aren’t ringing when SIP endpoints are unregistered.