2008-01-01 23:32:09 +00:00
<?xml version="1.0" encoding="utf-8"?>
2007-12-28 23:33:07 +00:00
<!-- http://wiki.freeswitch.org/wiki/Dialplan_XML -->
2007-12-08 19:03:12 +00:00
<include >
<context name= "default" >
2008-01-03 23:42:15 +00:00
<extension name= "unloop" >
2008-01-08 21:08:31 +00:00
<condition field= "${unroll_loops}" expression= "^true$" />
2008-01-03 23:42:15 +00:00
<condition field= "${sip_looped_call}" expression= "^true$" >
<action application= "deflect" data= "${destination_number}" />
</condition>
</extension>
2008-05-24 01:27:19 +00:00
<extension name= "set_bind_leg" >
<condition field= "${leg_to_bind}" expression= "^$" >
<action application= "set" data= "leg_to_bind=a" />
</condition>
</extension>
2008-01-13 23:15:25 +00:00
<!-- Example of doing things based on time of day. -->
2008-01-13 23:00:43 +00:00
<extension name= "tod_example" continue= "true" >
<condition field= "${strftime(%H%M)}" expression= "^((09|1[0-7])[0-5][0-9]|1800)$" >
<action application= "set" data= "open=true" />
</condition>
</extension>
2007-12-08 19:03:12 +00:00
<extension name= "intercept" >
<condition field= "destination_number" expression= "^886$" >
<action application= "answer" />
<action application= "intercept" data= "${db(select/last_dial/global)}" />
<action application= "sleep" data= "2000" />
</condition>
</extension>
<extension name= "intercept-ext" >
2007-12-19 03:48:01 +00:00
<condition field= "destination_number" expression= "^\*\*(\d+)$" >
2007-12-08 19:03:12 +00:00
<action application= "answer" />
<action application= "intercept" data= "${db(select/last_dial_ext/$1)}" />
<action application= "sleep" data= "2000" />
</condition>
</extension>
<extension name= "redial" >
<condition field= "destination_number" expression= "^870$" >
<action application= "transfer" data= "${db(select/last_dial/${caller_id_number})}" />
</condition>
</extension>
<extension name= "global" continue= "true" >
2007-12-26 05:26:16 +00:00
<condition field= "${network_addr}" expression= "^$" break= "never" >
2008-03-27 20:34:49 +00:00
<action application= "set" data= "use_profile=${cond(${acl($${local_ip_v4} rfc1918)} == true ? nat : default)}" />
<anti-action application= "set" data= "use_profile=${cond(${acl(${network_addr} rfc1918)} == true ? nat : default)}" />
2007-12-08 19:03:12 +00:00
</condition>
<!-- This will setup some variables if the user isn't authenticated.
numbering_plan is required for the demo to function properly.
2007-11-15 18:21:22 +00:00
-->
2007-12-26 05:26:16 +00:00
<condition field= "${numbering_plan}" expression= "^$" break= "never" >
2007-12-08 19:03:12 +00:00
<action application= "set_user" data= "default@${domain}" />
</condition>
2008-01-03 23:42:15 +00:00
<condition field= "${call_debug}" expression= "^true$" break= "never" >
2007-12-16 02:44:54 +00:00
<action application= "info" />
2008-01-03 23:42:15 +00:00
</condition>
2008-01-16 21:28:20 +00:00
<condition field= "${sip_has_crypto}" expression= "^(AES_CM_128_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_80)$" break= "never" >
2008-01-16 06:07:22 +00:00
<action application= "set" data= "sip_secure_media=true" />
2008-01-18 15:09:34 +00:00
<!-- Offer SRTP on outbound legs if we have it on inbound. -->
2008-02-26 21:33:30 +00:00
<!-- <action application="export" data="sip_secure_media=true"/> -->
2008-01-16 06:07:22 +00:00
</condition>
2008-01-03 23:42:15 +00:00
<condition >
2007-12-08 19:03:12 +00:00
<action application= "db" data= "insert/spymap/${caller_id_number}/${uuid}" />
<action application= "db" data= "insert/last_dial/${caller_id_number}/${destination_number}" />
<action application= "db" data= "insert/last_dial/global/${uuid}" />
</condition>
</extension>
<extension name= "eavesdrop" >
2007-12-11 01:30:43 +00:00
<condition field= "destination_number" expression= "^88(.*)$|^\*0(.*)$" >
2007-12-08 19:03:12 +00:00
<action application= "answer" />
<action application= "eavesdrop" data= "${db(select/spymap/$1)}" />
</condition>
</extension>
2008-05-23 21:38:41 +00:00
<extension name= "eavesdrop" >
<condition field= "destination_number" expression= "^779$" >
<action application= "answer" />
<action application= "set" data= "eavesdrop_indicate_failed=tone_stream://%(500, 0, 320)" />
<action application= "set" data= "eavesdrop_indicate_new=tone_stream://%(500, 0, 620)" />
<action application= "set" data= "eavesdrop_indicate_idle=tone_stream://%(250, 0, 920)" />
<action application= "eavesdrop" data= "all" />
</condition>
</extension>
2007-12-16 02:53:34 +00:00
<extension name= "call_return" >
2007-12-08 19:03:12 +00:00
<condition field= "destination_number" expression= "^\*69$|^869$" >
<action application= "transfer" data= "${db(select/call_return/${caller_id_number})}" />
</condition>
</extension>
<extension name= "del-group" >
<condition field= "destination_number" expression= "^80(\d{2})$" >
<action application= "answer" />
<action application= "group" data= "delete:$1:${sofia_contact(${sip_from_user}@${domain})}" />
<action application= "gentones" data= "%(1000, 0, 320)" />
</condition>
</extension>
2007-12-13 20:19:59 +00:00
<extension name= "add-group" >
<condition field= "destination_number" expression= "^81(\d{2})$" >
<action application= "answer" />
<action application= "group" data= "insert:$1:${sofia_contact(${sip_from_user}@${domain})}" />
<action application= "gentones" data= "%(1000, 0, 640)" />
</condition>
</extension>
2007-12-08 19:03:12 +00:00
<extension name= "call-group-simo" >
<condition field= "destination_number" expression= "^82(\d{2})$" >
<action application= "bridge" data= "${group(call:$1)}" />
</condition>
</extension>
<extension name= "call-group-order" >
<condition field= "destination_number" expression= "^83(\d{2})$" >
<action application= "set" data= "call_timeout=10" />
<action application= "bridge" data= "${group(call:$1:order)}" />
</condition>
</extension>
2007-12-13 17:33:01 +00:00
<extension name= "extension-intercom" >
2008-01-25 19:49:21 +00:00
<!-- <condition field="${sip_to_params}" expression="intercom\=true"/> -->
2007-12-13 17:33:01 +00:00
<condition field= "destination_number" expression= "^8(10[01][0-9])$" >
<action application= "set" data= "dialed_ext=$1" />
2008-03-11 19:05:20 +00:00
<!-- This Alert - Info seems to be a case for Intercom for Polycom which sip_auto_answer=true covers already. -->
<!-- <action application="export"><![CDATA[alert_info=<sip:$${domain}>;Ring;Answer]]></action> -->
2008-01-25 19:49:21 +00:00
<action application= "export" > <![CDATA[sip_h_Call-Info=<sip:$${domain}>;answer-after=0]]> </action>
2008-03-11 19:05:20 +00:00
<action application= "export" data= "sip_invite_params=intercom=true" />
2007-12-27 18:59:49 +00:00
<action application= "export" data= "sip_auto_answer=true" />
2007-12-20 22:49:04 +00:00
<action application= "bridge" data= "user/${dialed_ext}@$${domain}" />
2007-12-13 17:33:01 +00:00
</condition>
</extension>
2007-12-08 19:03:12 +00:00
<!--
if the calling party is the called party, go to their VM
if the calling party is NOT the called party dial the extension
(1000-1019) for 30 seconds and go to voicemail if the
call fails (continue_on_fail=true), otherwise hang up after a
successful bridge (hangup_after-bridge=true)
-->
<extension name= "Local_Extension" >
2008-01-08 21:08:31 +00:00
<condition field= "destination_number" expression= "^(10[01][0-9])$" >
2007-12-08 19:03:12 +00:00
<action application= "set" data= "dialed_ext=$1" />
2008-03-12 15:23:40 +00:00
<action application= "export" data= "dialed_ext=$1" />
2008-05-24 01:27:19 +00:00
<action application= "export" data= "dialed_ext=$1" />
2007-12-08 19:03:12 +00:00
</condition>
<condition field= "destination_number" expression= "^${caller_id_number}$" >
<action application= "set" data= "voicemail_authorized=${sip_authorized}" />
2007-12-13 22:47:06 +00:00
<action application= "answer" />
<action application= "sleep" data= "1000" />
2007-12-08 19:03:12 +00:00
<action application= "voicemail" data= "check default $${domain} ${dialed_ext}" />
2008-05-22 15:07:56 +00:00
<!-- bind_meta_app can have these args <key> [a|b|ab] [a|b|o|s] <app> -->
2008-05-24 01:27:19 +00:00
<anti-action application= "bind_meta_app" data= "1 ${leg_to_bind} s execute_extension::dx XML features" />
<anti-action application= "bind_meta_app" data= "2 ${leg_to_bind} s record_session::$${base_dir}/recordings/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav" />
<anti-action application= "bind_meta_app" data= "3 ${leg_to_bind} s execute_extension::cf XML features" />
2007-12-20 22:49:04 +00:00
<anti-action application= "set" data= "transfer_ringback=${us-ring}" />
<anti-action application= "set" data= "call_timeout=30" />
2008-04-16 14:12:40 +00:00
<!-- <anti - action application="set" data="sip_exclude_contact=${network_addr}"/> -->
2007-12-08 19:03:12 +00:00
<anti-action application= "set" data= "hangup_after_bridge=true" />
2008-05-02 22:21:18 +00:00
<!-- <anti - action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE,USER_BUSY,NO_ANSWER,TIMEOUT,NO_ROUTE_DESTINATION"/> -->
2008-03-18 15:03:34 +00:00
<anti-action application= "set" data= "continue_on_fail=true" />
2007-12-08 19:03:12 +00:00
<anti-action application= "db" data= "insert/call_return/${dialed_ext}/${caller_id_number}" />
<anti-action application= "db" data= "insert/last_dial_ext/${dialed_ext}/${uuid}" />
2007-12-20 22:49:04 +00:00
<anti-action application= "bridge" data= "user/${dialed_ext}@$${domain}" />
2007-12-13 22:47:06 +00:00
<anti-action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <anti - action application="send_display" data="Voicemail for ${dialed_ext}"/> -->
2007-12-13 22:47:06 +00:00
<anti-action application= "sleep" data= "1000" />
2007-12-08 19:03:12 +00:00
<anti-action application= "voicemail" data= "default $${domain} ${dialed_ext}" />
</condition>
</extension>
<!-- dial via SIP uri -->
2007-12-16 02:53:34 +00:00
<extension name= "sip_uri" >
2007-12-08 19:03:12 +00:00
<condition field= "destination_number" expression= "^sip:(.*)$" >
<action application= "bridge" data= "sofia/${use_profile}/$1" />
</condition>
</extension>
<!--
2007-12-21 07:12:26 +00:00
start a dynamic conference with the settings of the "default" conference profile in conference.conf.xml
2007-12-08 19:03:12 +00:00
-->
2008-02-14 18:05:52 +00:00
<extension name= "nb_conferences" >
<condition field= "destination_number" expression= "^(30\d{2})$" >
2008-03-11 04:03:23 +00:00
<action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <action application="send_display" data="8k Conference $1"/> -->
2007-12-08 20:32:33 +00:00
<action application= "conference" data= "$1@default" />
</condition>
2008-02-14 18:05:52 +00:00
</extension>
<extension name= "wb_conferences" >
<condition field= "destination_number" expression= "^(31\d{2})$" >
2008-03-11 04:03:23 +00:00
<action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <action application="send_display" data="16k Conference $1"/> -->
2008-02-14 18:05:52 +00:00
<action application= "conference" data= "$1@wideband" />
</condition>
</extension>
<extension name= "uwb_conferences" >
<condition field= "destination_number" expression= "^(32\d{2})$" >
2008-03-11 04:03:23 +00:00
<action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <action application="send_display" data="32k Conference $1"/> -->
2008-02-14 18:05:52 +00:00
<action application= "conference" data= "$1@ultrawideband" />
</condition>
</extension>
2007-12-08 19:03:12 +00:00
<!-- dial the freeswitch conference via SIP -->
2007-12-15 18:44:27 +00:00
<extension name= "freeswitch_public_conf_via_sip" >
2007-12-16 02:44:54 +00:00
<condition field= "destination_number" expression= "^9(888|1616)$" >
<action application= "bridge" data= "sofia/${use_profile}/$1@conference.freeswitch.org" />
2007-12-08 19:03:12 +00:00
</condition>
</extension>
<!-- a sample IVR -->
2007-12-16 02:53:34 +00:00
<extension name= "ivr_demo" >
2007-12-08 19:03:12 +00:00
<condition field= "destination_number" expression= "5000" >
2008-04-07 16:05:17 +00:00
<action application= "ivr" data= "demo_ivr" />
2007-12-08 19:03:12 +00:00
</condition>
</extension>
2008-01-02 04:04:25 +00:00
2008-01-03 01:29:24 +00:00
<extension name= "rtp_multicast_page" >
2008-01-03 21:34:44 +00:00
<condition field= "destination_number" expression= "^pagegroup$|^7243" >
2008-03-11 04:03:23 +00:00
<action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <action application="send_display" data="Multicast Page"/> -->
2008-01-03 01:29:24 +00:00
<action application= "esf_page_group" />
</condition>
</extension>
2007-12-08 19:03:12 +00:00
<!--
2008-01-01 23:32:09 +00:00
Parking extensions... transferring calls to 5900 will park them in a queue.
2007-12-08 19:03:12 +00:00
-->
<extension name= "park" >
2008-01-01 23:32:09 +00:00
<condition field= "destination_number" expression= "^5900$" >
2008-04-22 14:19:47 +00:00
<action application= "set" data= "fifo_music=$${hold_music}" />
2008-04-04 21:18:16 +00:00
<action application= "fifo" data= "5900@$${domain} in" />
2007-12-08 19:03:12 +00:00
</condition>
</extension>
2008-01-01 23:32:09 +00:00
2007-12-18 23:12:46 +00:00
<!--
2008-01-01 23:32:09 +00:00
Parking pickup extension. Calling 5901 will pickup the call.
2007-12-18 23:12:46 +00:00
-->
2008-01-02 04:04:25 +00:00
<extension name= "unpark" >
2008-01-01 23:32:09 +00:00
<condition field= "destination_number" expression= "^5901$" >
2008-01-04 00:19:09 +00:00
<action application= "answer" />
2008-01-02 04:04:25 +00:00
<action application= "fifo" data= "5900@$${domain} out nowait" />
2007-12-08 19:03:12 +00:00
</condition>
2008-01-01 23:32:09 +00:00
</extension>
2007-12-08 19:31:53 +00:00
2007-12-31 15:22:45 +00:00
<!--
This extension is used with snom phones.
2008-01-02 04:04:25 +00:00
Set a function key to park+lot (lot being a number or name.)
Set type to Park+Orbit. You can then park and pickup using
the softkey on the phone. Should work with other phones.
2007-12-31 15:22:45 +00:00
-->
<extension name= "park" >
2008-01-08 21:08:31 +00:00
<condition field= "source" expression= "mod_sofia" />
<condition field= "destination_number" expression= "park\+(\d+)" >
2008-04-22 14:19:47 +00:00
<action application= "fifo" data= "$1@$${domain} in undef $${hold_music}" />
2007-12-31 15:22:45 +00:00
</condition>
</extension>
2008-01-02 04:04:25 +00:00
<!--
The extension is parking pickup with a to param of the fifo we are calling
Some phones send things like orbit= and you can extract that info.
-->
2007-12-31 15:22:45 +00:00
<extension name= "unpark" >
2008-01-08 21:08:31 +00:00
<condition field= "source" expression= "mod_sofia" />
<condition field= "destination_number" expression= "^parking$" />
2008-01-01 23:32:09 +00:00
<condition field= "${sip_to_params}" expression= "fifo\=(\d+)" >
2007-12-31 15:22:45 +00:00
<action application= "answer" />
2008-01-04 00:19:09 +00:00
<action application= "fifo" data= "$1@$${domain} out nowait" />
2007-12-31 15:22:45 +00:00
</condition>
</extension>
2008-01-02 04:04:25 +00:00
2008-02-11 21:52:38 +00:00
<extension name= "video_record" >
<condition field= "destination_number" expression= "^9993$" >
<action application= "answer" />
<action application= "record_fsv" data= "/tmp/testrecord.fsv" />
</condition>
</extension>
<extension name= "video_playback" >
<condition field= "destination_number" expression= "^9994$" >
<action application= "answer" />
<action application= "play_fsv" data= "/tmp/testrecord.fsv" />
</condition>
</extension>
2008-02-05 23:53:36 +00:00
<extension name= "delay_echo" >
<condition field= "destination_number" expression= "^9995$" >
<action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <action application="send_display" data="Delay Echo Test (5 sec)"/> -->
2008-02-05 23:53:36 +00:00
<action application= "delay_echo" data= "5000" />
</condition>
</extension>
2008-01-16 21:28:20 +00:00
<extension name= "echo" >
<condition field= "destination_number" expression= "^9996$" >
<action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <action application="send_display" data="Echo Test"/> -->
2008-01-16 21:28:20 +00:00
<action application= "echo" />
</condition>
</extension>
2008-01-03 21:34:44 +00:00
<extension name= "milliwatt" >
<condition field= "destination_number" expression= "^9997$" >
<action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <action application="send_display" data="Milliwatt Test"/> -->
2008-01-03 21:34:44 +00:00
<action application= "playback" data= "tone_stream://%(10000,0,1004);loops=-1" />
</condition>
</extension>
2008-01-02 04:30:30 +00:00
<extension name= "tone_stream" >
<condition field= "destination_number" expression= "^9998$" >
<action application= "answer" />
<action application= "playback" data= "tone_stream://path=${base_dir}/conf/tetris.ttml;loops=10" />
</condition>
</extension>
2007-12-11 23:53:13 +00:00
<extension name= "hold_music" >
2008-01-19 19:08:33 +00:00
<condition field= "destination_number" expression= "^9999$" />
<condition field= "${sip_has_crypto}" expression= "^(AES_CM_128_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_80)$" >
2008-01-16 06:07:22 +00:00
<action application= "answer" />
2008-03-12 15:23:40 +00:00
<action application= "execute_extension" data= "is_secure XML features" />
2008-04-22 14:19:47 +00:00
<action application= "playback" data= "$${hold_music}" />
2008-01-19 19:08:33 +00:00
<anti-action application= "answer" />
2008-03-31 14:46:45 +00:00
<!-- <anti - action application="send_display" data="Insecure Music On Hold"/> -->
2008-04-22 14:19:47 +00:00
<anti-action application= "playback" data= "$${hold_music}" />
2008-01-16 06:07:22 +00:00
</condition>
</extension>
2007-12-10 18:03:16 +00:00
<X-PRE-PROCESS cmd= "include" data= "extensions/*.xml" />
2008-02-11 23:26:56 +00:00
<!--
<extension name= "refer" >
2008-02-12 05:31:47 +00:00
<condition field= "${sip_refer_to}" >
<expression > <![CDATA[<sip:${destination_number}@$${domain}>]]> </expression>
</condition>
<condition field= "${sip_refer_to}" >
<expression > <![CDATA[<sip:(.*)@(.*)>]]> </expression>
2008-02-11 23:26:56 +00:00
<action application= "set" data= "refer_user=$1" />
<action application= "set" data= "refer_domain=$2" />
<action application= "info" />
<action application= "bridge" data= "sofia/${use_profile}/${refer_user}@${refer_domain}" />
</condition>
</extension>
-->
<!--
This is an example of how to overide the RURI on an outgoing invite to a registered contact.
-->
<!--
<extension name= "ruri" >
<condition field= "destination_number" expression= "^ruri$" >
<action application= "bridge" data= "sofia/${ruri_profile}/${ruri_user}${regex(${sofia_contact(${ruri_contact})}|^[^\@]+(.*)|%1)}" />
</condition>
</extension>
<extension name= "7004" >
<condition field= "destination_number" expression= "^7004$" >
<action application= "set" data= "ruri_profile=default" />
<action application= "set" data= "ruri_user=2000" />
<action application= "set" data= "ruri_contact=1001@$${domain}" />
<action application= "execute_extension" data= "ruri" />
</condition>
</extension>
-->
2007-12-08 19:31:53 +00:00
<extension name= "enum" >
<condition field= "destination_number" expression= "^(.*)$" >
2007-12-27 22:26:18 +00:00
<action application= "transfer" data= "$1 enum" />
2007-12-08 19:31:53 +00:00
</condition>
</extension>
2008-01-19 19:08:33 +00:00
2007-12-08 19:03:12 +00:00
</context>
</include>