XML Configuration
...
XML Configuration
This section describes the formatting and options available when creating XML-based configuration files for provisioning Sangoma phones.
...
A Complete XML Configuration Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<setting id="config_server_url" value="sip:proxy@server.example.com:5060;transport=udp" />
<setting id="pbx_credentials" value="1" account_id="1234" host="server.example.com" user="1234" pass="my password" />
<setting id="login_password" value="789" />
<setting id="send_mac_with_useragent" value="0" />
<setting id="use_secure_labels" value="1" />
<setting id="time_zone" value="America/Los_Angeles" />
<setting id="ntp_server" value="0.digium.pool.ntp.org" />
<setting id="ntp_resync" value="86400" />
<setting id="ntp_prefer_option42" value="1" />
<setting id="accept_local_calls" value="any" />
<setting id="compact_sip_headers" value="0" />
<setting id="transport_udp_enabled" value="1" />
<setting id="transport_udp_port" value="5060" />
<setting id="transport_tcp_enabled" value="1" />
<setting id="transport_tcp_port" value="5060" />
<setting id="transport_tls_allowed" value="1" />
<setting id="transport_tls_port" value="5061" />
<setting id="tls_allow_wildcard_certs" value="0" />
<setting id="udp_ka_interval" value="60"/>
<setting id="logo_file" value="user" path="/user_image.png" url="https://server.example.com/mylogo.png" md5="126cd744583eeea1ab7e44ed8af3d39c" />
<setting id="display_mc_notification" value="1" />
<setting id="hide_completed_elsewhere" value="0" />
<setting id="idle_company_text" value="" />
<setting id="brightness" value="10" />
<setting id="enable_check_sync" value="1"/>
<setting id="dim_backlight" value="1" />
<setting id="backlight_timeout" value="30" />
<setting id="backlight_dim_level" value="2" />
<setting id="blf_page_return_timeout" value="0" />
<setting id="idle_return_timer" value="120" />
<setting id="locale" value="en_US" />
<setting id="time_short_format" value="h:mm a" />
<setting id="date_short_format" value="M/d/yy" />
<setting id="date_time_format" value="{1}, {0}" />
<setting id="date_long_format" value="EEE, MMM d" />
<setting id="ringer_volume" value="5" />
<setting id="speaker_volume" value="5" />
<setting id="handset_volume" value="5" />
<setting id="headset_volume" value="5" />
<setting id="reset_call_volume" value="0" />
<setting id="active_ringtone" value="Sangoma" />
<setting id="headset_answer" value="0" />
<setting id="ring_headset_only" value="0" />
<setting id="call_waiting_tone" value="1" />
<setting id="ehs" value="auto" />
<setting id="parking_lot_extension" value="700" />
<setting id="parking_lot_enable_blind_transfer" value="0" />
<setting id="contacts_max_subscriptions" value="40" />
<setting id="name_format" value="first_last" />
<setting id="blf_contact_group" value="Default" />
<setting id="expansion_enable" value="0"/>
<setting id="network_enable_dhcp" value="1" />
<setting id="network_static_ip_address" value="" />
<setting id="network_subnet_mask" value="" />
<setting id="network_default_gateway" value="" />
<setting id="network_domain_name" value="" />
<setting id="network_primary_dns_server" value="" />
<setting id="network_secondary_dns_server" value="" />
<setting id="network_disable_arping" value="0" />
<setting id="allow_insecure_ssl" value="0" />
<setting id="enable_tcp_sack" value="0" />
<setting id="network_vlan_discovery_mode" value="NONE" />
<setting id="network_vlan_id" value="44" />
<setting id="pc_vlan_id" value="10" />
<setting id="log_level" value="debug" />
<setting id="enable_logging" value="0" />
<setting id="log_server" value="10.1.2.3" />
<setting id="log_port" value="514" />
<setting id="web_ui_enabled" value="1" />
<setting id="sip_qos" value="3" />
<setting id="rtp_qos" value="6" />
<setting id="pc_qos" value="1" />
<setting id="sip_dscp" value="24" />
<setting id="rtp_dscp" value="46" />
<setting id="in_switchvox_environment" value="0" />
<setting id="server_environment" value="" />
<setting id="handshake_timeout" value="86400" />
<setting id="retransmit_until_response" value="0" />
<setting id="sip_notify_call_control" value="0" />
<setting id="8021x_method" value=""/>
<setting id="8021x_identity" value=""/>
<setting id="8021x_anonymous_identity" value=""/>
<setting id="8021x_password" value=""/>
<setting id="8021x_client_key" value="my-client-key"/>
<setting id="8021x_client_cert" value="my-client-cert"/>
<setting id="8021x_debug" value="" />
<setting id="network_default_enable_openvpn" value="0" />
<setting id="openvpn_inline_config" url="https://user:password@server.example.com/vpn/client.ovpn" value="1" md5="abc123" />
<setting id="wifi_enabled" value="0" />
<setting id="wifi_ssid" value="" />
<setting id="wifi_psk" value="" />
<setting id="wifi_security" value="None" />
<setting id="bluetooth_enabled" value="0" />
<setting id="config_recheck" value="0" idle_time="600" days="0123456" start_time="0200" hours="2" />
<events>
<event id="digium.incomingCall.voicemail" action="app" />
<event id="digium.parkingLot.parked" action="app" />
</events>
<keymap>
<state id="idle">
<softkeys>
<key id="0" action="missed_or_call_log"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="status"/>
<key id="3" action="info"/>
<key id="4" action="forward_calls" label1="_FORWARD"/>
<key id="5" action="menu"/>
</softkeys>
</state>
<state id="hold">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="hold/transfer">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="hold/conference">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="split_conference"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="hold/preconference">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="incoming">
<softkeys>
<key id="0" action="accept_call"/>
<key id="1" action="reject_call"/>
<key id="2" action="transfer_call"/>
</softkeys>
</state>
<state id="incoming/transfer">
<softkeys>
<key id="0" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="connected">
<softkeys>
<key id="0" action="conference"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="connected/conference">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="split_conference"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="connected/transfer">
<softkeys>
<key id="0" action="transfer_call"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="dial">
<softkeys>
<key id="0" action="toggle_url_number"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dial/conference">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dial/transfer">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dialing">
<softkeys>
<key id="0" action="make_call"/>
<key id="1" action="backspace"/>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dialing/conference">
<softkeys>
<key id="0" action="make_call"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="backspace"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dialing/transfer">
<softkeys>
<key id="0" action="transfer_call"/>
<key id="1" action="make_call"/>
<key id="2" action="backspace"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="failed">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="clear_call"/>
</softkeys>
</state>
<state id="calling">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
</keymap>
<contacts url="https://server.example.com/myfile.xml" id="internal" md5="abcd123" />
<smart_blf>
<blf_items url="http://server.example.com/myblfitems.xml" />
</smart_blf>
<accounts>
<account server_uuid="0" index="0" status="1" register="1" account_id="100" username="100" authname="100" password="100" passcode="100" line_label="100 Alligator" caller_id="100 Alligator" dial_plan="[0-8]xxxxx|911|9411|9611|9011xxx.T3|91xxxxxxxxxx|9[2-9]xxxxxx|*xx.T3|[0-8]xx.T3" visual_voicemail="0" voicemail="sip:800@10.1.2.3" needMwiSubscription="1" plar_number="" ring_type="normal" subscription_extension="auto_hint_100" mwi_subscription_uri="" conflict="replace">
<host_primary server="10.10.2.108" port="" transport="udp" media_encryption="" reregister="300" retry="25">
<outbound_proxy server="" port="" transport="" />
</host_primary>
<host_alternate server="10.1.2.3" port="" transport="udp" media_encryption="" reregister="300" retry="25" authname="" password="">
<outbound_proxy server="" port="" transport="" />
</host_alternate>
<permission id="record_own_calls" value="0" />
<setting id="use_call_log_api" value="0" />
<setting id="call_log_fetch_entries" value="50" />
<setting id="parking_lot_extension" value="700" />
<setting id="parking_lot_enable_blind_transfer" value="0" />
<permission id="use_voicemail" value="1" />
<permission id="send_to_voicemail" value="1" />
<permission id="ignore_calls" value="1" />
</account>
</accounts>
<networks>
<network id="network1" display_name="Internal" cidr="192.168.8.0/24" />
<network id="network2" display_name="External" cidr="10.0.0.0/8" />
<network id="network3" display_name="All Networks" cidr="0.0.0.0/0" />
</networks>
<codecs>
<codec id="PCMU" priority="255" packetization="20" enabled="1" />
<codec id="PCMA" priority="13" packetization="20" enabled="1" />
<codec id="G722" priority="11" packetization="20" enabled="1" />
<codec id="G726-32" priority="7" packetization="20" enabled="1" />
<codec id="opus" priority="6" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" complexity="10" samplerate="wb" use_vbr="1" />
<codec id="G729" priority="5" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
</codecs>
<ringtones>
<tones>
<tone id="Alarm" display="Alarm" type="phone"/>
<tone id="Chimes" display="Chimes" type="phone"/>
<tone id="Sangoma" display="Sangoma" type="phone"/>
<tone id="GuitarStrum" display="Guitar Strum" type="phone"/>
<tone id="Jingle" display="Jingle" type="phone"/>
<tone id="Office" display="Office" type="phone"/>
<tone id="Office2" display="Office 2" type="phone"/>
<tone id="RotaryPhone" display="Rotary Phone" type="phone"/>
<tone id="SteelDrum" display="Steel Drum" type="phone"/>
<tone id="Techno" display="Techno" type="phone"/>
<tone id="Theme" display="Theme" type="phone"/>
<tone id="Tweedle" display="Tweedle" type="phone"/>
<tone id="Twinkle" display="Twinkle" type="phone"/>
<tone id="Vibe" display="Vibe" type="phone"/>
</tones>
<alerts>
<alert alert_info="normal" ringtone_id="Sangoma" ring_type="normal" />
<alert alert_info="ring-answer" ringtone_id="Sangoma" ring_type="ring-answer" />
<alert alert_info="intercom" ringtone_id="" ring_type="answer" />
<alert alert_info="visual" ringtone_id="" ring_type="visual" />
</alerts>
</ringtones>
<appconfig id="appscreen">
<application id="parking" />
<application id="status" />
<application id="contacts" />
<application id="call_log" />
<application id="forward_calls" />
<application id="hotdesking" />
<application id="mcastpage" />
<auto_start />
</appconfig>
<appconfig id="phonemenu">
<auto_start />
</appconfig>
<appconfig id="contacts">
<account account_id="101" username="101" password="1234" appserver="dasp://server.example.com/json" apiformat="json"/>
<display_rules>
<display_rule id="1" action_id="dial_vm" phone_state="idle" show="0"/>
<display_rule id="2" action_id="transfer_vm" show="0"/>
<display_rule id="3" action_id="transfer_vm" phone_state="transfer" show="1"/>
</display_rules>
<block_redial>
<action id="dial_vm" />
<action id="sendtovm" />
<action id="monitor" />
<action id="pickup" />
</block_redial>
<settings can_transfer_vm="1" name_format="last_first" preferred_contact_group="" />
<settings in_switchvox_environment="0" />
<auto_start />
</appconfig>
<appconfig id="status">
<account account_id="101" username="101" password="1234" appserver="dasp://server.example.com/json" apiformat="json"/>
<send_dnd status="" />
<auto_start />
<full_application />
</appconfig>
<appconfig id="parking">
<account account_id="101" username="101" password="1234" appserver="dasp://server.example.com/json" apiformat="json"/>
<auto_start />
</appconfig>
<appconfig id="hotdesking">
<account account_id="000000000000" username="000000000000" appserver="https://server.example.com/json" apiformat="json"/>
</appconfig>
<appconfig id="call_log">
<account account_id="101" username="101" password="1234" appserver="dash://server.example.com/json" apiformat="json"/>
<enabled />
</appconfig>
<firmwares>
<firmware model="P320" version="3_0_7" url="http://10.10.4.11/firmware/3_0_7_P320_firmware.eff" />
<firmware model="P325" version="2_8_0" url="http://10.10.4.11/firmware/3_0_7_P325_firmware.eff" />
</firmwares>
<public_firmwares>
<public_firmware model="P320" version="3_0_7" url="http://firmware.example.com/firmware/3_0_7_P320_firmware.eff" />
<public_firmware model="P325" version="3_0_7" url="http://firmware.example.com/firmware/3_0_7_P325_firmware.eff" />
</public_firmwares>
<multicastpage>
<listener id="1" extension="" name="SomePage" addr="239.0.0.1" port="32000" priority="1" interrupt_calls="0"/>
<listener id="2" extension="" name="All Page" addr="239.0.0.2" port="32000" priority="2" interrupt_calls="1"/>
<broadcast id="1" name="My Paging Group" addr="239.0.0.3" port="32000" codec="PCMU" />
</multicastpage>
<certs>
<cert id="1" label="my-ca" md5="abc123">MIICXQIBAAKB...XYZ</cert>
<clientcert id="1" label="my-client-cert" md5="abc123">MIICXQIBAAKB...XYZ</clientcert>
<clientkey id="1" label="my-client-key" type="RSA" md5="abc123">MIICXQIBAAKB...XYZ</clientkey>
</certs>
<activity_indicator>
<setting id="idle" color="amber" state="off" />
<setting id="default" color="amber" state="off" />
<setting id="hold" color="red" state="slow" />
<setting id="ringing" color="green" state="fast" />
<setting id="active" color="green" state="on" />
<setting id="new_vm" color="red" state="slow" />
<setting id="listen_vm" color="red" state="on" />
<setting id="leaving_vm" color="amber" state="slow" />
<setting id="screen_vm" color="amber" state="on" />
<setting id="announcement" color="amber" state="fast" />
</activity_indicator>
<use_proxy_for network="10.10.0.0/20" network_id="network1" host="10.1.2.3" use="0" />
</config> |
|
Setting Elements
XML Setting Elements
XML Setting Elements
Code Block |
---|
<?xml version="1.0" ?>
<config>
<setting id="config_server_url" value="sip:proxy@server.example.com:5060;transport=udp" />
<setting id="pbx_credentials" value="1" account_id="1234" host="server.example.com" user="1234" pass="my password" />
<setting id="login_password" value="789" />
<setting id="send_mac_with_useragent" value="0" />
<setting id="use_secure_labels" value="1" />
<setting id="time_zone" value="America/Los_Angeles" />
<setting id="ntp_server" value="0.digium.pool.ntp.org" />
<setting id="ntp_resync" value="86400" />
<setting id="ntp_prefer_option42" value="1" />
<setting id="accept_local_calls" value="any" />
<setting id="compact_sip_headers" value="0" />
<setting id="transport_udp_enabled" value="1" />
<setting id="transport_udp_port" value="5060" />
<setting id="transport_tcp_enabled" value="1" />
<setting id="transport_tcp_port" value="5060" />
<setting id="transport_tls_allowed" value="1" />
<setting id="transport_tls_port" value="5061" />
<setting id="tls_allow_wildcard_certs" value="0" />
<setting id="udp_ka_interval" value="60"/>
<setting id="logo_file" value="user" path="/user_image.png" url="https://server.example.com/mylogo.png" md5="126cd744583eeea1ab7e44ed8af3d39c" />
<setting id="display_mc_notification" value="1" />
<setting id="hide_completed_elsewhere" value="0" />
<setting id="idle_company_text" value="" />
<setting id="brightness" value="10" />
<setting id="enable_check_sync" value="1"/>
<setting id="dim_backlight" value="1" />
<setting id="backlight_timeout" value="30" />
<setting id="backlight_dim_level" value="2" />
<setting id="blf_page_return_timeout" value="0" />
<setting id="idle_return_timer" value="120" />
<setting id="locale" value="en_US" />
<setting id="time_short_format" value="h:mm a" />
<setting id="date_short_format" value="M/d/yy" />
<setting id="date_time_format" value="{1}, {0}" />
<setting id="date_long_format" value="EEE, MMM d" />
<setting id="ringer_volume" value="5" />
<setting id="speaker_volume" value="5" />
<setting id="handset_volume" value="5" />
<setting id="headset_volume" value="5" />
<setting id="reset_call_volume" value="0" />
<setting id="active_ringtone" value="Sangoma" />
<setting id="headset_answer" value="0" />
<setting id="ring_headset_only" value="0" />
<setting id="call_waiting_tone" value="1" />
<setting id="ehs" value="auto" />
<setting id="parking_lot_extension" value="700" />
<setting id="parking_lot_enable_blind_transfer" value="0" />
<setting id="contacts_max_subscriptions" value="40" />
<setting id="name_format" value="first_last" />
<setting id="blf_contact_group" value="Default" />
<setting id="expansion_enable" value="0" />
<setting id="network_enable_dhcp" value="1" />
<setting id="network_static_ip_address" value="" />
<setting id="network_subnet_mask" value="" />
<setting id="network_default_gateway" value="" />
<setting id="network_domain_name" value="" />
<setting id="network_primary_dns_server" value="" />
<setting id="network_secondary_dns_server" value="" />
<setting id="network_disable_arping" value="0" />
<setting id="allow_insecure_ssl" value="0" />
<setting id="enable_tcp_sack" value="0" />
<setting id="network_vlan_discovery_mode" value="NONE" />
<setting id="network_vlan_id" value="44" />
<setting id="pc_vlan_id" value="10" />
<setting id="log_level" value="debug" />
<setting id="enable_logging" value="0" />
<setting id="log_server" value="10.1.2.3" />
<setting id="log_port" value="514" />
<setting id="web_ui_enabled" value="1" />
<setting id="sip_qos" value="3" />
<setting id="rtp_qos" value="6" />
<setting id="pc_qos" value="1" />
<setting id="sip_dscp" value="24" />
<setting id="rtp_dscp" value="46" />
<setting id="in_switchvox_environment" value="0" />
<setting id="server_environment" value="" />
<setting id="handshake_timeout" value="86400" />
<setting id="retransmit_until_response" value="0" />
<setting id="sip_notify_call_control" value="0" />
<setting id="8021x_method" value=""/>
<setting id="8021x_identity" value=""/>
<setting id="8021x_anonymous_identity" value=""/>
<setting id="8021x_password" value=""/>
<setting id="8021x_client_key" value="my-client-key"/>
<setting id="8021x_client_cert" value="my-client-cert"/>
<setting id="8021x_debug" value="" />
<setting id="network_default_enable_openvpn" value="0" />
<setting id="openvpn_inline_config" url="https://user:password@server.example.com/vpn/client.ovpn" value="1" md5="abc123" />
<setting id="wifi_enabled" value="0" />
<setting id="wifi_ssid" value="" />
<setting id="wifi_psk" value="" />
<setting id="wifi_security" value="None" />
<setting id="bluetooth_enabled" value="0" />
<setting id="config_recheck" value="0" idle_time="600" days="0123456" start_time="0200" hours="2" />
</config> |
|
Each <setting> element represents at least an id and value pair of attributes. Some <setting> tags may have additional attributes.
...
Events Element Example
Events Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<events>
<event id="digium.incomingCall.voicemail" action="app" />
<event id="digium.parkingLot.parked" action="app" />
</events>
</config> |
|
Any number of event elements may be present directly under the events element.
...
Keymap Element Example
Keymap Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<keymap>
<state id="idle">
<softkeys>
<key id="0" action="missed_or_call_log"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="status"/>
<key id="3" action="info"/>
<key id="4" action="forward_calls" label1="_FORWARD"/>
<key id="5" action="menu"/>
</softkeys>
</state>
<state id="hold">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="hold/transfer">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="hold/conference">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="split_conference"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="hold/preconference">
<softkeys>
<key id="0" action="resume"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="incoming">
<softkeys>
<key id="0" action="accept_call"/>
<key id="1" action="reject_call"/>
<key id="2" action="transfer_call"/>
</softkeys>
</state>
<state id="incoming/transfer">
<softkeys>
<key id="0" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="connected">
<softkeys>
<key id="0" action="conference"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="connected/conference">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="split_conference"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="connected/transfer">
<softkeys>
<key id="0" action="transfer_call"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
<state id="dial">
<softkeys>
<key id="0" action="toggle_url_number"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dial/conference">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dial/transfer">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dialing">
<softkeys>
<key id="0" action="make_call"/>
<key id="1" action="backspace"/>
<key id="2" action="none"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dialing/conference">
<softkeys>
<key id="0" action="make_call"/>
<key id="1" action="show_application" label1="_CONTACTS">
<arg>contacts</arg>
</key>
<key id="2" action="backspace"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="dialing/transfer">
<softkeys>
<key id="0" action="transfer_call"/>
<key id="1" action="make_call"/>
<key id="2" action="backspace"/>
<key id="3" action="cancel_call"/>
</softkeys>
</state>
<state id="failed">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="clear_call"/>
</softkeys>
</state>
<state id="calling">
<softkeys>
<key id="0" action="none"/>
<key id="1" action="none"/>
<key id="2" action="none"/>
<key id="3" action="end_call"/>
</softkeys>
</state>
</keymap>
</config> |
|
Keymap Elements control the functionality of softkeys during various phone states.
...
Contacts Element Example
Contacts Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<contacts url="https://server.example.com/myfile.xml" id="internal" md5="abcd123" />
</config> |
|
Any number of contacts elements may be present directly under the config element.
These <contacts> elements have attributes, most importantly url which allow contacts xml sheets to be downloaded via the DPMA.
...
BLF Items Element Example
Code Block |
---|
<?xml version="1.0">
<config>
<smart_blf>
<blf_items url="http://server.example.com/myblfitems.xml" network_id="mynetwork" md5="abcd123" />
</smart_blf>
</config> |
|
Option | Values | Description | Models |
---|
blf_items | url as file link, network_id (optional) as network identifier for this element, md5 (optional) as md5 sum of referenced XML sheet | Specifies the BLF Items XML file to be retrieved by the phone. Sangoma phones support basic authentication, so a username and password may be passed in the URL line, e.g. http://user:pass@server.example.com | P320, P325, P330, P370 |
...
Accounts Element Example
Accounts Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<accounts>
<account server_uuid="0" index="0" status="1" register="1" account_id="100" username="100" authname="100" password="100" passcode="100" line_label="100 Alligator" caller_id="100 Alligator" dial_plan="[0-8]xxxxx|911|9411|9611|9011xxx.T3|91xxxxxxxxxx|9[2-9]xxxxxx|*xx.T3|[0-8]xx.T3" visual_voicemail="0" voicemail="sip:800@10.1.2.3" needMwiSubscription="1" plar_number="" ring_type="normal" subscription_extension="100" conflict="replace" mwi_subscription_uri="" >
<host_primary server="10.10.2.108" port="5060" transport="udp" media_encryption="" reregister="300" retry="25">
<outbound_proxy server="" port="" transport="" />
</host_primary>
<host_alternate server="10.1.2.3" port="5060" transport="udp" media_encryption="" reregister="300" retry="25">
<outbound_proxy server="" port="" transport="" />
</host_alternate>
<permission id="record_own_calls" value="0" />
<setting id="use_call_log_api" value="0" />
<setting id="call_log_fetch_entries" value="50" />
<setting id="parking_lot_extension" value="700" />
<setting id="parking_lot_enable_blind_transfer" value="1" />
<permission id="use_voicemail" value="1" />
<permission id="send_to_voicemail" value="1" />
<permission id="ignore_calls" value="1" />
</account>
</accounts>
</config> |
|
Option | Values | Description | Models |
---|
server_uuid | Non-zero String | Specifies a unique identifier for the server. | P320, P325, P330, P370 |
index | integer (0-5) | Defines the line key to which the account will be mapped. There is no default index value. This option is mandatory. | P320, P325, P330, P370 |
status | boolean | If 1, enables the account's line key. If 0, will not display the account's line on the phone or register with the primary host. Defaults to 0. | P320, P325, P330, P370 |
register | boolean | If 1, then this account will attempt to register with the primary host. If 0, then registration will not be performed for this account. Defaults to 0. | P320, P325, P330, P370 |
account_id | string | For Switchvox systems, the Switchvox account_id associated with the SIP account. For non-Switchvox systems, a unique identifier, not necessarily related to any SIP credentials. | P320, P325, P330, P370 |
username | string | SIP username | P320, P325, P330, P370 |
authname | string | SIP authname | P320, P325, P330, P370 |
password | string | SIP password | P320, P325, P330, P370 |
passcode | string | SIP password | P320, P325, P330, P370 |
line_label | string | The text that shows up next to the line key for this account | P320, P325, P330, P370 |
caller_id | Name <Number> | Outgoing caller id displayed for this account | P320, P325, P330, P370 |
dial_plan | Digit mapping, see Dial Plans | The dial plan / digit mapping for this account | P320, P325, P330, P370 |
visual_voicemail | boolean | Only valid on account with index of 0. Only valid for phones provisioned by Switchvox or the DPMA. If 1, then the Msgs button action will open the voicemail app. If 0, then the Msgs button will be mapped to the extension defined for the voicemail option. Defaults to 0. | P320, P325, P330, P370 |
voicemail | digits or SIP URI | A SIP URI or extension to be dialed for voicemail pertaining to this account. | P320, P325, P330, P370 |
needMwiSubscription | boolean | If 1, the phone will subscribe for MWI for this account. If 0, the phone will not subscribe for MWI for this account. Defaults to 1. | P320, P325, P330, P370 |
plar_number | string | If defined, the phone will dial the configured string as a URI when the account is taken off-hook. | P320, P325, P330, P370 |
ring_type | normal, answer, ring-answer, visual | Allows control over the default ringing type for this account in the absence of any explicit Alert-Info header. Defaults to normal. | P320, P325, P330, P370 |
subscription_extension | string | For DPMA-connected phones, defines the user-part to which the phone should subscribe for presence updates | P320, P325, P330, P370 |
mwi_subscription_uri | SIP URI e.g.: sip:mailbox@host | If empty, subscribe to the host_primary using the SIP username. If non-empty, allows definition of the URI for MWI subscription | P320, P325, P330, P370 |
...
Outbound Proxy: Child Element of <host_primary> and/or <host_alternate>
Option | Values | Description | Models |
---|
server | Hostname or IP Address | Outbound proxy for this host. | P320, P325, P330, P370 |
port | empty, or integer (1-65535) | Port for the outbound proxy | P320, P325, P330, P370 |
transport | udp, tcp, tls | SIP Transport for the outbound proxy | P320, P325, P330, P370 |
Permission: Child Element of <account>
...
Networks Element Example
Networks Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<networks>
<network id="network1" display_name="Internal" cidr="192.168.8.0/24" />
<network id="network2" display_name="External" cidr="10.0.0.0/8" />
<network id="network3" display_name="All Networks" cidr="0.0.0.0/0" />
</networks>
</config> |
|
The networks element contains definitions for networks, each described by an individual <network> element and its attributes.
...
Codecs Element Example
Codecs Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<codecs>
<codec id="PCMU" priority="255" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
<codec id="PCMA" priority="13" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
<codec id="G722" priority="11" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
<codec id="G726-32" priority="7" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
<codec id="opus" priority="6" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" complexity="10" samplerate="wb" use_vbr="1" />
<codec id="G729" priority="5" packetization="20" jitter_min="0" jitter_max="0" jitter_target="0" enabled="1" />
</codecs>
</config> |
|
The codecs element contains all available codecs, each described by an individual <codec> element and its attributes.
...
Tones Element Example
Tones Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<ringtones>
<tones>
<tone id="Alarm" display="Alarm" type="phone"/>
<tone id="Chimes" display="Chimes" type="phone"/>
<tone id="Sangoma" display="Sangoma" type="phone"/>
<tone id="GuitarStrum" display="Guitar Strum" type="phone"/>
<tone id="Jingle" display="Jingle" type="phone"/>
<tone id="Office" display="Office" type="phone"/>
<tone id="Office2" display="Office 2" type="phone"/>
<tone id="RotaryPhone" display="Rotary Phone" type="phone"/>
<tone id="SteelDrum" display="Steel Drum" type="phone"/>
<tone id="Techno" display="Techno" type="phone"/>
<tone id="Theme" display="Theme" type="phone"/>
<tone id="Tweedle" display="Tweedle" type="phone"/>
<tone id="Twinkle" display="Twinkle" type="phone"/>
<tone id="Vibe" display="Vibe" type="phone"/>
<tone id="208" display="Fancy" url="http://10.1.2.3/mytone.sln" md5="abc123" type="user"/>
</tones>
</ringtones>
</config> |
|
Element lists the <tone> elements, each described by the following attributes:
...
Alerts Element Example
Alerts Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<ringtones>
<alerts>
<alert alert_info="normal" ringtone_id="Sangoma" ring_type="normal" />
<alert alert_info="ring-answer" ringtone_id="Sangoma" ring_type="ring-answer" />
<alert alert_info="intercom" ringtone_id="" ring_type="answer" />
<alert alert_info="visual" ringtone_id="" ring_type="visual" />
</alerts>
</ringtones>
</config> |
|
Element lists the <alert> elements, each described by the following attributes.
Alert tones are played when the event designated by 'alert_info' occurs.
...
Firmwares Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<firmwares>
<firmware model="P320" version="3_0_7" url="http://10.10.4.11/firmware/3_0_7_P320_firmware.eff" />
<firmware model="P325" version="3_0_7" url="http://10.10.4.11/firmware/3_0_7_P325_firmware.eff" />
</firmwares>
</config> |
|
Element lists the <firmwares> elements, each described by the following attributes.
Network, if specified, allows the phone to load different firmware URLs depending on its own network address mask
...
Firmwares Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<public_firmwares>
<public_firmware model="P320" version="3_0_7" url="http://firmware.example.com/firmware/3_0_7_P320_firmware.eff" />
<public_firmware model="P325" version="3_0_7" url="http://firmware.example.com/firmware/3_0_7_P325_firmware.eff" />
</public_firmwares>
</config> |
|
Element lists the <public_firmwares> elements, each described by the following attributes.
Specifies a fallback firmare location - more than one public_firmware element may be specified for each model and the public_firmware servers will be tried in the order they are listed, in the event that an internal firmware server cannot be reached
A <public_firmwares> element does not take the place of a <firmwares> element; if a <firmwares> element is not present in the config, the phone will not apply any settings from any <public_firmwares> elements.
...
Appconfig Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<appconfig id="appscreen">
<application id="parking" />
<application id="status" />
<application id="contacts" />
<application id="call_log" />
<application id="forward_calls" />
<application id="hotdesking" />
<application id="mcastpage" />
<auto_start />
</appconfig>
<appconfig id="phonemenu">
<auto_start />
</appconfig>
<appconfig id="contacts">
<account account_id="101" username="101" password="1234" appserver="dasp://server.example.com/json" apiformat="json"/>
<display_rules>
<display_rule id="1" action_id="dial_vm" phone_state="idle" show="0"/>
<display_rule id="2" action_id="transfer_vm" show="0"/>
<display_rule id="3" action_id="transfer_vm" phone_state="transfer" show="1"/>
</display_rules>
<settings can_transfer_vm="1" name_format="last_first" preferred_contact_group="" />
<settings in_switchvox_environment="0" />
<auto_start />
</appconfig>
<appconfig id="status">
<account account_id="101" username="101" password="1234" appserver="dasp://server.example.com/json" apiformat="json"/>
<send_dnd status="" />
<auto_start />
<full_application />
</appconfig>
<appconfig id="parking">
<account account_id="101" username="101" password="1234" appserver="dasp://server.example.com/json" apiformat="json"/>
<auto_start />
</appconfig>
<appconfig id="hotdesking">
<account account_id="000000000000" username="000000000000" appserver="https://server.example.com/json" apiformat="json"/>
</appconfig>
<appconfig id="call_log">
<account account_id="101" username="101" password="1234" appserver="dash://server.example.com/json" apiformat="json"/>
<enabled />
</appconfig>
</config> |
|
Element lists the <appconfig> elements. Each element is identified by its identifier. Native apps require use of an account parameter.
auto_start element applies to all appconfig definitions and specifies that an application should be loaded when the phone boots, not just on first use of the application. This sill increase boot time but will decrease first load of the application.
Custom applications do not apply to model P310 and P315 telephones.
...
Multicastpage Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<multicastpage>
<listener id="1" name="SomePage" extension="123" addr="239.0.0.1" port="32000" priority="1" interrupt_calls="0"/>
<listener id="2" name="All Page" extension="456" addr="239.0.0.2" port="32000" priority="2" interrupt_calls="1"/>
<broadcast id="1" name="My Paging Group" addr="239.0.0.3" port="32000" codec="PCMU" />
</multicastpage>
</config> |
|
Element lists the <multicastpage> elements, each described by the following attributes.
Specifies listener addresses to which phone will subscribe for multicast audio playback in G.711 u-law, G.711 a-law, or G.722 formats
Specifies broadcast addresses on which phone can multicast audio in G.711 u-law, G.711 a-law, or G.722 formats
...
Certs Element Example
Certs Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<certs>
<cert id="1" label="my-ca" md5="abc123">MIICXQIBAAKB...XYZ</cert>
<clientcert id="1" label="my-client-cert" md5="abc123">MIICXQIBAAKB...XYZ</clientcert>
<clientkey id="1" label="my-client-cert" type="RSA" md5="abc123">MIICXQIBAAKB...XYZ</clientkey>
</certs>
</config> |
|
Element lists the <cert>, <clientcert>, and <clientkey> elements, each containing an in-line, raw certificate payload, not prefixed by an "----BEGIN CERTIFICATE----" header nor postfixed by an "----END CERTIFICATE----" footer.
cert will be loaded by phone and combined with built-in certificate bundle as a trusted certificate
...
Activity Indicator Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<activity_indicator>
<setting id="idle" color="amber" state="off" />
<setting id="default" color="amber" state="off" />
<setting id="hold" color="red" state="slow" />
<setting id="ringing" color="green" state="fast" />
<setting id="active" color="green" state="on" />
<setting id="new_vm" color="red" state="slow" />
<setting id="listen_vm" color="red" state="on" />
<setting id="leaving_vm" color="amber" state="slow" />
<setting id="screen_vm" color="amber" state="on" />
<setting id="announcement" color="amber" state="fast" />
</activity_indicator>
</config> |
|
Controls the behavior of the activity indicator lamp during various phone states.
...
use_proxy_for Element Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<use_proxy_for network="10.10.0.0/20" network_id="network1" host="10.1.2.3" use="0" />
</config> |
|
Controls whether the phone should make direct API requests to Switchvox or indirect cURL requests. Default to indirect. This option should only be used inside Switchvox environments.
...
network_id Attribute Example
Code Block |
---|
<?xml version="1.0" ?>
<config>
<networks>
<network id="network1" display_name="Home" cidr="192.168.8.0/24" />
<network id="network2" display_name="Work" cidr="10.0.0.0/8" />
</networks>
<setting id="ntp_server" value="0.digium.pool.ntp.org" network_id="network1" />
<setting id="ntp_server" value="ntp.example.com" network_id="network2" />
<setting id="network_vlan_discovery_mode" value="NONE" network_id="network1" />
<setting id="network_vlan_discovery_mode" value="LLDP" network_id="network2" />
<accounts>
<account index="0" status="1" register="1" account_id="100" username="100" authname="100" password="100" passcode="100" line_label="100 Alligator" caller_id="100 Alligator" dial_plan="[0-8]xxxxx|911|9411|9611|9011xxx.T3|91xxxxxxxxxx|9[2-9]xxxxxx|*xx.T3|[0-8]xx.T3" visual_voicemail="0" voicemail="sip:800@10.1.2.3" outbound_proxy="" outbound_port="" conflict="replace">
<host_primary server="pbx.example.com" port="5060" transport="udp" reregister="300" retry="25" network_id="network1" />
<host_alternate server="10.1.2.3" port="5060" transport="udp" reregister="300" retry="25" network_id="network1" />
<host_primary server="10.1.2.4" port="5060" transport="udp" reregister="300" retry="25" network_id="network2" />
<host_alternate server="10.1.2.5" port="5060" transport="udp" reregister="300" retry="25" network_id="network2" />
<permission id="record_own_calls" value="0" />
</account>
</accounts>
<contacts url="https://server.example.com/myfile.xml" id="internal" md5="abcd123" network_id="network1" />
<contacts url="https://10.1.2.3/myfile.xml" id="internal" md5="abcd123" network_id="network2" />
<firmware network_id="network1">
<firmware model="P320" version="3_0_7" url="http://server.example.com/firmware/P320.firmware.eff" />
<firmware model="P325" version="3_0_7" url="http://server.example.com/firmware/P325.firmware.eff" />
</firmwares>
<firmwares network_id="network2">
<firmware model="P320" version="3_0_7" url="http://10.1.2.3/firmware/P320.firmware.eff" />
<firmware model="P325" version="3_0_7" url="http://10.1.2.3/firmware/P325.firmware.eff" />
</firmwares>
</config> |
|