mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-17 08:44:13 +00:00
conf: add config files to module directories
The idea here is that the config files in the module directories will serve as the canonical documentation of all module configuration options.
This commit is contained in:
1 parent
f65140661c
commit
cac6c262bb
83 files changed
+3108
No files matched your search
@@ -0,0 +1,5 @@
|
||||
<configuration name="abstraction.conf" description="Abstraction">
|
||||
<apis>
|
||||
<api name="user_name" description="Return Name for extension" syntax="<exten>" parse="(.*)" destination="user_data" argument="$1@default var effective_caller_id_name"/>
|
||||
</apis>
|
||||
</configuration>
|
||||
@@ -0,0 +1,11 @@
|
||||
<configuration name="mod_blacklist.conf" description="Blacklist module">
|
||||
<lists>
|
||||
<!--
|
||||
Example blacklist, the referenced file contains blacklisted items, one entry per line
|
||||
|
||||
NOTE: make sure the file exists and is readable by FreeSWITCH.
|
||||
|
||||
<list name="example" filename="/usr/local/freeswitch/conf/blacklists/example.list"/>
|
||||
-->
|
||||
</lists>
|
||||
</configuration>
|
||||
@@ -0,0 +1,38 @@
|
||||
<configuration name="callcenter.conf" description="CallCenter">
|
||||
<settings>
|
||||
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
|
||||
<!--<param name="dbname" value="/dev/shm/callcenter.db"/>-->
|
||||
</settings>
|
||||
|
||||
<queues>
|
||||
|
||||
<queue name="support@default">
|
||||
<param name="strategy" value="longest-idle-agent"/>
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<!--<param name="record-template" value="$${base_dir}/recordings/${strftime(%Y-%m-%d-%H-%M-%S)}.${destination_number}.${caller_id_number}.${uuid}.wav"/>-->
|
||||
<param name="time-base-score" value="system"/>
|
||||
<param name="max-wait-time" value="0"/>
|
||||
<param name="max-wait-time-with-no-agent" value="0"/>
|
||||
<param name="max-wait-time-with-no-agent-time-reached" value="5"/>
|
||||
<param name="tier-rules-apply" value="false"/>
|
||||
<param name="tier-rule-wait-second" value="300"/>
|
||||
<param name="tier-rule-wait-multiply-level" value="true"/>
|
||||
<param name="tier-rule-no-agent-no-wait" value="false"/>
|
||||
<param name="discard-abandoned-after" value="60"/>
|
||||
<param name="abandoned-resume-allowed" value="false"/>
|
||||
</queue>
|
||||
|
||||
</queues>
|
||||
|
||||
<!-- WARNING: Configuration of XML Agents will be updated into the DB upon restart. -->
|
||||
<!-- WARNING: Configuration of XML Tiers will reset the level and position if those were supplied. -->
|
||||
<!-- WARNING: Agents and Tiers XML config shouldn't be used in a multi FS shared DB setup (Not currently supported anyway) -->
|
||||
<agents>
|
||||
<!--<agent name="1000@default" type="callback" contact="[call_timeout=10]user/1000@default" status="Available" max-no-answer="3" wrap-up-time="10" reject-delay-time="10" busy-delay-time="60" />-->
|
||||
</agents>
|
||||
<tiers>
|
||||
<!-- If no level or position is provided, they will default to 1. You should do this to keep db value on restart. -->
|
||||
<!-- <tier agent="1000@default" queue="support@default" level="1" position="1"/> -->
|
||||
</tiers>
|
||||
|
||||
</configuration>
|
||||
@@ -0,0 +1,33 @@
|
||||
<configuration name="cidlookup.conf" description="cidlookup Configuration">
|
||||
<settings>
|
||||
<!-- comment out url to not setup a url based lookup -->
|
||||
<param name="url" value="http://query.voipcnam.com/query.php?api_key=MYAPIKEY&number=${caller_id_number}"/>
|
||||
|
||||
<!-- comment out whitepages-apikey to not use whitepages.com, you must
|
||||
get an API key from http://developer.whitepages.com/ -->
|
||||
<param name="whitepages-apikey" value="MYAPIKEY"/>
|
||||
|
||||
<!-- set to false to not cache (in memcache) results from the url query -->
|
||||
<param name="cache" value="true"/>
|
||||
<!-- expire is in seconds -->
|
||||
<param name="cache-expire" value="86400"/>
|
||||
|
||||
<param name="odbc-dsn" value="phone:phone:phone"/>
|
||||
|
||||
<!-- comment out sql to not setup a database (directory) lookup -->
|
||||
<param name="sql" value="
|
||||
SELECT name||' ('||type||')' AS name
|
||||
FROM phonebook p JOIN numbers n ON p.id = n.phonebook_id
|
||||
WHERE n.number='${caller_id_number}'
|
||||
LIMIT 1
|
||||
"/>
|
||||
<!-- comment out citystate-sql to not setup a database (city/state)
|
||||
lookup -->
|
||||
<param name="citystate-sql" value="
|
||||
SELECT ratecenter||' '||state as name
|
||||
FROM npa_nxx_company_ocn
|
||||
WHERE npa = ${caller_id_number:1:3} AND nxx = ${caller_id_number:4:3}
|
||||
LIMIT 1
|
||||
"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,209 @@
|
||||
<!-- http://wiki.freeswitch.org/wiki/Mod_conference -->
|
||||
<!-- None of these paths are real if you want any of these options you need to really set them up -->
|
||||
<configuration name="conference.conf" description="Audio Conference">
|
||||
<!-- Advertise certain presence on startup . -->
|
||||
<advertise>
|
||||
<room name="3001@$${domain}" status="FreeSWITCH"/>
|
||||
</advertise>
|
||||
|
||||
<!-- These are the default keys that map when you do not specify a caller control group -->
|
||||
<!-- Note: none and default are reserved names for group names. Disabled if dist-dtmf member flag is set. -->
|
||||
<caller-controls>
|
||||
<group name="default">
|
||||
<control action="mute" digits="0"/>
|
||||
<control action="deaf mute" digits="*"/>
|
||||
<control action="energy up" digits="9"/>
|
||||
<control action="energy equ" digits="8"/>
|
||||
<control action="energy dn" digits="7"/>
|
||||
<control action="vol talk up" digits="3"/>
|
||||
<control action="vol talk zero" digits="2"/>
|
||||
<control action="vol talk dn" digits="1"/>
|
||||
<control action="vol listen up" digits="6"/>
|
||||
<control action="vol listen zero" digits="5"/>
|
||||
<control action="vol listen dn" digits="4"/>
|
||||
<control action="hangup" digits="#"/>
|
||||
</group>
|
||||
</caller-controls>
|
||||
|
||||
<!-- Profiles are collections of settings you can reference by name. -->
|
||||
<profiles>
|
||||
<!--If no profile is specified it will default to "default"-->
|
||||
<profile name="default">
|
||||
<!-- Directory to drop CDR's
|
||||
'auto' means $PREFIX/logs/conference_cdr/<confernece_uuid>.cdr.xml
|
||||
a non-absolute path means $PREFIX/logs/<value>/<confernece_uuid>.cdr.xml
|
||||
absolute path means <value>/<confernece_uuid>.cdr.xml
|
||||
-->
|
||||
<!-- <param name="cdr-log-dir" value="auto"/> -->
|
||||
|
||||
<!-- Domain (for presence) -->
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<!-- Sample Rate-->
|
||||
<param name="rate" value="8000"/>
|
||||
<!-- Number of milliseconds per frame -->
|
||||
<param name="interval" value="20"/>
|
||||
<!-- Energy level required for audio to be sent to the other users -->
|
||||
<param name="energy-level" value="300"/>
|
||||
|
||||
<!--Can be | delim of waste|mute|deaf|dist-dtmf waste will always transmit data to each channel
|
||||
even during silence. dist-dtmf propagates dtmfs to all other members, but channel controls
|
||||
via dtmf will be disabled. -->
|
||||
<!--<param name="member-flags" value="waste"/>-->
|
||||
|
||||
<!-- Name of the caller control group to use for this profile -->
|
||||
<!-- <param name="caller-controls" value="some name"/> -->
|
||||
<!-- Name of the caller control group to use for the moderator in this profile -->
|
||||
<!-- <param name="moderator-controls" value="some name"/> -->
|
||||
<!-- TTS Engine to use -->
|
||||
<!--<param name="tts-engine" value="cepstral"/>-->
|
||||
<!-- TTS Voice to use -->
|
||||
<!--<param name="tts-voice" value="david"/>-->
|
||||
|
||||
<!-- If TTS is enabled all audio-file params beginning with -->
|
||||
<!-- 'say:' will be considered text to say with TTS -->
|
||||
<!-- Override the default path here, after which you use relative paths in the other sound params -->
|
||||
<!-- Note: The default path is the conference's first caller's sound_prefix -->
|
||||
<!--<param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/>-->
|
||||
<!-- File to play to acknowledge succees -->
|
||||
<!--<param name="ack-sound" value="beep.wav"/>-->
|
||||
<!-- File to play to acknowledge failure -->
|
||||
<!--<param name="nack-sound" value="beeperr.wav"/>-->
|
||||
<!-- File to play to acknowledge muted -->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<!-- File to play to acknowledge unmuted -->
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<!-- File to play if you are alone in the conference -->
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<!-- File to play endlessly (nobody will ever be able to talk) -->
|
||||
<!--<param name="perpetual-sound" value="perpetual.wav"/>-->
|
||||
<!-- File to play when you're alone (music on hold)-->
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<!-- File to play when you join the conference -->
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<!-- File to play when you leave the conference -->
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<!-- File to play when you ae ejected from the conference -->
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<!-- File to play when the conference is locked -->
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<!-- File to play when the conference is locked during the call-->
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<!-- File to play when the conference is unlocked during the call-->
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<!-- File to play to prompt for a pin -->
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<!-- File to play to when the pin is invalid -->
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<!-- Conference pin -->
|
||||
<!--<param name="pin" value="12345"/>-->
|
||||
<!--<param name="moderator-pin" value="54321"/>-->
|
||||
<!-- Max number of times the user can be prompted for PIN -->
|
||||
<!--<param name="pin-retries" value="3"/>-->
|
||||
<!-- Default Caller ID Name for outbound calls -->
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<!-- Default Caller ID Number for outbound calls -->
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<!-- Suppress start and stop talking events -->
|
||||
<!-- <param name="suppress-events" value="start-talking,stop-talking"/> -->
|
||||
<!-- enable comfort noise generation -->
|
||||
<param name="comfort-noise" value="true"/>
|
||||
<!-- Uncomment auto-record to toggle recording every conference call. -->
|
||||
<!-- Another valid value is shout://user:pass@server.com/live.mp3 -->
|
||||
<!--
|
||||
<param name="auto-record" value="$${recordings_dir}/${conference_name}_${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
|
||||
-->
|
||||
|
||||
<!-- IVR digit machine timeouts -->
|
||||
<!-- How much to wait between DTMF digits to match caller-controls -->
|
||||
<!-- <param name="ivr-dtmf-timeout" value="500"/> -->
|
||||
<!-- How much to wait for the first DTMF, 0 forever -->
|
||||
<!-- <param name="ivr-input-timeout" value="0" /> -->
|
||||
<!-- Delay before a conference is asked to be terminated -->
|
||||
<!-- <param name="endconf-grace-time" value="120" /> -->
|
||||
</profile>
|
||||
|
||||
<profile name="wideband">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="16000"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="energy-level" value="300"/>
|
||||
<!--<param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/>-->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
<!--<param name="tts-engine" value="flite"/>-->
|
||||
<!--<param name="tts-voice" value="kal16"/>-->
|
||||
</profile>
|
||||
|
||||
<profile name="ultrawideband">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="32000"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="energy-level" value="300"/>
|
||||
<!--<param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/>-->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
<!--<param name="tts-engine" value="flite"/>-->
|
||||
<!--<param name="tts-voice" value="kal16"/>-->
|
||||
</profile>
|
||||
|
||||
<profile name="cdquality">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="48000"/>
|
||||
<param name="interval" value="10"/>
|
||||
<param name="energy-level" value="300"/>
|
||||
<!--<param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/>-->
|
||||
<param name="muted-sound" value="conference/conf-muted.wav"/>
|
||||
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
|
||||
<param name="alone-sound" value="conference/conf-alone.wav"/>
|
||||
<param name="moh-sound" value="$${hold_music}"/>
|
||||
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
|
||||
<param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
|
||||
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
|
||||
<param name="locked-sound" value="conference/conf-locked.wav"/>
|
||||
<param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
|
||||
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
|
||||
<param name="pin-sound" value="conference/conf-pin.wav"/>
|
||||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<param name="caller-id-number" value="$${outbound_caller_id}"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
</profile>
|
||||
|
||||
<profile name="sla">
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<param name="rate" value="16000"/>
|
||||
<param name="interval" value="20"/>
|
||||
<param name="caller-controls" value="none"/>
|
||||
<param name="energy-level" value="200"/>
|
||||
<param name="moh-sound" value="silence"/>
|
||||
<param name="comfort-noise" value="true"/>
|
||||
</profile>
|
||||
|
||||
</profiles>
|
||||
</configuration>
|
||||
@@ -0,0 +1,31 @@
|
||||
<!--
|
||||
start a dynamic conference with the settings of the "default" conference profile in conference.conf.xml
|
||||
-->
|
||||
<extension name="nb_conferences">
|
||||
<condition field="destination_number" expression="^(30\d{2})$">
|
||||
<action application="answer"/>
|
||||
<action application="conference" data="$1-${domain_name}@default"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="wb_conferences">
|
||||
<condition field="destination_number" expression="^(31\d{2})$">
|
||||
<action application="answer"/>
|
||||
<action application="conference" data="$1-${domain_name}@wideband"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="uwb_conferences">
|
||||
<condition field="destination_number" expression="^(32\d{2})$">
|
||||
<action application="answer"/>
|
||||
<action application="conference" data="$1-${domain_name}@ultrawideband"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<!-- MONO 48kHz conferences -->
|
||||
<extension name="cdquality_conferences">
|
||||
<condition field="destination_number" expression="^(33\d{2})$">
|
||||
<action application="answer"/>
|
||||
<action application="conference" data="$1-${domain_name}@cdquality"/>
|
||||
</condition>
|
||||
</extension>
|
||||
@@ -0,0 +1,5 @@
|
||||
<configuration name="db.conf" description="LIMIT DB Configuration">
|
||||
<settings>
|
||||
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,10 @@
|
||||
<configuration name="distributor.conf" description="Distributor Configuration">
|
||||
<lists>
|
||||
<!-- every 10 calls to test you will get foo1 once and foo2 9 times...yes NINE TIMES! -->
|
||||
<!-- this is not the same as 100 with 10 and 90 that would do foo1 10 times in a row then foo2 90 times in a row -->
|
||||
<list name="test" total-weight="10">
|
||||
<node name="foo1" weight="1"/>
|
||||
<node name="foo2" weight="9"/>
|
||||
</list>
|
||||
</lists>
|
||||
</configuration>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<include>
|
||||
<extension name="test gateway distro">
|
||||
<condition field="destination_number" expression="^(.*)$">
|
||||
<action application="bridge" data="sofia/gateway/${distributor(test)}/$1"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,28 @@
|
||||
<configuration name="easyroute.conf" description="EasyRoute Module">
|
||||
<settings>
|
||||
<!-- These are kind Obvious -->
|
||||
<param name="db-username" value="root"/>
|
||||
<param name="db-password" value="password"/>
|
||||
<param name="db-dsn" value="easyroute"/>
|
||||
|
||||
<!-- Default Technology and profile -->
|
||||
<param name="default-techprofile" value="sofia/default"/>
|
||||
|
||||
<!-- IP or Hostname of Default Route -->
|
||||
<param name="default-gateway" value="192.168.66.6"/>
|
||||
|
||||
<!-- Number of times to retry ODBC connection on connection problems, default is 120 -->
|
||||
<param name="odbc-retries" value="120"/>
|
||||
|
||||
<!-- Customer Query. Use this with Care!!! We are not responsible if you mess
|
||||
This up!!! Query *MUST* return columns in the following order!
|
||||
gateway varchar(128) - contains destination gateway host:port pair (ex: 192.168.1.1:5060 )
|
||||
group varchar(128) - contains optional group name
|
||||
call_limit varchar(16) - contains optional call limit
|
||||
tech_prefix varchar(128) - tech prefix used to build dial string (ex: sofia/default )
|
||||
acctcode varchar(128) - used to set channel variable acctcode for logging into the CDRs
|
||||
destination_number varchar(16) - Number returning for the query for building the dial string. (ex: 18005551212)
|
||||
See Documentation on the Wiki for further information -->
|
||||
<!-- <param name="custom-query" value="call FS_GET_SIP_LOCATION(%s);"/> -->
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<include>
|
||||
<!-- This example will test the limit value for the DID number being checked -->
|
||||
<!-- If over limit, send 503 -->
|
||||
<extension name="easyroute">
|
||||
<condition field="destination_number" expression="^1?(\d{10})$" break="on-true">
|
||||
<action application="easyroute" data="$1"/>
|
||||
<action application="limit" data="db easyroute ${easy_group} ${easy_limit} LE-$1"/>
|
||||
<action application="bridge" data="${easy_dialstring}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="easyroute_limit_exceeded">
|
||||
<condition field="destination_number" expression="^LE-(\d{10})$" break="on-true">
|
||||
<action application="respond" data="503 Buzz Off You Ran Out of Channels"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<!-- Simple example - just grab the dialstring and send the call -->
|
||||
<extension name="easyroute">
|
||||
<condition field="destination_number" expression="^1?(\d{10})$" break="on-true">
|
||||
<action application="set" data="dialstring={easyroute($1 dialstring)"/>
|
||||
<action application="bridge" data="${easy_dialstring}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<include>
|
||||
@@ -0,0 +1,13 @@
|
||||
<configuration name="enum.conf" description="ENUM Module">
|
||||
<settings>
|
||||
<param name="default-root" value="e164.org"/>
|
||||
<param name="default-isn-root" value="freenum.org"/>
|
||||
<param name="query-timeout" value="10"/>
|
||||
<param name="auto-reload" value="true"/>
|
||||
</settings>
|
||||
|
||||
<routes>
|
||||
<route service="E2U+SIP" regex="sip:(.*)" replace="sofia/${use_profile}/$1"/>
|
||||
<!--<route service="E2U+XMPP" regex="XMPP:(.*)" replace="dingaling/$${xmpp_server_profile}/$1"/>-->
|
||||
</routes>
|
||||
</configuration>
|
||||
@@ -0,0 +1,8 @@
|
||||
<include>
|
||||
<extension name="enum">
|
||||
<condition field="${module_exists(mod_enum)}" expression="true"/>
|
||||
<condition field="destination_number" expression="^(.*)$">
|
||||
<action application="transfer" data="$1 enum"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,10 @@
|
||||
<configuration name="fifo.conf" description="FIFO Configuration">
|
||||
<settings>
|
||||
<param name="delete-all-outbound-member-on-startup" value="false"/>
|
||||
</settings>
|
||||
<fifos>
|
||||
<fifo name="cool_fifo@$${domain}" importance="0">
|
||||
<!--<member timeout="60" simo="1" lag="20">{member_wait=nowait}user/1005@$${domain}</member>-->
|
||||
</fifo>
|
||||
</fifos>
|
||||
</configuration>
|
||||
@@ -0,0 +1,19 @@
|
||||
<!--
|
||||
Parking extensions... transferring calls to 5900 will park them in a queue.
|
||||
-->
|
||||
<extension name="park">
|
||||
<condition field="destination_number" expression="^5900$">
|
||||
<action application="set" data="fifo_music=$${hold_music}"/>
|
||||
<action application="fifo" data="5900@${domain_name} in"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<!--
|
||||
Parking pickup extension. Calling 5901 will pickup the call.
|
||||
-->
|
||||
<extension name="unpark">
|
||||
<condition field="destination_number" expression="^5901$">
|
||||
<action application="answer"/>
|
||||
<action application="fifo" data="5900@${domain_name} out nowait"/>
|
||||
</condition>
|
||||
</extension>
|
||||
@@ -0,0 +1,6 @@
|
||||
<configuration name="hash.conf" description="Hash Configuration">
|
||||
<remotes>
|
||||
<!-- List of hosts from where to pull usage data -->
|
||||
<!-- <remote name="Test1" host="10.0.0.10" port="8021" password="ClueCon" interval="1000" /> -->
|
||||
</remotes>
|
||||
</configuration>
|
||||
@@ -0,0 +1,7 @@
|
||||
<extension name="hash_demo">
|
||||
<condition field="destination_number" expression="^hash_demo$">
|
||||
<action application="hash" data="insert/realm/key/value"/>
|
||||
<action application="hash" data="delete/realm/key"/>
|
||||
<action application="set" data="var=${hash(select/realm/key)}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,8 @@
|
||||
<configuration name="http_cache.conf" description="HTTP GET cache">
|
||||
<settings>
|
||||
<param name="max-urls" value="10000"/>
|
||||
<param name="location" value="$${base_dir}/http_cache"/>
|
||||
<param name="default-max-age" value="86400"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<include>
|
||||
<extension "http_cache_demo">
|
||||
<condition field="destination_number" expression="^(.*)$">
|
||||
<action application="playback" data="${http_get(http://myserver.yo/media/hello_world.wav)}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,77 @@
|
||||
<include>
|
||||
|
||||
<X-PRE-PROCESS cmd="set" data="AT_EPENT1=0 0 0 -1 -1 0 -1 0 -1 -1 0 -1"/>
|
||||
<X-PRE-PROCESS cmd="set" data="AT_EPENT2=1 1 1 -1 -1 1 -1 1 -1 -1 1 -1"/>
|
||||
<X-PRE-PROCESS cmd="set" data="AT_CPENT1=0 -1 -1 0 -1 0 0 0 -1 -1 0 -1"/>
|
||||
<X-PRE-PROCESS cmd="set" data="AT_CPENT2=1 -1 -1 1 -1 1 1 1 -1 -1 1 -1"/>
|
||||
<X-PRE-PROCESS cmd="set" data="AT_CMAJ1=0 -1 0 0 -1 0 -1 0 0 -1 0 -1"/>
|
||||
<X-PRE-PROCESS cmd="set" data="AT_CMAJ2=1 -1 1 1 -1 1 -1 1 1 -1 1 -1"/>
|
||||
<X-PRE-PROCESS cmd="set" data="AT_BBLUES=1 -1 1 -1 -1 1 -1 1 1 1 -1 -1"/>
|
||||
<X-PRE-PROCESS cmd="set" data="ATGPENT2=-1 1 -1 1 -1 1 -1 -1 1 -1 1 -1"/>
|
||||
|
||||
<extension name="101">
|
||||
<condition field="destination_number" expression="^101$">
|
||||
<!-- AUTOTALENT DEFAULTS -->
|
||||
|
||||
<!--
|
||||
<action application="set" data="AT_TUNE=440"/>
|
||||
<action application="set" data="AT_FIXED=0"/>
|
||||
<action application="set" data="AT_PULL=0"/>
|
||||
<action application="set" data="AT_A=0"/>
|
||||
<action application="set" data="AT_Bb=-1"/>
|
||||
<action application="set" data="AT_B=0"/>
|
||||
<action application="set" data="AT_C=0"/>
|
||||
<action application="set" data="AT_Db=-1"/>
|
||||
<action application="set" data="AT_D=0"/>
|
||||
<action application="set" data="AT_Eb=-1"/>
|
||||
<action application="set" data="AT_E=0"/>
|
||||
<action application="set" data="AT_F=0"/>
|
||||
<action application="set" data="AT_Gb=-1"/>
|
||||
<action application="set" data="AT_G=0"/>
|
||||
<action application="set" data="AT_Ab=-1"/>
|
||||
<action application="set" data="AT_AMOUNT=1"/>
|
||||
<action application="set" data="AT_SMOOTH=0"/>
|
||||
<action application="set" data="AT_SHIFT=0"/>
|
||||
<action application="set" data="AT_OUTSCALE=0"/>
|
||||
<action application="set" data="AT_LFODEPTH=0"/>
|
||||
<action application="set" data="AT_LFORATE=5"/>
|
||||
<action application="set" data="AT_LFOSHAPE=0"/>
|
||||
<action application="set" data="AT_LFOSYMM=0"/>
|
||||
<action application="set" data="AT_LFOQUANT=0"/>
|
||||
<action application="set" data="AT_FCORR=0"/>
|
||||
<action application="set" data="AT_FWARP=0"/>
|
||||
<action application="set" data="AT_MIX=1"/>
|
||||
-->
|
||||
|
||||
|
||||
<action application="set" data="AT_TUNE=440"/>
|
||||
<action application="set" data="AT_FIXED=0"/>
|
||||
<action application="set" data="AT_PULL=0"/>
|
||||
|
||||
<action application="set" data="AT_AMOUNT=1"/>
|
||||
<action application="set" data="AT_SMOOTH=0"/>
|
||||
<action application="set" data="AT_SHIFT=1"/>
|
||||
<action application="set" data="AT_OUTSCALE=0"/>
|
||||
<action application="set" data="AT_LFODEPTH=0"/>
|
||||
<action application="set" data="AT_LFORATE=5"/>
|
||||
<action application="set" data="AT_LFOSHAPE=0"/>
|
||||
<action application="set" data="AT_LFOSYMM=0"/>
|
||||
<action application="set" data="AT_LFOQUANT=0"/>
|
||||
<action application="set" data="AT_FCORR=0"/>
|
||||
<action application="set" data="AT_FWARP=0"/>
|
||||
<action application="set" data="AT_MIX=1"/>
|
||||
|
||||
<!-- you have to download the ladspa package and the desired plugins from their desired site -->
|
||||
|
||||
|
||||
<action application="set"><![CDATA[ladspa_params=${AT_TUNE} ${AT_FIXED} ${AT_PULL} ${AT_EPENT2} ${AT_AMOUNT} ${AT_SMOOTH} ${AT_SHIFT} ${AT_OUTSCALE} ${AT_LFODEPTH} ${AT_LFORATE} ${AT_LFOSHAPE} ${AT_LFOSYMM} ${AT_LFOQUANT} ${AT_FCORR} ${AT_FWARP} ${AT_MIX}]]></action>
|
||||
|
||||
<action application="ladspa_run" data="r|autotalent||${ladspa_params}"/>
|
||||
<action application="ladspa_run" data="r|tap_chorusflanger||"/>
|
||||
<action application="ladspa_run" data="r|phasers_1217.so|autoPhaser|"/>
|
||||
<action application="bridge" data="sofia/internal/888@conference.freeswitch.org"/>
|
||||
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
</include>
|
||||
@@ -0,0 +1,4 @@
|
||||
mod_ladspa is a module that allow to use Linux Audio Developer's Simple Plugin API inside freeswitch in realtime.
|
||||
see http://wiki.freeswitch.org/wiki/Mod_ladspa for installation and configuration documentation.
|
||||
|
||||
Please Note Currently this module only works on Linux.
|
||||
@@ -0,0 +1,89 @@
|
||||
<configuration name="lcr.conf" description="LCR Configuration">
|
||||
<settings>
|
||||
<param name="odbc-dsn" value="freeswitch-mysql:freeswitch:Fr33Sw1tch"/>
|
||||
<!-- <param name="odbc-dsn" value="freeswitch-pgsql:freeswitch:Fr33Sw1tch"/> -->
|
||||
</settings>
|
||||
<profiles>
|
||||
<profile name="default">
|
||||
<param name="id" value="0"/>
|
||||
<param name="order_by" value="rate,quality,reliability"/>
|
||||
</profile>
|
||||
<profile name="qual_rel">
|
||||
<param name="id" value="1"/>
|
||||
<param name="order_by" value="quality,reliability"/>
|
||||
</profile>
|
||||
<profile name="rel_qual">
|
||||
<param name="id" value="2"/>
|
||||
<param name="order_by" value="reliability,quality"/>
|
||||
</profile>
|
||||
<!--
|
||||
Some samples of how to do custom SQL:
|
||||
|
||||
=============================================================
|
||||
PostgreSQL with contrib prefix module which supports fast
|
||||
prefix queries. Ideal option.
|
||||
=============================================================
|
||||
<profile name="pg_prefix">
|
||||
<param name="custom_sql" value="
|
||||
SELECT l.digits AS lcr_digits,
|
||||
c.carrier_name AS lcr_carrier_name,
|
||||
l.${lcr_rate_field} as lcr_rate_field,
|
||||
cg.prefix AS lcr_gw_prefix, cg.suffix AS lcr_gw_suffix,
|
||||
l.lead_strip AS lcr_lead_strip, l.trail_strip AS lcr_trail_strip,
|
||||
l.prefix AS lcr_prefix, l.suffix AS lcr_suffix
|
||||
FROM lcr l
|
||||
JOIN carriers c ON l.carrier_id=c.id
|
||||
JOIN carrier_gateway cg ON c.id=cg.carrier_id
|
||||
WHERE c.enabled = '1' AND cg.enabled = '1' AND l.enabled = '1'
|
||||
AND digits_prefix @> %q
|
||||
AND CURRENT_TIMESTAMP BETWEEN date_start AND date_end
|
||||
ORDER BY digits DESC, ${lcr_rate_field}, random();
|
||||
"/>
|
||||
</profile>
|
||||
|
||||
=============================================================
|
||||
PostgreSQL with contrib prefix module which supports fast
|
||||
prefix queries. Ideal option. Alternate syntax which requies
|
||||
a session but allows variable substitution.
|
||||
=============================================================
|
||||
<profile name="pg_prefix2">
|
||||
<param name="custom_sql" value="
|
||||
SELECT l.digits AS lcr_digits,
|
||||
c.carrier_name AS lcr_carrier_name,
|
||||
l.${lcr_rate_field} as lcr_rate_field,
|
||||
cg.prefix AS lcr_gw_prefix, cg.suffix AS lcr_gw_suffix,
|
||||
l.lead_strip AS lcr_lead_strip, l.trail_strip AS lcr_trail_strip,
|
||||
l.prefix AS lcr_prefix, l.suffix AS lcr_suffix
|
||||
FROM lcr l
|
||||
JOIN carriers c ON l.carrier_id=c.id
|
||||
JOIN carrier_gateway cg ON c.id=cg.carrier_id
|
||||
WHERE c.enabled = '1' AND cg.enabled = '1' AND l.enabled = '1'
|
||||
AND digits_prefix @> '${lcr_query_digits}'
|
||||
AND CURRENT_TIMESTAMP BETWEEN date_start AND date_end
|
||||
ORDER BY digits DESC, ${lcr_rate_field}, random();
|
||||
"/>
|
||||
</profile>
|
||||
|
||||
=============================================================
|
||||
Demonstrates use of computed inlist.
|
||||
=============================================================
|
||||
<profile name="inlist">
|
||||
<param name="custom_sql" value="
|
||||
SELECT l.digits AS lcr_digits,
|
||||
c.carrier_name AS lcr_carrier_name,
|
||||
l.${lcr_rate_field} as lcr_rate_field,
|
||||
cg.prefix AS lcr_gw_prefix, cg.suffix AS lcr_gw_suffix,
|
||||
l.lead_strip AS lcr_lead_strip, l.trail_strip AS lcr_trail_strip,
|
||||
l.prefix AS lcr_prefix, l.suffix AS lcr_suffix
|
||||
FROM lcr l
|
||||
JOIN carriers c ON l.carrier_id=c.id
|
||||
JOIN carrier_gateway cg ON c.id=cg.carrier_id
|
||||
WHERE c.enabled = '1' AND cg.enabled = '1' AND l.enabled = '1'
|
||||
AND digits IN (${lcr_query_expanded_digits})
|
||||
AND CURRENT_TIMESTAMP BETWEEN date_start AND date_end
|
||||
ORDER BY digits DESC, ${lcr_rate_field}, random();
|
||||
"/>
|
||||
</profile>
|
||||
-->
|
||||
</profiles>
|
||||
</configuration>
|
||||
@@ -0,0 +1,8 @@
|
||||
<include>
|
||||
<extension name="Outbound to PSTN 11 Digits">
|
||||
<condition field="destination_number" expression="^(1[2-9][0-9]{2}[2-9]{7})$">
|
||||
<action application="lcr" data="$1"/>
|
||||
<action application="bridge" data="${lcr_auto_route}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,5 @@
|
||||
<configuration name="limit.conf" description="LIMIT Configuration">
|
||||
<settings>
|
||||
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,14 @@
|
||||
<include>
|
||||
<extension name="limit_exceeded">
|
||||
<condition field="destination_number" expression="^limit_exceeded$">
|
||||
<action application="playback" data="/sounds/overthelimit.wav"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="limit" continue="true">
|
||||
<condition>
|
||||
<action application="limit" data="db $${domain} ${sip_auth_username} ${max_calls}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,6 @@
|
||||
<configuration name="memcache.conf" description="memcache Configuration">
|
||||
<settings>
|
||||
<!-- comma sep list of servers: eg: localhost,otherhost:port,anotherone -->
|
||||
<param name="memcache-servers" value="localhost"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,9 @@
|
||||
<include>
|
||||
<extension name="memcache_examples">
|
||||
<condition field="destination_number" expression="^memcache$">
|
||||
<action application="set" data="foo=${memcache(get key)}"/>
|
||||
<action application="set" data="ignore=${memcache(set key value)}"/>
|
||||
<action application="set" data="ignore=${memcache(set key ${channel_var})}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,20 @@
|
||||
<configuration name="mongo.conf">
|
||||
<settings>
|
||||
<!--
|
||||
connection-string handles different ways to connect to mongo
|
||||
samples:
|
||||
server:port
|
||||
foo/server:port,server:port SET
|
||||
-->
|
||||
<param name="connection-string" value="127.0.0.1:27017"/>
|
||||
<param name="min-connections" value="10"/>
|
||||
<param name="max-connections" value="100"/>
|
||||
|
||||
<!--
|
||||
<param name="map" value="function() { emit(this.a, 1); }"/>
|
||||
<param name="reduce" value="function(key, values) { return Array.sum(values); }"/>
|
||||
<param name="finalize" value="function(key, value) { return value;}"/>
|
||||
-->
|
||||
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,50 @@
|
||||
<configuration name="nibblebill.conf" description="Nibble Billing">
|
||||
<settings>
|
||||
<!-- See http://wiki.freeswitch.org/wiki/Mod_nibblebill for help with these options -->
|
||||
|
||||
<!-- Information for connecting to your database -->
|
||||
<param name="db_username" value="bandwidth.com"/>
|
||||
<param name="db_password" value="password"/>
|
||||
<param name="db_dsn" value="bandwidth.com"/>
|
||||
|
||||
<!-- The database table where your CASH column is located -->
|
||||
<param name="db_table" value="accounts"/>
|
||||
|
||||
<!-- The column name where we store the value of the account -->
|
||||
<param name="db_column_cash" value="cash"/>
|
||||
|
||||
<!-- The column name for the unique ID identifying the account -->
|
||||
<param name="db_column_account" value="id"/>
|
||||
|
||||
<!-- Custom SQL for loading current balance - overrides column names
|
||||
channel vars are interpreted.
|
||||
field nibble_balance is used for balance info
|
||||
|
||||
<param name="custom_sql_lookup" value="SELECT cash AS nibble_balance FROM accounts WHERE account_code='${nibble_account}'"/>
|
||||
-->
|
||||
|
||||
<!-- Custom SQL for loading current balance - overrides column names
|
||||
channel vars are interpreted.
|
||||
nibble_increment is the amount to update
|
||||
|
||||
<param name="custom_sql_save" value="UPDATE accounts SET cash=cash-${nibble_increment} WHERE account_code='${nibble_account}'"/>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Default heartbeat interval. Set to 'off' for no heartbeat (i.e. bill only at end of call) -->
|
||||
<param name="global_heartbeat" value="60"/>
|
||||
|
||||
<!-- By default, warn a caller when their balance is at $5.00. You can set this to a negative number. -->
|
||||
<param name="lowbal_amt" value="5"/>
|
||||
<param name="lowbal_action" value="play ding"/>
|
||||
|
||||
<!-- By default, terminate a caller when their balance hits $0.00. You can set this to a negative number. -->
|
||||
<param name="nobal_amt" value="0"/>
|
||||
<param name="nobal_action" value="hangup"/>
|
||||
|
||||
<!-- If a call goes beyond a certain dollar amount, flag or terminate it -->
|
||||
<param name="percall_max_amt" value="100"/>
|
||||
<param name="percall_action" value="hangup"/>
|
||||
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,27 @@
|
||||
<include>
|
||||
|
||||
<extension name="tollfree800">
|
||||
<condition field="destination_number" expression="^1{0,1}(800\d{7})$">
|
||||
<action application="set" data="nibble_account=${accountcode}"/>
|
||||
<action application="set" data="nibble_rate=0"/>
|
||||
<action application="bridge" data="sofia/gateway/bandwidth.com/$1"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="special919rate">
|
||||
<condition field="destination_number" expression="^1{0,1}(919\d{7})$">
|
||||
<action application="set" data="nibble_account=${accountcode}"/>
|
||||
<action application="set" data="nibble_rate=0.07"/>
|
||||
<action application="bridge" data="sofia/gateway/bandwidth.com/$1"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="domestic">
|
||||
<condition field="destination_number" expression="^(1{0,1}\d{10})$">
|
||||
<action application="set" data="nibble_account=${accountcode}"/>
|
||||
<action application="set" data="nibble_rate=0.05"/>
|
||||
<action application="bridge" data="sofia/gateway/bandwidth.com/$1"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
</include>
|
||||
@@ -0,0 +1,53 @@
|
||||
<configuration name="osp.conf" description="OSP Module Configuration">
|
||||
<settings>
|
||||
<!-- Debug info flag -->
|
||||
<param name="debug-info" value="disabled"/>
|
||||
<!-- Log level for debug info -->
|
||||
<param name="log-level" value="info"/>
|
||||
<!-- Crypto hareware accelerate is disabled by default -->
|
||||
<param name="crypto-hardware" value="disabled"/>
|
||||
<!-- SIP settings -->
|
||||
<param name="sip" module="sofia" profile="external"/>
|
||||
<!-- H.323 settings -->
|
||||
<!-- <param name="h323" module="h323" profile="external"/> -->
|
||||
<!-- IAX settings -->
|
||||
<!-- <param name="iax" module="iax" profile="external"/> -->
|
||||
<!-- Skype settings -->
|
||||
<!-- <param name="skype" module="skypopen" profile="external"/> -->
|
||||
<!-- Default destination protocol -->
|
||||
<param name="default-protocol" value="sip"/>
|
||||
</settings>
|
||||
|
||||
<profiles>
|
||||
<!-- Default OSP profile -->
|
||||
<profile name="default">
|
||||
<!-- Service point URLs, up to 8 allowed -->
|
||||
<!-- <param name="service-point-url" value="http://osptestserver.transnexus.com:5045/osp"/> -->
|
||||
<!-- <param name="service-point-url" value="https://127.0.0.1:1443/osp"/> -->
|
||||
<param name="service-point-url" value="http://127.0.0.1:5045/osp"/>
|
||||
|
||||
<!-- FreeSWITCH IP address for OSP -->
|
||||
<param name="device-ip" value="127.0.0.1:5080"/>
|
||||
|
||||
<!-- SSL lifetime in seconds -->
|
||||
<param name="ssl-lifetime" value="300"/>
|
||||
<!-- HTTP max connections, 1~1000 -->
|
||||
<param name="http-max-connections" value="20"/>
|
||||
<!-- HTTP persistence in seconds -->
|
||||
<param name="http-persistence" value="60"/>
|
||||
<!-- HTTP retry delay in seconds, 0~10 -->
|
||||
<param name="http-retry-delay" value="0"/>
|
||||
<!-- HTTP retry limit, 0~100 -->
|
||||
<param name="http-retry-limit" value="2"/>
|
||||
<!-- HTTP timeout in milliseconds, 200~60000 -->
|
||||
<param name="http-timeout" value="10000"/>
|
||||
|
||||
<!-- OSP work mode, direct or indirect -->
|
||||
<param name="work-mode" value="direct"/>
|
||||
<!-- OSP service type, voice or npquery -->
|
||||
<param name="service-type" value="voice"/>
|
||||
<!-- Max number of destinations -->
|
||||
<param name="max-destinations" value="12"/>
|
||||
</profile>
|
||||
</profiles>
|
||||
</configuration>
|
||||
@@ -0,0 +1,7 @@
|
||||
<configuration name="redis.conf" description="mod_redis Configuration">
|
||||
<settings>
|
||||
<param name="host" value="localhost"/>
|
||||
<param name="port" value="6379"/>
|
||||
<param name="timeout" value="10000"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
@@ -0,0 +1,7 @@
|
||||
<configuration name="rss.conf" description="RSS Parser">
|
||||
<feeds>
|
||||
<!-- Just download the files to wherever and refer to them here -->
|
||||
<!-- <feed name="Slash Dot">/home/rss/rss.rss</feed> -->
|
||||
<!-- <feed name="News Forge">/home/rss/newsforge.rss</feed> -->
|
||||
</feeds>
|
||||
</configuration>
|
||||
@@ -0,0 +1,7 @@
|
||||
<include>
|
||||
<extension name="rss">
|
||||
<condition field="destination_number" expression="^rss$">
|
||||
<action application="rss"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,12 @@
|
||||
if (session.ready()) {
|
||||
session.answer();
|
||||
session.speak("cepstral","David","Please wait while we refresh the RSS feeds.")
|
||||
|
||||
fetchURLFile("http://weather.yahooapis.com/forecastrss?p=60610","rss/weather.rss");
|
||||
fetchURLFile("http://rss.news.yahoo.com/rss/topstories","rss/yahootop.rss");
|
||||
fetchURLFile("http://rss.news.yahoo.com/rss/science","rss/yahoosci.rss");
|
||||
fetchURLFile("http://rss.news.yahoo.com/rss/business","rss/yahoobus.rss");
|
||||
fetchURLFile("http://rss.news.yahoo.com/rss/entertainment","rss/yahooent.rss");
|
||||
fetchURLFile("http://rss.slashdot.org/Slashdot/slashdot","rss/slashdot.rss");
|
||||
fetchURLFile("http://www.freeswitch.org/xml.php","rss/freeswitch.rss");
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<include>
|
||||
<extension name="snom-demo-1">
|
||||
<condition field="destination_number" expression="^9000$">
|
||||
<!-- <key> <light> <label> <user> <host> <profile> <action_name> <action> -->
|
||||
<action application="eval" data="${snom_bind_key(2 on DND ${sip_from_user} ${sip_from_host} ${sofia_profile_name} message api+uuid_transfer ${uuid} 9001)}"/>
|
||||
<action application="playback" data="$${hold_music}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="snom-demo-2">
|
||||
<condition field="destination_number" expression="^9001$">
|
||||
<action application="eval" data="${snom_bind_key(2 off DND ${sip_from_user} ${sip_from_host} ${sofia_profile_name} message notused)}"/>
|
||||
<action application="transfer" data="3000"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,108 @@
|
||||
<configuration name="spandsp.conf" description="SpanDSP config">
|
||||
<modem-settings>
|
||||
<!--
|
||||
total-modems set to N will create that many soft-modems.
|
||||
If you use them with Hylafax you need the following for each one numbered 0..N:
|
||||
|
||||
1) A line like this in /etc/inittab:
|
||||
|
||||
f0:2345:respawn:/usr/lib/fax/faxgetty /dev/FS0
|
||||
|
||||
2) copy conf/config.FS0 to /var/spool/hylafax/etc (or wherver the appropriate dir is on your system)
|
||||
|
||||
Subsequent modem configs would incrment the 0 to 1 and so on.
|
||||
|
||||
-->
|
||||
<param name="total-modems" value="0"/>
|
||||
|
||||
<!-- Default context and dialplan to use on inbound calls from the modems -->
|
||||
<param name="context" value="default"/>
|
||||
<param name="dialplan" value="XML"/>
|
||||
|
||||
<!-- Extra tracing for debugging -->
|
||||
<param name="verbose" value="false"/>
|
||||
</modem-settings>
|
||||
|
||||
<fax-settings>
|
||||
<param name="use-ecm" value="true"/>
|
||||
<param name="verbose" value="false"/>
|
||||
<param name="disable-v17" value="false"/>
|
||||
<param name="ident" value="SpanDSP Fax Ident"/>
|
||||
<param name="header" value="SpanDSP Fax Header"/>
|
||||
|
||||
<param name="spool-dir" value="/tmp"/>
|
||||
<param name="file-prefix" value="faxrx"/>
|
||||
</fax-settings>
|
||||
|
||||
<descriptors>
|
||||
|
||||
<!-- These tones are defined in Annex to ITU Operational Bulletin No. 781 - 1.II.2003 -->
|
||||
<!-- Various Tones Used in National Networks (According to ITU-T Recommendation E.180)(03/1998) -->
|
||||
|
||||
<!-- North America -->
|
||||
<descriptor name="1">
|
||||
<tone name="CED_TONE">
|
||||
<element freq1="2100" freq2="0" min="500" max="0"/>
|
||||
</tone>
|
||||
<tone name="SIT">
|
||||
<element freq1="950" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1400" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1800" freq2="0" min="256" max="400"/>
|
||||
</tone>
|
||||
<tone name="REORDER_TONE">
|
||||
<element freq1="480" freq2="620" min="224" max="272"/>
|
||||
<element freq1="0" freq2="0" min="224" max="272"/>
|
||||
</tone>
|
||||
<tone name="BUSY_TONE">
|
||||
<element freq1="480" freq2="620" min="464" max="516"/>
|
||||
<element freq1="0" freq2="0" min="464" max="516"/>
|
||||
</tone>
|
||||
</descriptor>
|
||||
|
||||
<!-- United Kingdom -->
|
||||
<descriptor name="44">
|
||||
<tone name="CED_TONE">
|
||||
<element freq1="2100" freq2="0" min="500" max="0"/>
|
||||
</tone>
|
||||
<tone name="SIT">
|
||||
<element freq1="950" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1400" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1800" freq2="0" min="256" max="400"/>
|
||||
</tone>
|
||||
<tone name="REORDER_TONE">
|
||||
<element freq1="400" freq2="0" min="368" max="416"/>
|
||||
<element freq1="0" freq2="0" min="336" max="368"/>
|
||||
<element freq1="400" freq2="0" min="256" max="288"/>
|
||||
<element freq1="0" freq2="0" min="512" max="544"/>
|
||||
</tone>
|
||||
<tone name="BUSY_TONE">
|
||||
<element freq1="400" freq2="0" min="352" max="384"/>
|
||||
<element freq1="0" freq2="0" min="352" max="384"/>
|
||||
<element freq1="400" freq2="0" min="352" max="384"/>
|
||||
<element freq1="0" freq2="0" min="352" max="384"/>
|
||||
</tone>
|
||||
</descriptor>
|
||||
|
||||
<!-- Germany -->
|
||||
<descriptor name="49">
|
||||
<tone name="CED_TONE">
|
||||
<element freq1="2100" freq2="0" min="500" max="0"/>
|
||||
</tone>
|
||||
<tone name="SIT">
|
||||
<element freq1="900" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1400" freq2="0" min="256" max="400"/>
|
||||
<element freq1="1800" freq2="0" min="256" max="400"/>
|
||||
</tone>
|
||||
<tone name="REORDER_TONE">
|
||||
<element freq1="425" freq2="0" min="224" max="272"/>
|
||||
<element freq1="0" freq2="0" min="224" max="272"/>
|
||||
</tone>
|
||||
<tone name="BUSY_TONE">
|
||||
<element freq1="425" freq2="0" min="464" max="516"/>
|
||||
<element freq1="0" freq2="0" min="464" max="516"/>
|
||||
</tone>
|
||||
</descriptor>
|
||||
</descriptors>
|
||||
|
||||
</configuration>
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
CountryCode: 1
|
||||
AreaCode: 800
|
||||
FAXNumber: +1.800.555.1212
|
||||
LongDistancePrefix: 1
|
||||
InternationalPrefix: 011
|
||||
DialStringRules: etc/dialrules
|
||||
ServerTracing: 0xFFF
|
||||
SessionTracing: 0xFFF
|
||||
RecvFileMode: 0600
|
||||
LogFileMode: 0600
|
||||
DeviceMode: 0600
|
||||
RingsBeforeAnswer: 1
|
||||
SpeakerVolume: off
|
||||
GettyArgs: "-h %l dx_%s"
|
||||
LocalIdentifier: "FS"
|
||||
TagLineFont: etc/lutRS18.pcf
|
||||
TagLineFormat: "From %%l|%c|Page %%P of %%T"
|
||||
MaxRecvPages: 200
|
||||
#
|
||||
#
|
||||
# Modem-related stuff: should reflect modem command interface
|
||||
# and hardware connection/cabling (e.g. flow control).
|
||||
#
|
||||
ModemType: Class1 # use this to supply a hint
|
||||
|
||||
#
|
||||
# Enabling this will use the hfaxd-protocol to set Caller*ID
|
||||
#
|
||||
#ModemSetOriginCmd: AT+VSID="%s","%d"
|
||||
|
||||
#
|
||||
# If "glare" during initialization becomes a problem then take
|
||||
# the modem off-hook during initialization, and then place it
|
||||
# back on-hook when done.
|
||||
#
|
||||
#ModemResetCmds: "ATH1\nAT+VCID=1" # enables CallID display
|
||||
#ModemReadyCmds: ATH0
|
||||
|
||||
Class1AdaptRecvCmd: AT+FAR=1
|
||||
Class1TMConnectDelay: 400 # counteract quick CONNECT response
|
||||
|
||||
#
|
||||
# If you have trouble with V.17 receiving or sending,
|
||||
# you may want to enable one of these, respectively.
|
||||
#
|
||||
#Class1RMQueryCmd: "!24,48,72,96" # enable this to disable V.17 receiving
|
||||
#Class1TMQueryCmd: "!24,48,72,96" # enable this to disable V.17 sending
|
||||
|
||||
#
|
||||
# You'll likely want Caller*ID display (also displays DID) enabled.
|
||||
#
|
||||
ModemResetCmds: AT+VCID=1 # enables CallID display
|
||||
|
||||
#
|
||||
# The pty does not support changing parity.
|
||||
#
|
||||
PagerTTYParity: none
|
||||
|
||||
#
|
||||
# If you are "missing" Caller*ID data on some calls (but not all)
|
||||
# and if you do not have adequate glare protection you may want to
|
||||
# not answer based on RINGs, but rather enable the CallIDAnswerLength
|
||||
# for NDID, disable AT+VCID=1 and do this:
|
||||
#
|
||||
#RingsBeforeAnswer: 0
|
||||
#ModemRingResponse: AT+VRID=1
|
||||
|
||||
# Uncomment DATE and TIME if you really want them, but you probably don't.
|
||||
#CallIDPattern: "DATE="
|
||||
#CallIDPattern: "TIME="
|
||||
CallIDPattern: "NMBR="
|
||||
CallIDPattern: "NAME="
|
||||
CallIDPattern: "ANID="
|
||||
#CallIDPattern: "USER=" # username provided by call
|
||||
#CallIDPattern: "PASS=" # password provided by call
|
||||
#CallIDPattern: "CDID=" # DID context in call
|
||||
CallIDPattern: "NDID="
|
||||
#CallIDAnswerLength: 4
|
||||
@@ -0,0 +1,26 @@
|
||||
<extension name="fax_receive">
|
||||
<condition field="destination_number" expression="^9178$">
|
||||
<action application="answer" />
|
||||
<action application="playback" data="silence_stream://2000"/>
|
||||
<action application="rxfax" data="/tmp/rxfax.tif"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="fax_transmit">
|
||||
<condition field="destination_number" expression="^9179$">
|
||||
<action application="txfax" data="/tmp/txfax.tif"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="fax_receive">
|
||||
<condition field="destination_number" expression="^9978$">
|
||||
<action application="answer" />
|
||||
<action application="playback" data="silence_stream://2000"/>
|
||||
<action application="set" data="fax_enable_t38_request=true"/>
|
||||
<action application="set" data="fax_enable_t38=true"/>
|
||||
<action application="rxfax" data="/tmp/FAX-${uuid}.tif"/>
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
@@ -0,0 +1,24 @@
|
||||
<include>
|
||||
<!--
|
||||
Valet park retrieval, works with valet_park extension below.
|
||||
Retrieve a valet parked call by dialing 6000 + park number + #
|
||||
-->
|
||||
<extension name="valet_park">
|
||||
<condition field="destination_number" expression="^(6000)$">
|
||||
<action application="answer"/>
|
||||
<action application="valet_park" data="valet_parking_lot ask 1 11 10000 ivr/ivr-enter_ext_pound.wav"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<!--
|
||||
Valet park 6001-6099. Blind x-fer to 6001, 6002, etc. to valet park the call.
|
||||
Dial 6001, 6002, etc. to retrieve a call that is already valet parked.
|
||||
After call is retrieved, park extension is free for another call.
|
||||
-->
|
||||
<extension name="valet_park">
|
||||
<condition field="destination_number" expression="^(60\d[1-9])$">
|
||||
<action application="answer"/>
|
||||
<action application="valet_park" data="valet_parking_lot $1"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,12 @@
|
||||
<include>
|
||||
<extension name="vmdtest">
|
||||
<condition field="destination_number" expression="^vmd(\d{10})$">
|
||||
<action application="answer"/>
|
||||
<action application="info"/>
|
||||
<action application="vmd"/>
|
||||
<action application="sleep" data="25000"/>
|
||||
<action application="info"/> <!-- Look for chan var "vmd_detect" here -->
|
||||
<action application="hangup"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,27 @@
|
||||
function onInput(s, type, obj, arg)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(type == "dtmf")
|
||||
{
|
||||
console_log("info", "DTMF digit: "+s.name+" ["+obj.digit+"] len ["+obj.duration+"]\n");
|
||||
}
|
||||
else if(type == "event" && session.getVariable("vmd_detect") == "TRUE")
|
||||
{
|
||||
console_log("info", "Voicemail Detected\n");
|
||||
}
|
||||
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
console_log("err", e + "\n");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
session.answer();
|
||||
session.execute("vmd", "start");
|
||||
while(session.ready())
|
||||
{
|
||||
session.streamFile(argv[0], onInput);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
local human_detected = false;
|
||||
local voicemail_detected = false;
|
||||
|
||||
function onInput(session, type, obj)
|
||||
if type == "dtmf" and obj['digit'] == '1' and human_detected == false then
|
||||
human_detected = true;
|
||||
return "break";
|
||||
end
|
||||
|
||||
if type == "event" and voicemail_detected == false then
|
||||
voicemail_detected = true;
|
||||
return "break";
|
||||
end
|
||||
end
|
||||
|
||||
session:setInputCallback("onInput");
|
||||
session:execute("vmd","start");
|
||||
@@ -0,0 +1,70 @@
|
||||
<configuration name="voicemail.conf" description="Voicemail">
|
||||
<settings>
|
||||
</settings>
|
||||
<profiles>
|
||||
<profile name="default">
|
||||
<param name="file-extension" value="wav"/>
|
||||
<param name="terminator-key" value="#"/>
|
||||
<param name="max-login-attempts" value="3"/>
|
||||
<param name="digit-timeout" value="10000"/>
|
||||
<param name="min-record-len" value="3"/>
|
||||
<param name="max-record-len" value="300"/>
|
||||
<param name="max-retries" value="3"/>
|
||||
<param name="tone-spec" value="%(1000, 0, 640)"/>
|
||||
<param name="callback-dialplan" value="XML"/>
|
||||
<param name="callback-context" value="default"/>
|
||||
<param name="play-new-messages-key" value="1"/>
|
||||
<param name="play-saved-messages-key" value="2"/>
|
||||
<param name="login-keys" value="0"/>
|
||||
<param name="main-menu-key" value="0"/>
|
||||
<param name="config-menu-key" value="5"/>
|
||||
<param name="record-greeting-key" value="1"/>
|
||||
<param name="choose-greeting-key" value="2"/>
|
||||
<param name="change-pass-key" value="6"/>
|
||||
<param name="record-name-key" value="3"/>
|
||||
<param name="record-file-key" value="3"/>
|
||||
<param name="listen-file-key" value="1"/>
|
||||
<param name="save-file-key" value="2"/>
|
||||
<param name="delete-file-key" value="7"/>
|
||||
<param name="undelete-file-key" value="8"/>
|
||||
<param name="email-key" value="4"/>
|
||||
<param name="pause-key" value="0"/>
|
||||
<param name="restart-key" value="1"/>
|
||||
<param name="ff-key" value="6"/>
|
||||
<param name="rew-key" value="4"/>
|
||||
<param name="skip-greet-key" value="#"/>
|
||||
<param name="previous-message-key" value="1"/>
|
||||
<param name="next-message-key" value="3"/>
|
||||
<param name="skip-info-key" value="*"/>
|
||||
<param name="repeat-message-key" value="0"/>
|
||||
<param name="record-silence-threshold" value="200"/>
|
||||
<param name="record-silence-hits" value="2"/>
|
||||
<param name="web-template-file" value="web-vm.tpl"/>
|
||||
<param name="db-password-override" value="false"/>
|
||||
<param name="allow-empty-password-auth" value="true"/>
|
||||
<!-- if you need to change the sample rate of the recorded files e.g. gmail voicemail player -->
|
||||
<!--<param name="record-sample-rate" value="11025"/>-->
|
||||
<!-- the next two both must be set for this to be enabled
|
||||
the extension is in the format of <dest> [<dialplan>] [<context>]
|
||||
-->
|
||||
<param name="operator-extension" value="operator XML default"/>
|
||||
<param name="operator-key" value="9"/>
|
||||
<param name="vmain-extension" value="vmain XML default"/>
|
||||
<param name="vmain-key" value="*"/>
|
||||
<!-- playback created files as soon as they were recorded by default -->
|
||||
<!--<param name="auto-playback-recordings" value="true"/>-->
|
||||
<email>
|
||||
<param name="template-file" value="voicemail.tpl"/>
|
||||
<param name="notify-template-file" value="notify-voicemail.tpl"/>
|
||||
<!-- this is the format voicemail_time will have -->
|
||||
<param name="date-fmt" value="%A, %B %d %Y, %I %M %p"/>
|
||||
<param name="email-from" value="${voicemail_account}@${voicemail_domain}"/>
|
||||
</email>
|
||||
<!--<param name="storage-dir" value="/tmp"/>-->
|
||||
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
|
||||
<!--<param name="record-comment" value="Your Comment"/>-->
|
||||
<!--<param name="record-title" value="Your Title"/>-->
|
||||
<!--<param name="record-copyright" value="Your Copyright"/>-->
|
||||
</profile>
|
||||
</profiles>
|
||||
</configuration>
|
||||
@@ -0,0 +1,20 @@
|
||||
<include>
|
||||
<!-- This is a _VERY_ abbreviated demo for voicemail. A better demo would be useful -->
|
||||
|
||||
<!-- voicemail main extension -->
|
||||
<extension name="vmain">
|
||||
<condition field="destination_number" expression="^vmain$|^4000$|^\*98$">
|
||||
<action application="answer"/>
|
||||
<action application="sleep" data="1000"/>
|
||||
<action application="voicemail" data="check default ${domain_name}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
<extension name="Local_Voicemail">
|
||||
<condition field="destination_number" expression="^(10[01][0-9])$">
|
||||
<action application="export" data="dialed_extension=$1"/>
|
||||
<action application="export" data="domain=default"/>
|
||||
<action application="bridge" data="loopback/app=voicemail:default ${domain_name} ${dialed_extension}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
</include>
|
||||
@@ -0,0 +1,44 @@
|
||||
From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}>
|
||||
Date: ${RFC2822_DATE}
|
||||
To: <${voicemail_notify_email}>
|
||||
Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len}
|
||||
X-Priority: ${voicemail_priority}
|
||||
X-Mailer: FreeSWITCH
|
||||
|
||||
Content-Type: multipart/alternative;
|
||||
boundary="000XXX000"
|
||||
|
||||
--000XXX000
|
||||
Content-Type: text/plain; charset=ISO-8859-1; Format=Flowed
|
||||
Content-Disposition: inline
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
Created: ${voicemail_time}
|
||||
From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}>
|
||||
Duration: ${voicemail_message_len}
|
||||
Account: ${voicemail_account}@${voicemail_domain}
|
||||
|
||||
--000XXX000
|
||||
Content-Type: text/html; charset=ISO-8859-1
|
||||
Content-Disposition: inline
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len}</title>
|
||||
<meta content="text/html; charset=iso-8859-1" http-equiv="content-type"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<font face=arial>
|
||||
<b>Message From "${voicemail_caller_id_name}" <A HREF="tel:${voicemail_caller_id_number}">${voicemail_caller_id_number}</A></b><br>
|
||||
<hr noshade size=1>
|
||||
Created: ${voicemail_time}<br>
|
||||
Duration: ${voicemail_message_len}<br>
|
||||
Account: ${voicemail_account}@${voicemail_domain}<br>
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
--000XXX000--
|
||||
@@ -0,0 +1,44 @@
|
||||
From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}>
|
||||
Date: ${RFC2822_DATE}
|
||||
To: <${voicemail_email}>
|
||||
Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len}
|
||||
X-Priority: ${voicemail_priority}
|
||||
X-Mailer: FreeSWITCH
|
||||
|
||||
Content-Type: multipart/alternative;
|
||||
boundary="000XXX000"
|
||||
|
||||
--000XXX000
|
||||
Content-Type: text/plain; charset=ISO-8859-1; Format=Flowed
|
||||
Content-Disposition: inline
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
Created: ${voicemail_time}
|
||||
From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}>
|
||||
Duration: ${voicemail_message_len}
|
||||
Account: ${voicemail_account}@${voicemail_domain}
|
||||
|
||||
--000XXX000
|
||||
Content-Type: text/html; charset=ISO-8859-1
|
||||
Content-Disposition: inline
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len}</title>
|
||||
<meta content="text/html; charset=iso-8859-1" http-equiv="content-type"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<font face=arial>
|
||||
<b>Message From "${voicemail_caller_id_name}" <A HREF="tel:${voicemail_caller_id_number}">${voicemail_caller_id_number}</A></b><br>
|
||||
<hr noshade size=1>
|
||||
Created: ${voicemail_time}<br>
|
||||
Duration: ${voicemail_message_len}<br>
|
||||
Account: ${voicemail_account}@${voicemail_domain}<br>
|
||||
</font>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
--000XXX000--
|
||||
@@ -0,0 +1,208 @@
|
||||
<configuration name="voicemail_ivr.conf" description="Voicemail IVR">
|
||||
<profiles>
|
||||
<profile name="default">
|
||||
<settings>
|
||||
<param name="IVR-Maximum-Attempts" value="3" />
|
||||
<param name="IVR-Entry-Timeout" value="3000" />
|
||||
<param name="Record-Format" value="wav" />
|
||||
<!--<param name="Record-Sample-Rate" value="8000" />-->
|
||||
<param name="Record-Silence-Hits" value="4" />
|
||||
<param name="Record-Silence-Threshold" value="200" />
|
||||
<param name="Record-Maximum-Length" value="30" />
|
||||
<!--<param name="Record-Minimum-Length" value="3" />-->
|
||||
<param name="Exit-Purge" value="true" />
|
||||
<param name="Password-Mask" value="XXX." />
|
||||
<param name="User-Mask" value="X." />
|
||||
|
||||
</settings>
|
||||
<apis>
|
||||
<api name="auth_login" value="vm_fsdb_auth_login" />
|
||||
<api name="msg_list" value="vm_fsdb_msg_list" />
|
||||
<api name="msg_count" value="vm_fsdb_msg_count" />
|
||||
<api name="msg_delete" value="vm_fsdb_msg_delete" />
|
||||
<api name="msg_undelete" value="vm_fsdb_msg_undelete" />
|
||||
<api name="msg_save" value="vm_fsdb_msg_save" />
|
||||
<api name="msg_purge" value="vm_fsdb_msg_purge" />
|
||||
<api name="msg_get" value="vm_fsdb_msg_get" />
|
||||
<api name="msg_forward" value="vm_fsdb_msg_forward" />
|
||||
<api name="pref_greeting_set" value="vm_fsdb_pref_greeting_set" />
|
||||
<api name="pref_recname_set" value="vm_fsdb_pref_recname_set" />
|
||||
<api name="pref_password_set" value="vm_fsdb_pref_password_set" />
|
||||
</apis>
|
||||
<menus>
|
||||
<menu name="std_authenticate">
|
||||
<phrases>
|
||||
<phrase name="fail_auth" value="fail_auth@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_authenticate_ask_user">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="enter_id@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_authenticate_ask_password">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="enter_pass@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_main_menu">
|
||||
<phrases>
|
||||
<phrase name="msg_count" value="message_count@mtvoicemail" />
|
||||
<phrase name="say_date" value="say_date_event@mtvoicemail" />
|
||||
<phrase name="say_msg_number" value="say_message_number@mtvoicemail" />
|
||||
<phrase name="menu_options" value="menu@mtvoicemail" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="1" action="new_msg:std_navigator" variable="VM-Key-Play-New-Messages" />
|
||||
<key dtmf="2" action="saved_msg:std_navigator" variable="VM-Key-Play-Saved-Messages" />
|
||||
<key dtmf="5" action="menu:std_preference" variable="VM-Key-Config-Menu"/>
|
||||
<key dtmf="#" action="return" variable="VM-Key-Terminator" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_navigator">
|
||||
<settings>
|
||||
<!--<param name="Nav-Action-On-Delete" value="next_msg" />-->
|
||||
</settings>
|
||||
<phrases>
|
||||
<phrase name="msg_count" value="message_count@voicemail_ivr" />
|
||||
<phrase name="say_date" value="say_date_event@voicemail_ivr" />
|
||||
<phrase name="say_msg_number" value="say_message_number@voicemail_ivr" />
|
||||
<phrase name="menu_options" value="listen_file_check@voicemail_ivr" />
|
||||
<phrase name="ack" value="ack@voicemail_ivr" />
|
||||
<phrase name="play_message" value="play_message@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="1" action="skip_intro" variable="VM-Key-Main-Listen-File" />
|
||||
<key dtmf="6" action="next_msg" variable="VM-Key-Main-Next-Msg" />
|
||||
<key dtmf="4" action="prev_msg" />
|
||||
<key dtmf="7" action="delete_msg" variable="VM-Key-Main-Delete-File" /> <!-- Same key for undelete if it already deleted -->
|
||||
<key dtmf="8" action="menu:std_forward" variable="VM-Key-Main-Forward" />
|
||||
<key dtmf="3" action="save_msg" variable="VM-Key-Main-Save-File" />
|
||||
<key dtmf="2" action="callback" variable="VM-Key-Main-Callback" />
|
||||
<key dtmf="5" action="menu:std_preference" />
|
||||
<key dtmf="#" action="return" /> <!-- TODO Might Conflict with future fast-forward -->
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_preference">
|
||||
<phrases>
|
||||
<phrase name="menu_options" value="config_menu@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="1" action="menu:std_record_greeting_with_slot" variable="VM-Key-Record-Greeting" />
|
||||
<key dtmf="2" action="menu:std_select_greeting_slot" variable="VM-Key-Choose-Greeting" />
|
||||
<key dtmf="3" action="menu:std_record_name" variable="VM-Key-Record-Name" />
|
||||
<key dtmf="6" action="menu:std_set_password" variable="VM-Key-Change-Password" />
|
||||
<key dtmf="#" action="return" variable="VM-Key-Main-Menu" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_record_greeting">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="record_greeting@voicemail_ivr" />
|
||||
<phrase name="play_recording" value="play_recording@voicemail_ivr" />
|
||||
<phrase name="menu_options" value="record_file_check@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="1" action="listen" variable="VM-Key-Listen-File" />
|
||||
<key dtmf="3" action="save" variable="VM-Key-Save-File" />
|
||||
<key dtmf="4" action="rerecord" variable="VM-Key-ReRecord-File" />
|
||||
<key dtmf="#" action="skip_instruction" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
|
||||
<menu name="std_record_name">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="record_name@voicemail_ivr" />
|
||||
<phrase name="play_recording" value="play_recording@voicemail_ivr" />
|
||||
<phrase name="menu_options" value="record_file_check@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="1" action="listen" variable="VM-Key-Listen-File" />
|
||||
<key dtmf="3" action="save" variable="VM-Key-Save-File" />
|
||||
<key dtmf="4" action="rerecord" variable="VM-Key-ReRecord-File" />
|
||||
<key dtmf="#" action="skip_instruction" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_record_message">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="record_message@voicemail_ivr" />
|
||||
<phrase name="play_recording" value="play_recording@voicemail_ivr" />
|
||||
<phrase name="menu_options" value="record_file_check@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="1" action="listen" variable="VM-Key-Listen-File" />
|
||||
<key dtmf="3" action="save" variable="VM-Key-Save-File" />
|
||||
<key dtmf="4" action="rerecord" variable="VM-Key-ReRecord-File" />
|
||||
<key dtmf="#" action="skip_instruction" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_forward_ask_prepend">
|
||||
<phrases>
|
||||
<phrase name="menu_options" value="forward_ask_prepend@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="1" action="prepend" variable="VM-Key-Prepend" />
|
||||
<key dtmf="8" action="forward" variable="VM-Key-Forward" />
|
||||
<key dtmf="#" action="return" variable="VM-Key-Return" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_forward_ask_extension">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="forward_ask_extension@voicemail_ivr" />
|
||||
<phrase name="ack" value="ack@voicemail_ivr" />
|
||||
<phrase name="invalid_extension" value="invalid_extension@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" />
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_select_greeting_slot">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="choose_greeting@voicemail_ivr" />
|
||||
<phrase name="invalid_slot" value="choose_greeting_fail@voicemail_ivr" />
|
||||
<phrase name="selected_slot" value="greeting_selected@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_record_greeting_with_slot">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="choose_greeting@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
</keys>
|
||||
</menu>
|
||||
|
||||
<menu name="std_set_password">
|
||||
<phrases>
|
||||
<phrase name="instructions" value="enter_pass@voicemail_ivr" />
|
||||
</phrases>
|
||||
<keys>
|
||||
<key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" />
|
||||
</keys>
|
||||
</menu>
|
||||
</menus>
|
||||
</profile>
|
||||
</profiles>
|
||||
</configuration>
|
||||
|
||||
|
||||
Reference in new issue
Block a user