提交 3badbbac authored 作者: Brian West's avatar Brian West

FS-7648 foundation for QA testing config

上级 8e058ade
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<list name="domains" default="deny">
<node type="allow" domain="$${domain}"/>
</list>
</network-lists>
</configuration>
<configuration name="cdr_csv.conf" description="CDR CSV Format">
<settings>
<!-- 'cdr-csv' will always be appended to log-base -->
<!--<param name="log-base" value="/var/log"/>-->
<param name="default-template" value="example"/>
<!-- This is like the info app but after the call is hung up -->
<!--<param name="debug" value="true"/>-->
<param name="rotate-on-hup" value="true"/>
<!-- may be a b or ab -->
<param name="legs" value="a"/>
<!-- Only log in Master.csv -->
<!-- <param name="master-file-only" value="true"/> -->
</settings>
<templates>
<template name="sql">INSERT INTO cdr VALUES ("${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}");</template>
<template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}"</template>
<template name="snom">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}", "${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${call_clientcode}","${sip_rtp_rxstat}","${sip_rtp_txstat}","${sofia_record_file}"</template>
<template name="linksys">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}","${sip_user_agent}","${sip_p_rtp_stat}"</template>
<template name="asterisk">"${accountcode}","${caller_id_number}","${destination_number}","${context}","${caller_id}","${channel_name}","${bridge_channel}","${last_app}","${last_arg}","${start_stamp}","${answer_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${amaflags}","${uuid}","${userfield}"</template>
<template name="opencdrrate">"${uuid}","${signal_bond}","${direction}","${ani}","${destination_number}","${answer_stamp}","${end_stamp}","${billsec}","${accountcode}","${userfield}","${network_addr}","${regex('${original_caller_id_name}'|^.)}","${sip_gateway_name}"</template>
</templates>
</configuration>
<configuration name="console.conf" description="Console Logger">
<!-- pick a file name, a function name or 'all' -->
<!-- map as many as you need for specific debugging -->
<mappings>
<!--
name can be a file name, function name or 'all'
value is one or more of debug,info,notice,warning,err,crit,alert,all
See examples below
The following map is the default, which is all debug levels enabled:
<map name="all" value="debug,info,notice,warning,err,crit,alert"/>
Example: the following turns on debugging for error and critical levels only
<map name="all" value="err,crit"/>
NOTE: using map name="all" will override any other settings! If you
want a more specific set of console messages then you will need
to specify which files and/or functions you want to have debug
messages. One option is to turn on just the more critical
messages with map name="all", then specify the other types of
console messages you want to see for various files and functions.
Example: turn on ERROR, CRIT, ALERT for all modules, then specify other
levels for various modules and functions
<map name="all" value="err,crit,alert"/>
<map name="switch_loadable_module_process" value="all"/>
<map name="mod_local_stream.c" value="warning,debug"/>
<map name="mod_sndfile.c" value="warning,info,debug"/>
-->
<map name="all" value="console,debug,info,notice,warning,err,crit,alert"/>
<!--
You can use or modify this sample set of mappings. It turns on higher
level messages for all modules and then specifies extra lower level
messages for freetdm, Sofia, and switch core messages.
<map name="all" value="warning,err,crit,alert"/>
<map name="zap_analog.c" value="all"/>
<map name="zap_io.c" value="all"/>
<map name="zap_isdn.c" value="all"/>
<map name="zap_zt.c" value="all"/>
<map name="mod_freetdm" value="all"/>
<map name="sofia.c" value="notice"/>
<map name="switch_core_state_machine.c" value="all"/>
-->
</mappings>
<settings>
<!-- comment or set to false for no color logging -->
<param name="colorize" value="true"/>
<param name="loglevel" value="$${console_loglevel}"/>
</settings>
</configuration>
<configuration name="directory.conf" description="Directory">
<settings>
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
<!--<param name="dbname" value="directory"/>-->
</settings>
<profiles>
<profile name="default">
<param name="max-menu-attempts" value="3"/>
<param name="min-search-digits" value="3"/>
<param name="terminator-key" value="#"/>
<param name="digit-timeout" value="3000"/>
<param name="max-result" value="5"/>
<param name="next-key" value="6"/>
<param name="prev-key" value="4"/>
<param name="switch-order-key" value="*"/>
<param name="select-name-key" value="1"/>
<param name="new-search-key" value="3"/>
<param name="search-order" value="last_name"/>
</profile>
</profiles>
</configuration>
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="::"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<!--<param name="apply-inbound-acl" value="loopback.auto"/>-->
<!--<param name="stop-on-bind-error" value="true"/>-->
</settings>
</configuration>
<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>
<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>
<configuration name="local_stream.conf" description="stream files from local dir">
<!-- fallback to default if requested moh class isn't found -->
<directory name="default" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
<!-- list of short files to break in with every so often -->
<!--<param name="chime-list" value="file1.wav,file2.wav"/>-->
<!-- frequency of break-in (seconds)-->
<!--<param name="chime-freq" value="30"/>-->
<!-- limit to how many seconds the file will play -->
<!--<param name="chime-max" value="500"/>-->
</directory>
<directory name="moh/8000" path="$${sounds_dir}/music/8000">
<param name="rate" value="8000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/16000" path="$${sounds_dir}/music/16000">
<param name="rate" value="16000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/32000" path="$${sounds_dir}/music/32000">
<param name="rate" value="32000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="20"/>
<param name="timer-name" value="soft"/>
</directory>
<directory name="moh/48000" path="$${sounds_dir}/music/48000">
<param name="rate" value="48000"/>
<param name="shuffle" value="true"/>
<param name="channels" value="1"/>
<param name="interval" value="10"/>
<param name="timer-name" value="soft"/>
</directory>
</configuration>
<configuration name="logfile.conf" description="File Logging">
<settings>
<!-- true to auto rotate on HUP, false to open/close -->
<param name="rotate-on-hup" value="true"/>
</settings>
<profiles>
<profile name="default">
<settings>
<!-- File to log to -->
<!--<param name="logfile" value="/var/log/freeswitch.log"/>-->
<!-- At this length in bytes rotate the log file (0 for never) -->
<param name="rollover" value="10485760"/>
<!-- Maximum number of log files to keep before wrapping -->
<!-- If this parameter is enabled, the log filenames will not include a date stamp -->
<!-- <param name="maximum-rotate" value="32"/> -->
<!-- Prefix all log lines by the session's uuid -->
<param name="uuid" value="true" />
</settings>
<mappings>
<!--
name can be a file name, function name or 'all'
value is one or more of debug,info,notice,warning,err,crit,alert,all
Please see comments in console.conf.xml for more information
-->
<map name="all" value="console,debug,info,notice,warning,err,crit,alert"/>
</mappings>
</profile>
</profiles>
</configuration>
<configuration name="lua.conf" description="LUA Configuration">
<settings>
<!--
Specify local directories that will be searched for LUA modules
These entries will be pre-pended to the LUA_CPATH environment variable
-->
<!-- <param name="module-directory" value="/usr/lib/lua/5.1/?.so"/> -->
<!-- <param name="module-directory" value="/usr/local/lib/lua/5.1/?.so"/> -->
<!--
Specify local directories that will be searched for LUA scripts
These entries will be pre-pended to the LUA_PATH environment variable
-->
<!-- <param name="script-directory" value="/usr/local/lua/?.lua"/> -->
<!-- <param name="script-directory" value="$${script_dir}/?.lua"/> -->
<!--<param name="xml-handler-script" value="/dp.lua"/>-->
<!--<param name="xml-handler-bindings" value="dialplan"/>-->
<!--
The following options identifies a lua script that is launched
at startup and may live forever in the background.
You can define multiple lines, one for each script you
need to run.
-->
<!--<param name="startup-script" value="startup_script_1.lua"/>-->
<!--<param name="startup-script" value="startup_script_2.lua"/>-->
<!--<hook event="CUSTOM" subclass="conference::maintenance" script="catch-event.lua"/>-->
</settings>
</configuration>
<configuration name="modules.conf" description="Modules">
<modules>
<load module="mod_console"/>
<load module="mod_logfile"/>
<load module="mod_cdr_csv"/>
<load module="mod_event_socket"/>
<load module="mod_sofia"/>
<load module="mod_loopback"/>
<load module="mod_rtc"/>
<load module="mod_verto"/>
<load module="mod_commands"/>
<load module="mod_conference"/>
<load module="mod_av"/>
<load module="mod_dptools"/>
<load module="mod_fifo"/>
<load module="mod_voicemail"/>
<load module="mod_valet_parking"/>
<load module="mod_dialplan_xml"/>
<load module="mod_spandsp"/>
<load module="mod_g723_1"/>
<load module="mod_g729"/>
<load module="mod_amr"/>
<load module="mod_vpx"/>
<load module="mod_opus"/>
<load module="mod_sndfile"/>
<load module="mod_native_file"/>
<load module="mod_local_stream"/>
<load module="mod_tone_stream"/>
<load module="mod_lua"/>
<load module="mod_say_en"/>
</modules>
</configuration>
<configuration name="opus.conf">
<settings>
<param name="use-vbr" value="1"/>
<param name="complexity" value="10"/>
<!--
maxaveragebitrate: the maximum average codec bitrate (values: 6000 to 510000 in bps) 0 is not considered
maxplaybackrate: the maximum codec internal frequency (values: 8000, 12000, 16000, 24000, 48000 in Hz) 0 is not considered
This will set the local encoder and instruct the remote encoder trough specific "fmtp" attibute in the SDP.
Example: if you receive "maxaveragebitrate=20000" from SDP and you have set "maxaveragebitrate=24000" in this configuration
the lowest will prevail in this case "20000" is set on the encoder and the corresponding fmtp attribute will be set
to instruct the remote encoder to do the same.
-->
<param name="maxaveragebitrate" value="0"/>
<param name="maxplaybackrate" value="0"/>
</settings>
</configuration>
<configuration name="post_load_modules.conf" description="Modules">
<modules>
</modules>
</configuration>
<configuration name="presence_map.conf" description="PRESENCE MAP">
<domains>
<domain name="$${domain}">
<exten regex="3\d+" proto="conf"/>
</domain>
</domains>
</configuration>
<configuration name="shout.conf" description="mod shout config">
<settings>
<!-- Don't change these unless you are insane -->
<!--<param name="decoder" value="i586"/>-->
<!--<param name="volume" value=".1"/>-->
<!--<param name="outscale" value="8192"/>-->
</settings>
</configuration>
<configuration name="sofia.conf" description="sofia Endpoint">
<global_settings>
<param name="log-level" value="0"/>
<!-- <param name="auto-restart" value="false"/> -->
<param name="debug-presence" value="0"/>
<!-- <param name="capture-server" value="udp:homer.domain.com:5060"/> -->
</global_settings>
<!--
The rabbit hole goes deep. This includes all the
profiles in the sip_profiles directory that is up
one level from this directory.
-->
<profiles>
<X-PRE-PROCESS cmd="include" data="../sip_profiles/*.xml"/>
</profiles>
</configuration>
<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"/>
<!-- Change the directory of the devices created from /dev. Needed if FS runs as non-root -->
<!-- <param name="directory" value="/dev/FS"/> -->
<!-- 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="$${temp_dir}"/>
<param name="file-prefix" value="faxrx"/>
<!-- How many packets to process before sending the re-invite on tx/rx -->
<!-- <param name="t38-rx-reinvite-packet-count" value="50"/> -->
<!-- <param name="t38-tx-reinvite-packet-count" value="100"/> -->
</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="700" 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="RING_TONE" description="North America ring">
<element freq1="440" freq2="480" min="1200" max="0"/>
</tone>
<tone name="REORDER_TONE">
<element freq1="480" freq2="620" min="224" max="316"/>
<element freq1="0" freq2="0" min="168" max="352"/>
<element freq1="480" freq2="620" min="224" max="316"/>
</tone>
<tone name="BUSY_TONE">
<element freq1="480" freq2="620" min="464" max="536"/>
<element freq1="0" freq2="0" min="464" max="572"/>
<element freq1="480" freq2="620" min="464" max="536"/>
</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>
<configuration name="switch.conf" description="Core Configuration">
<cli-keybindings>
<key name="1" value="help"/>
<key name="2" value="status"/>
<key name="3" value="show channels"/>
<key name="4" value="show calls"/>
<key name="5" value="sofia status"/>
<key name="6" value="reloadxml"/>
<key name="7" value="console loglevel 0"/>
<key name="8" value="console loglevel 7"/>
<key name="9" value="sofia status profile internal"/>
<key name="10" value="sofia profile internal siptrace on"/>
<key name="11" value="sofia profile internal siptrace off"/>
<key name="12" value="version"/>
</cli-keybindings>
<default-ptimes>
<!-- Set this to override the 20ms assumption of various codecs in the sdp with no ptime defined -->
<!-- <codec name="G729" ptime="40"/> -->
</default-ptimes>
<settings>
<!-- Colorize the Console -->
<param name="colorize-console" value="true"/>
<!--Include full timestamps in dialplan logs -->
<param name="dialplan-timestamps" value="false"/>
<!-- Run the timer at 20ms by default and drop down as needed unless you set 1m-timer=true which was previous default -->
<!-- <param name="1ms-timer" value="true"/> -->
<!--
Set the Switch Name for HA environments.
When setting the switch name, it will override the system hostname for all DB and CURL requests
allowing cluster environments such as RHCS to have identical FreeSWITCH configurations but run
as different hostnames.
-->
<!-- <param name="switchname" value="freeswitch"/> -->
<!-- <param name="cpu-idle-smoothing-depth" value="30"/> -->
<!-- Maximum number of simultaneous DB handles open -->
<param name="max-db-handles" value="50"/>
<!-- Maximum number of seconds to wait for a new DB handle before failing -->
<param name="db-handle-timeout" value="10"/>
<!-- Minimum idle CPU before refusing calls -->
<!-- <param name="min-idle-cpu" value="25"/> -->
<!--
Max number of sessions to allow at any given time.
NOTICE: If you're driving 28 T1's in a single box you should set this to 644*2 or 1288
this will ensure you're able to use the entire DS3 without a problem. Otherwise you'll
be 144 channels short of always filling that DS3 up which can translate into waste.
-->
<param name="max-sessions" value="1000"/>
<!--Most channels to create per second -->
<param name="sessions-per-second" value="30"/>
<!-- Default Global Log Level - value is one of debug,info,notice,warning,err,crit,alert -->
<param name="loglevel" value="debug"/>
<!-- Set the core DEBUG level (0-10) -->
<!-- <param name="debug-level" value="10"/> -->
<!-- SQL Buffer length within rage of 32k to 10m -->
<!-- <param name="sql-buffer-len" value="1m"/> -->
<!-- Maximum SQL Buffer length must be greater than sql-buffer-len -->
<!-- <param name="max-sql-buffer-len" value="2m"/> -->
<!--
The min-dtmf-duration specifies the minimum DTMF duration to use on
outgoing events. Events shorter than this will be increased in duration
to match min_dtmf_duration. You cannot configure a dtmf duration on a
profile that is less than this setting. You may increase this value,
but cannot set it lower than 400. This value cannot exceed
max-dtmf-duration. -->
<!-- <param name="min-dtmf-duration" value="400"/> -->
<!--
The max-dtmf-duration caps the playout of a DTMF event at the specified
duration. Events exceeding this duration will be truncated to this
duration. You cannot configure a duration on a profile that exceeds
this setting. This setting can be lowered, but cannot exceed 192000.
This setting cannot be set lower than min_dtmf_duration. -->
<!-- <param name="max-dtmf-duration" value="192000"/> -->
<!--
The default_dtmf_duration specifies the DTMF duration to use on
originated DTMF events or on events that are received without a
duration specified. This value can be increased or lowered. This
value is lower-bounded by min_dtmf_duration and upper-bounded by
max-dtmf-duration\. -->
<!-- <param name="default-dtmf-duration" value="2000"/> -->
<!--
If you want to send out voicemail notifications via Windows you'll need to change the mailer-app
variable to the setting below:
<param name="mailer-app" value="msmtp"/>
Do not change mailer-app-args.
You will also need to download a sendmail clone for Windows (msmtp). This version works without issue:
http://msmtp.sourceforge.net/index.html. Download and copy the .exe to %winddir%\system32.
You'll need to create a small config file for smtp credentials (host name, authentication, tls, etc.) in
%USERPROFILE%\Application Data\ called "msmtprc.txt". Below is a sample copy of this file:
###################################
# The SMTP server of the provider.
account provider
host smtp.myisp.com
from john@myisp.com
auth login
user johndoe
password mypassword
# Set a default account
account default : provider
###################################
-->
<param name="mailer-app" value="sendmail"/>
<param name="mailer-app-args" value="-t"/>
<param name="dump-cores" value="yes"/>
<!-- Enable verbose channel events to include every detail about a channel on every event -->
<!-- <param name="verbose-channel-events" value="no"/> -->
<!-- Enable clock nanosleep -->
<!-- <param name="enable-clock-nanosleep" value="true"/> -->
<!-- Enable monotonic timing -->
<!-- <param name="enable-monotonic-timing" value="true"/> -->
<!-- NEEDS DOCUMENTATION -->
<!-- <param name="enable-softtimer-timerfd" value="true"/> -->
<!-- <param name="enable-cond-yield" value="true"/> -->
<!-- <param name="enable-timer-matrix" value="true"/> -->
<!-- <param name="threaded-system-exec" value="true"/> -->
<!-- <param name="tipping-point" value="0"/> -->
<!-- <param name="timer-affinity" value="disabled"/> -->
<!-- NEEDS DOCUMENTATION -->
<!-- RTP port range -->
<!-- <param name="rtp-start-port" value="16384"/> -->
<!-- <param name="rtp-end-port" value="32768"/> -->
<!-- Test each port to make sure it is not in use by some other process before allocating it to RTP -->
<!-- <param name="rtp-port-usage-robustness" value="true"/> -->
<param name="rtp-enable-zrtp" value="false"/>
<!-- <param name="core-db-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE'" /> -->
<!-- <param name="core-db-dsn" value="dsn:username:password" /> -->
<!--
Allow to specify the sqlite db at a different location (In this example, move it to ramdrive for
better performance on most linux distro (note, you loose the data if you reboot))
-->
<!-- <param name="core-db-name" value="/dev/shm/core.db" /> -->
<!-- The system will create all the db schemas automatically, set this to false to avoid this behaviour -->
<!-- <param name="auto-create-schemas" value="true"/> -->
<!-- <param name="auto-clear-sql" value="true"/> -->
<!-- <param name="enable-early-hangup" value="true"/> -->
<!-- <param name="core-dbtype" value="MSSQL"/> -->
<!-- Allow multiple registrations to the same account in the central registration table -->
<!-- <param name="multiple-registrations" value="true"/> -->
</settings>
</configuration>
This source diff could not be displayed because it is too large. You can view the blob instead.
<configuration name="verto.conf" description="HTML5 Verto Endpoint">
<settings>
<param name="debug" value="0"/>
</settings>
<profiles>
<profile name="default">
<param name="bind-local" value="$${local_ip_v4}:8081"/>
<param name="bind-local" value="$${local_ip_v4}:8082" secure="true"/>
<param name="bind-local" value="[$${local_ip_v6}]:8081"/>
<param name="bind-local" value="[$${local_ip_v6}]:8082" secure="true"/>
<param name="force-register-domain" value="$${domain}"/>
<param name="secure-combined" value="$${certs_dir}/wss.pem"/>
<param name="secure-chain" value="$${certs_dir}/wss.pem"/>
<param name="userauth" value="true"/>
<!-- setting this to true will allow anyone to register even with no account so use with care -->
<param name="blind-reg" value="false"/>
<param name="mcast-ip" value="224.1.1.1"/>
<param name="mcast-port" value="1337"/>
<param name="rtp-ip" value="$${local_ip_v6}"/>
<param name="rtp-ip" value="$${local_ip_v4}"/>
<!-- <param name="ext-rtp-ip" value=""/> -->
<param name="local-network" value="localnet.auto"/>
<param name="outbound-codec-string" value="OPUS,VP8"/>
<param name="inbound-codec-string" value="OPUS,VP8"/>
<param name="apply-candidate-acl" value="localnet.auto"/>
<param name="apply-candidate-acl" value="wan_v6.auto"/>
<param name="apply-candidate-acl" value="wan_v4.auto"/>
<param name="apply-candidate-acl" value="rfc1918.auto"/>
<param name="apply-candidate-acl" value="any_v6.auto"/>
<param name="apply-candidate-acl" value="any_v4.auto"/>
<param name="timer-name" value="soft"/>
</profile>
</profiles>
</configuration>
<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"/>
<!-- play-new-messages-lifo and play-saved-messages-lifo default is false, playing oldest messages first
<param name="play-new-messages-lifo" value="false"/>
<param name="play-saved-messages-lifo" value="false"/>
-->
<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="$${storage_dir}"/>-->
<!--<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>
<context name="default">
<extension name="demo">
<condition field="to" expression="^(.*)$">
<action application="reply" data="Hello, you said: ${_body}"/>
</condition>
</extension>
</context>
<context name="default">
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
</context>
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<action application="bridge" data="user/$1@${domain_name}"/>
<action application="answer"/>
<action application="sleep" data="1000"/>
<action application="bridge" data="loopback/app=voicemail:default $1 ${dialed_extension}"/>
</condition>
</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>
<context name="public">
<X-PRE-PROCESS cmd="include" data="public/*.xml"/>
</context>
<extension name="public_extensions">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="transfer" data="$1 XML default"/>
</condition>
</extension>
<domain name="$${domain}">
<params>
<param name="dial-string" value="{^^:sip_invite_domain=${dialed_domain}:presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(*/${dialed_user}@${dialed_domain})},${verto_contact(${dialed_user}@${dialed_domain}"/>
<param name="jsonrpc-allowed-methods" value="verto"/>
</params>
<variables>
<!--<variable name="record_stereo" value="true"/>-->
</variables>
<groups>
<group name="default">
<users>
<X-PRE-PROCESS cmd="include" data="default/*.xml"/>
</users>
</group>
</groups>
</domain>
<include>
<user id="1000">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1000"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1000"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1000"/>
<variable name="effective_caller_id_number" value="1000"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1001">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1001"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1001"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1001"/>
<variable name="effective_caller_id_number" value="1001"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1002">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1002"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1002"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1002"/>
<variable name="effective_caller_id_number" value="1002"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1003">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1003"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1003"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1003"/>
<variable name="effective_caller_id_number" value="1003"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1004">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1004"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1004"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1004"/>
<variable name="effective_caller_id_number" value="1004"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1005">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1005"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1005"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1005"/>
<variable name="effective_caller_id_number" value="1005"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1006">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1006"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1006"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1006"/>
<variable name="effective_caller_id_number" value="1006"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1007">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1007"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1007"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1007"/>
<variable name="effective_caller_id_number" value="1007"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1008">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1008"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1008"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1008"/>
<variable name="effective_caller_id_number" value="1008"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1009">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1009"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1009"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1009"/>
<variable name="effective_caller_id_number" value="1009"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1010">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1010"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1010"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1010"/>
<variable name="effective_caller_id_number" value="1010"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1011">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1011"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1011"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1011"/>
<variable name="effective_caller_id_number" value="1011"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1012">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1012"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1012"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1012"/>
<variable name="effective_caller_id_number" value="1012"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1013">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1013"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1013"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1013"/>
<variable name="effective_caller_id_number" value="1013"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1014">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1014"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1014"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1014"/>
<variable name="effective_caller_id_number" value="1014"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1015">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1015"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1015"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1015"/>
<variable name="effective_caller_id_number" value="1015"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1016">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1016"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1016"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1016"/>
<variable name="effective_caller_id_number" value="1016"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1017">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1017"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1017"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1017"/>
<variable name="effective_caller_id_number" value="1017"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1018">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1018"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1018"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1018"/>
<variable name="effective_caller_id_number" value="1018"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="1019">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1019"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="1019"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension 1019"/>
<variable name="effective_caller_id_number" value="1019"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
<include>
<user id="default">
<variables>
<!--<variable name="numbering_plan" value="$${default_country}"/>-->
</variables>
</user>
</include>
<?xml version="1.0"?>
<document type="freeswitch/xml">
<X-PRE-PROCESS cmd="include" data="vars.xml"/>
<section name="configuration" description="Various Configuration">
<X-PRE-PROCESS cmd="include" data="autoload_configs/*.xml"/>
</section>
<section name="dialplan" description="Regex/XML Dialplan">
<X-PRE-PROCESS cmd="include" data="dialplan/*.xml"/>
</section>
<section name="chatplan" description="Regex/XML Chatplan">
<X-PRE-PROCESS cmd="include" data="chatplan/*.xml"/>
</section>
<section name="directory" description="User Directory">
<X-PRE-PROCESS cmd="include" data="directory/*.xml"/>
</section>
<section name="languages" description="Language Management">
<X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/>
</section>
</document>
<include>
<macro name="demo_ivr_count">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
</match>
</input>
</macro>
<macro name="demo_ivr_main_menu" pause="100"> <!-- See conf/autoload_config/ivr.conf.xml for an example on how to use this macro in an IVR -->
<input pattern="(.*)">
<match>
<!-- string together several existing sound files to create one long greeting -->
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="play-file" data="ivr/ivr-this_ivr_will_let_you_test_features.wav"/>
<action function="play-file" data="ivr/ivr-you_may_exit_by_hanging_up.wav"/>
<!-- note that you can do more than just play files, e.g. have pauses and do TTS -->
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="play-file" data="ivr/ivr-enter_ext_pound.wav"/>
<action function="play-file" data="silence_stream://1500"/>
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: Register for ClueCon -->
<action function="play-file" data="ivr/ivr-register_for_cluecon.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/5.wav"/>
<!-- Menu option 6: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/6.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- The following macro is the same as demo_ivr_main_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="demo_ivr_main_menu_short" pause="100">
<input pattern="(.*)">
<match>
<!-- Menu option 1: Call FreeSWITCH conference-->
<action function="play-file" data="silence_stream://1000"/>
<action function="play-file" data="ivr/ivr-to_call_the_freeswitch_conference.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: Do FreeSWITCH echo test -->
<action function="play-file" data="ivr/ivr-to_do_a_freeswitch_echo_test.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: Listen to Music on Hold -->
<action function="play-file" data="ivr/ivr-to_listen_to_moh.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: Hear a sample submenu -->
<action function="play-file" data="ivr/ivr-to_hear_sample_submenu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 5: Listen to screaming monkeys -->
<action function="play-file" data="ivr/ivr-to_hear_screaming_monkeys.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/5.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- The following macro is the "long" greeting for the demo_ivr_sub_menu -->
<macro name="demo_ivr_sub_menu">
<input pattern="(.*)">
<match>
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="play-file" data="ivr/ivr-sample_submenu.wav"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
<!-- The following macro is the same as demo_ivr_sub_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="demo_ivr_sub_menu_short">
<input pattern="(.*)">
<match>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->
<include>
<macro name="msgcount">
<input pattern="(.*)">
<match>
<action function="execute" data="sleep(1000)"/>
<action function="play-file" data="voicemail/vm-you_have.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="voicemail/vm-messages.wav"/>
<!-- or -->
<!--<action function="speak-text" data="you have $1 messages"/>-->
</match>
</input>
</macro>
<macro name="saydate">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
</match>
</input>
</macro>
<macro name="timespec">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="time_measurement"/>
</match>
</input>
</macro>
<macro name="ip-addr">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="iterated" type="ip_address"/>
<action function="say" data="$1" method="pronounced" type="ip_address"/>
</match>
</input>
</macro>
<macro name="spell">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="spell-phonetic">
<input pattern="(.*)">
<match>
<action function="say" data="$1" method="pronounced" type="name_phonetic"/>
</match>
</input>
</macro>
<macro name="tts-timeleft">
<!-- The parser will visit each <input> tag and execute the actions in <match> or <nomatch> depending on the pattern param -->
<!-- If the function "break" is encountered all parsing will cease -->
<input pattern="(\d+):(\d+)">
<match>
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
<action function="break"/>
</match>
<nomatch>
<action function="speak-text" data="That input was invalid."/>
</nomatch>
</input>
<input pattern="(\d+) min (\d+) sec">
<match>
<action function="speak-text" data="You have $1 minutes, $2 seconds remaining $strftime(%Y-%m-%d)"/>
</match>
<nomatch>
<action function="speak-text" data="That input was invalid."/>
</nomatch>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->
<include>
<macro name="funny_prompts" pause="750">
<input pattern="(.*)">
<match>
<action function="play-file" data="ivr/ivr-wakey_wakey_sunshine.wav"/>
<action function="play-file" data="ivr/ivr-no_no_no.wav"/>
<action function="play-file" data="ivr/ivr-did_you_mean_to_press_key.wav"/>
<action function="play-file" data="ivr/ivr-seriously_mean_to_press_key.wav"/>
<action function="play-file" data="ivr/ivr-oh_whatever.wav"/>
<action function="play-file" data="ivr/ivr-one_more_mistake.wav"/>
<action function="play-file" data="ivr/ivr-congratulations_you_pressed_star.wav"/>
<action function="play-file" data="ivr/ivr-engineers_busy_assisting_other_sales.wav"/>
<action function="play-file" data="ivr/ivr-message_self_destruct.wav"/>
<action function="play-file" data="ivr/ivr-all_your_call_are_belong_to_us.wav"/>
<action function="play-file" data="ivr/ivr-love_those_touch_tones.wav"/>
<action function="play-file" data="ivr/ivr-yes_we_have_no_bananas.wav"/>
<action function="play-file" data="ivr/ivr-dude_you_suck.wav"/>
<action function="play-file" data="ivr/ivr-on_hold_indefinitely.wav"/>
<action function="play-file" data="ivr/ivr-youre_doing_it_wrong.wav"/>
<action function="play-file" data="ivr/ivr-were_asterisk_free.wav"/>
<action function="play-file" data="ivr/ivr-douche_telecom.wav"/>
<action function="play-file" data="ivr/ivr-asterisk_like_syphilis.wav"/>
<action function="play-file" data="ivr/ivr-freeguipy.wav"/>
<action function="play-file" data="ivr/ivr-terribly_wrong_awkward.wav"/>
<action function="play-file" data="ivr/ivr-it_was_that_bug.wav"/>
<action function="play-file" data="ivr/ivr-concentrate.wav"/>
<action function="play-file" data="ivr/ivr-founder_of_freesource.wav"/>
<action function="play-file" data="ivr/ivr-cold_foolish.wav"/>
<action function="play-file" data="ivr/ivr-trollover_minutes.wav"/>
<action function="play-file" data="ivr/ivr-yuno_silent_drill.wav"/>
<action function="play-file" data="ivr/ivr-beacuase.wav"/>
</match>
</input>
</macro>
</include>
\ No newline at end of file
<?xml version="1.0" encoding="Windows-1252"?>
<include><!--This line will be ignored it's here to validate the xml and is optional -->
<macro name="new_demo_ivr_main_menu" pause="100"> <!-- See conf/ivr_menus/ivr.conf.xml for an example on how to use this macro in an IVR -->
<input pattern="(.*)">
<match>
<action function="play-file" data="ivr/ivr-welcome_to_freeswitch.wav"/>
<action function="play-file" data="silence_stream://500"/>
<!-- Menu option 1: For information about FreeSWITCH... -->
<action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
<action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: To hear about ClueCon -->
<action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: For other options -->
<action function="play-file" data="ivr/ivr-for_other_options.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- The following macro is the same as new_demo_ivr_main_menu except it is the "short" version -->
<!-- The short version has all the options but not the initial greeting -->
<macro name="new_demo_ivr_main_menu_short" pause="100">
<input pattern="(.*)">
<match>
<!-- Menu option 1: For information about FreeSWITCH... -->
<action function="play-file" data="misc/misc-information_about_freeswitch.wav"/>
<action function="play-file" data="digits/1.wav"/>
<!-- Menu option 2: To learn more about FreeSWITCH Solutions... -->
<action function="play-file" data="misc/misc-learn_more_about_freeswitch_solutions.wav"/>
<action function="play-file" data="digits/2.wav"/>
<!-- Menu option 3: To hear about ClueCon -->
<action function="play-file" data="misc/misc-to_hear_about_cluecon.wav"/>
<action function="play-file" data="digits/3.wav"/>
<!-- Menu option 4: For other options -->
<action function="play-file" data="ivr/ivr-for_other_options.wav"/>
<action function="play-file" data="digits/4.wav"/>
<!-- Menu option 9: Repeat these options -->
<action function="play-file" data="ivr/ivr-to_repeat_these_options.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
</match>
</input>
</macro>
<!-- More information about FreeSWITCH... -->
<macro name="learn_about_freeswitch_sub_menu">
<input pattern="(.*)">
<match>
<!-- Information about FreeSWITCH and OSTAG... -->
<action function="play-file" data="misc-freeswitch_is_state_of_the_art.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-it_is_stable_scalable_extensible.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-free_to_download.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-freeswitch_sponsored_by_ostag.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-ostag_learn_more.wav"/>
<action function="play-file" data="silence_stream://50"/>
<!-- Menu option 9: Repeat this information -->
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
<!-- More information about FreeSWITCH Solutions... -->
<macro name="learn_about_freeswitch_solutions_sub_menu">
<input pattern="(.*)">
<match>
<!-- Information about FreeSWITCH Solutions... -->
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="[[sounds from tony/brian]]"/>
<action function="play-file" data="silence_stream://50"/>
<!-- Menu option 9: Repeat this information -->
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
<!-- More information about ClueCon -->
<macro name="learn_about_cluecon_sub_menu">
<input pattern="(.*)">
<match>
<!-- Information about ClueCon... -->
<action function="play-file" data="misc-cluecon_is_premier_conference.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-chicago_each_summer.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-wide_range_of_persons.wav"/>
<action function="play-file" data="silence_stream://50"/>
<action function="play-file" data="misc-support_open_source_by_attending.wav"/>
<action function="play-file" data="silence_stream://500"/>
<action function="play-file" data="ivr-register_for_cluecon.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/1.wav"/>
<action function="play-file" data="silence_stream://500"/>
<!-- Menu option 9: Repeat this information -->
<action function="play-file" data="ivr/ivr-repeat_this_information.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/9.wav"/>
<action function="play-file" data="silence_stream://2000"/>
<!-- Menu option *: Return to top menu -->
<action function="play-file" data="ivr/ivr-to_return_to_previous_menu.wav"/>
<action function="play-file" data="ivr/ivr-please.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="play-file" data="digits/star.wav"/>
</match>
</input>
</macro>
</include><!--This line will be ignored it's here to validate the xml and is optional -->
<include>
<macro name="directory_intro">
<input pattern="^(last_name)" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-enter_person.wav"/>
<action function="play-file" data="directory/dir-last_name.wav"/>
</match>
</input>
<input pattern="^(first_name)" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-enter_person.wav"/>
<action function="play-file" data="directory/dir-first_name.wav"/>
</match>
</input>
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-to_search_by.wav"/>
<action function="play-file" data="directory/dir-first_name.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
<match>
<action function="play-file" data="directory/dir-to_search_by.wav"/>
<action function="play-file" data="directory/dir-last_name.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_min_search_digits">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-specify_mininum.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="directory/dir-letters_of_person_name.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_count">
<input pattern="^0$" break_on_match="true">
<match>
<action function="play-file" data="directory/dir-no_matching_results.wav"/>
</match>
</input>
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="directory/dir-result_match.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_count_too_large">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-too_many_result.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_last">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-no_more_results.wav"/>
</match>
</input>
</macro>
<macro name="directory_result_item">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-result_number.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
</match>
</input>
</macro>
<macro name="directory_result_at">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="directory/dir-at_extension.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_result_menu">
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
<match>
<action function="play-file" data="directory/dir-to_select_entry.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-for_next.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-for_prev.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
<action function="play-file" data="directory/dir-start_new_search.wav"/>
<action function="play-file" data="voicemail/vm-press.wav"/>
<action function="say" data="$4" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
<macro name="directory_result_say_name">
<input pattern="^(.*)$">
<match>
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->
<include>
<macro name="directory_intro">
<input pattern="^(last_name)" break_on_match="false">
<match>
<action function="speak-text" data="Please enter the first few digit of the person last name"/>
</match>
</input>
<input pattern="^(first_name)" break_on_match="false">
<match>
<action function="speak-text" data="Please enter the first few digit of the person first name"/>
</match>
</input>
<input pattern="^(last_name):([0-9#*])$" break_on_match="false">
<match>
<action function="speak-text" data="to search by first name, press $2"/>
</match>
</input>
<input pattern="^(first_name):([0-9#*])$" break_on_match="false">
<match>
<action function="speak-text" data="to search by last name, press $2"/>
</match>
</input>
</macro>
<macro name="directory_min_search_digits">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="You need to specify a minimum the first $1 letters of the person name, try again."/>
</match>
</input>
</macro>
<macro name="directory_result_count">
<input pattern="^0$" break_on_match="true">
<match>
<action function="speak-text" data="Your search match no user on this system, try again."/>
</match>
</input>
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1 result match your search"/>
</match>
</input>
</macro>
<macro name="directory_result_count_too_large">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Your search returned too many result, please try again"/>
</match>
</input>
</macro>
<macro name="directory_result_last">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="No more result"/>
</match>
</input>
</macro>
<macro name="directory_result_item">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="Result number $1"/>
</match>
</input>
</macro>
<macro name="directory_result_menu">
<input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$">
<match>
<action function="speak-text" data="To select this entry press $1, for the next entry press $2, for the previous entry press $3, to make a new search press $4"/>
</match>
</input>
</macro>
<macro name="directory_result_at">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="at extension $1"/>
</match>
</input>
</macro>
<macro name="directory_result_say_name">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->
<include>
<language name="en" say-module="en" sound-prefix="$${sounds_dir}/en/us/callie" tts-engine="cepstral" tts-voice="callie">
<phrases>
<macros>
<X-PRE-PROCESS cmd="include" data="demo/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml -->
<!-- voicemail_en_tts is purely implemented with tts, we have the files based one that is the default. -->
<X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral -->
<X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral -->
<X-PRE-PROCESS cmd="include" data="ivr/*.xml"/> <!-- IVR and custom phrases go here -->
</macros>
<X-PRE-PROCESS cmd="include" data="vm/voicemail_ivr.xml"/>
</phrases>
</language>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->
<include>
<macro name="fifo_position">
<input pattern="^(.*)$">
<match>
<action function="play-file" data="ivr/ivr-you_are_number.wav"/>
<action function="say" data="${fifo_position}" method="pronounced" type="items"/>
<action function="play-file" data="ivr/ivr-in_line.wav"/>
</match>
</input>
</macro>
<macro name="queue_position">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="ivr/ivr-you_are_number.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="play-file" data="ivr/ivr-in_line.wav"/>
</match>
</input>
</macro>
<macro name="has_called_conf">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="$1"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-has_joined.wav"/>
</match>
</input>
</macro>
<macro name="has_left_conf">
<input pattern="^(\d+)$">
<match>
<action function="play-file" data="$1"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-has_left.wav"/>
</match>
</input>
</macro>
<macro name="callers_in_conf">
<input pattern="^1$" break_on_match="true">
<match>
<action function="sleep" data="500"/>
<!--<action function="play-file" data="ivr/ivr-there_is.wav"/>-->
<action function="play-file" data="digits/1.wav"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-listener_in_conference.wav"/>
</match>
</input>
<input pattern="^(\d+)$">
<match>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-there_are.wav"/>
<action function="say" data="$1" method="pronounced" type="items"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-members_in_conference.wav"/>
</match>
<nomatch>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-there_are.wav"/>
<action function="play-file" data="digits/0.wav"/>
<action function="sleep" data="100"/>
<action function="play-file" data="conference/conf-members_in_conference.wav"/>
</nomatch>
</input>
</macro>
<macro name="enter_dest_number">
<input pattern="^(.*)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-enter_destination_telephone_number.wav"/>
<action function="sleep" data="1000"/>
</match>
</input>
</macro>
<macro name="enter_src_number">
<input pattern="^(.*)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-enter_source_telephone_number.wav"/>
<action function="sleep" data="1000"/>
</match>
</input>
</macro>
<macro name="call_forward_set">
<input pattern="^(\d+):(\d+)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
<action function="sleep" data="400"/>
<action function="say" data="$1" method="iterated" type="number"/>
<action function="sleep" data="400"/>
<action function="play-file" data="digits/2.wav"/>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
<action function="sleep" data="400"/>
<action function="say" data="$2" method="iterated" type="number"/>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-call_forwarding_has_been_set.wav"/>
<action function="sleep" data="1500"/>
</match>
</input>
</macro>
<macro name="call_forward_cancel">
<input pattern="^(\d+)$">
<match>
<action function="sleep" data="1000"/>
<action function="play-file" data="ivr/ivr-extension_number.wav"/>
<action function="sleep" data="400"/>
<action function="say" data="$1" method="iterated" type="number"/>
<action function="play-file" data="ivr/ivr-call_forwarding_has_been_cancelled.wav"/>
<action function="sleep" data="1500"/>
</match>
</input>
</macro>
<macro name="screen_confirm">
<input pattern="^(.*)$">
<match>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-call_from.wav"/>
<action function="sleep" data="250"/>
<!-- Note, be sure to pass in the full path to the file or else!! -->
<action function="play-file" data="$1"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_reject.wav"/>
<action function="sleep" data="50"/>
<action function="play-file" data="ivr/ivr-hang_up.wav"/>
<action function="sleep" data="1500"/>
<action function="play-file" data="ivr/ivr-call_from.wav"/>
<action function="sleep" data="250"/>
<action function="play-file" data="$1"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_accept_press_one.wav"/>
<action function="sleep" data="500"/>
<action function="play-file" data="ivr/ivr-to_reject.wav"/>
<action function="sleep" data="50"/>
<action function="play-file" data="ivr/ivr-hang_up.wav"/>
<action function="sleep" data="1500"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->
差异被折叠。
<include>
<macro name="voicemail_enter_id">
<input pattern="(.*)">
<match>
<action function="speak-text" data="please enter your i d, followed by $1."/>
</match>
</input>
</macro>
<macro name="voicemail_enter_pass">
<input pattern="(.*)">
<match>
<action function="speak-text" data="please enter your password, followed by $1."/>
</match>
</input>
</macro>
<macro name="voicemail_fail_auth">
<input pattern="(.*)">
<match>
<action function="speak-text" data="login incorrect."/>
</match>
</input>
</macro>
<macro name="voicemail_hello">
<input pattern="(.*)">
<match>
<action function="speak-text" data="welcome to your voicemail."/>
</match>
</input>
</macro>
<macro name="voicemail_goodbye">
<input pattern="(.*)">
<match>
<action function="speak-text" data="goodbye."/>
</match>
</input>
</macro>
<macro name="voicemail_abort">
<input pattern="(.*)">
<match>
<action function="speak-text" data="too many failed attempts."/>
</match>
</input>
</macro>
<macro name="voicemail_message_count">
<input pattern="^1:(.*)$" break_on_match="true">
<match>
<action function="speak-text" data="you have 1 $1 message in folder ${voicemail_current_folder}."/>
</match>
</input>
<input pattern="^(\d+):(.*)$">
<match>
<action function="speak-text" data="you have $1 $2 messages in folder ${voicemail_current_folder}."/>
</match>
</input>
</macro>
<macro name="voicemail_menu">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="To listen to new messages, press $1, To listen to saved messages, press $2, For advanced options, press $3, to exit, press $4."/>
</match>
</input>
</macro>
<macro name="voicemail_config_menu">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="To record a greeting, press $1, To choose a greeting, press $2, To record your name, press $3, to change your password, press $5, to return to the main menu, press $5."/>
</match>
</input>
</macro>
<macro name="voicemail_record_name">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="at the tone, please record your name, press any key or stop talking to end the recording."/>
</match>
</input>
</macro>
<macro name="voicemail_record_file_check">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="To listen to the recording, press $1, To save the recording, press $2, To re record, press $3."/>
</match>
</input>
</macro>
<macro name="voicemail_record_urgent_check">
<input pattern="^([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="To mark this message urgent, press $1, To continue, press $2."/>
</match>
</input>
</macro>
<macro name="voicemail_invalid_extension">
<input pattern="^([0-9#*])$">
<match>
<action function="speak-text" data="$1 is not a valid extension."/>
</match>
</input>
</macro>
<macro name="voicemail_forward_message_enter_extension">
<input pattern="^([0-9#*])$">
<match>
<action function="speak-text" data="enter the extension you wish to forward to, then press $1"/>
</match>
</input>
</macro>
<macro name="voicemail_forward_prepend">
<input pattern="^([0-9#*])$">
<match>
<action function="speak-text" data="To record an announcement, press $1."/>
</match>
</input>
</macro>
<macro name="voicemail_listen_file_check">
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$">
<match>
<action function="speak-text"
data="To listen to the recording again, press $1, To save the recording, press $2, To delete the recording, press $3, to forward the recording to your email, press $4, to call the caller now, press $5, To forward this message to another extension, press $6."/>
</match>
</input>
</macro>
<macro name="voicemail_choose_greeting">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="choose a greeting between 1 and 3."/>
</match>
</input>
</macro>
<macro name="voicemail_choose_greeting_fail">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="invalid value."/>
</match>
</input>
</macro>
<macro name="voicemail_record_greeting">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="record your greeting at the tone, press any key or stop talking to end the recording."/>
</match>
</input>
</macro>
<macro name="voicemail_record_message">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="record your message at the tone, press any key or stop talking to end the recording."/>
</match>
</input>
</macro>
<macro name="voicemail_greeting_selected">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="greeting $1 selected."/>
</match>
</input>
</macro>
<macro name="voicemail_play_greeting">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1 is not available."/>
</match>
</input>
</macro>
<macro name="voicemail_say_number">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1"/>
</match>
</input>
</macro>
<macro name="voicemail_say_message_number">
<input pattern="^([a-z]+):(.*)$">
<match>
<action function="speak-text" data="$1 message number $2."/>
</match>
</input>
</macro>
<macro name="voicemail_say_phone_number">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1."/>
</match>
</input>
</macro>
<macro name="voicemail_say_name">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="$1."/>
</match>
</input>
</macro>
<macro name="voicemail_ack">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="message $1"/>
</match>
</input>
</macro>
<macro name="voicemail_say_date">
<input pattern="^(.*)$">
<match>
<action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/>
</match>
</input>
</macro>
</include>
<!--
For Emacs:
Local Variables:
mode:xml
indent-tabs-mode:nil
tab-width:2
c-basic-offset:2
End:
For VIM:
vim:set softtabstop=2 shiftwidth=2 tabstop=2 expandtab:
-->
差异被折叠。
<profile name="external-ipv6">
<!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
<!-- This profile is only for outbound registrations to providers -->
<gateways>
<X-PRE-PROCESS cmd="include" data="external-ipv6/*.xml"/>
</gateways>
<aliases>
<!--
<alias name="outbound"/>
<alias name="nat"/>
-->
</aliases>
<domains>
<domain name="all" alias="false" parse="true"/>
</domains>
<settings>
<param name="debug" value="0"/>
<!-- If you want FreeSWITCH to shutdown if this profile fails to load, uncomment the next line. -->
<!-- <param name="shutdown-on-fail" value="true"/> -->
<param name="sip-trace" value="no"/>
<param name="sip-capture" value="no"/>
<param name="rfc2833-pt" value="101"/>
<!-- RFC 5626 : Send reg-id and sip.instance -->
<!--<param name="enable-rfc-5626" value="true"/> -->
<param name="sip-port" value="$${external_sip_port}"/>
<param name="dialplan" value="XML"/>
<param name="context" value="public"/>
<param name="dtmf-duration" value="2000"/>
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
<param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
<param name="hold-music" value="$${hold_music}"/>
<param name="rtp-timer-name" value="soft"/>
<!--<param name="enable-100rel" value="true"/>-->
<!--<param name="disable-srv503" value="true"/>-->
<!-- This could be set to "passive" -->
<param name="local-network-acl" value="localnet.auto"/>
<param name="manage-presence" value="false"/>
<!-- used to share presence info across sofia profiles
manage-presence needs to be set to passive on this profile
if you want it to behave as if it were the internal profile
for presence.
-->
<!-- Name of the db to use for this profile -->
<!--<param name="dbname" value="share_presence"/>-->
<!--<param name="presence-hosts" value="$${domain}"/>-->
<!--<param name="force-register-domain" value="$${domain}"/>-->
<!--all inbound reg will stored in the db using this domain -->
<!--<param name="force-register-db-domain" value="$${domain}"/>-->
<!-- ************************************************* -->
<!--<param name="aggressive-nat-detection" value="true"/>-->
<param name="inbound-codec-negotiation" value="generous"/>
<param name="nonce-ttl" value="60"/>
<param name="auth-calls" value="false"/>
<param name="inbound-late-negotiation" value="true"/>
<param name="inbound-zrtp-passthru" value="true"/> <!-- (also enables late negotiation) -->
<!--
DO NOT USE HOSTNAMES, ONLY IP ADDRESSES IN THESE SETTINGS!
-->
<param name="rtp-ip" value="$${local_ip_v6}"/>
<param name="sip-ip" value="$${local_ip_v6}"/>
<param name="ext-rtp-ip" value="auto-nat"/>
<param name="ext-sip-ip" value="auto-nat"/>
<param name="rtp-timeout-sec" value="300"/>
<param name="rtp-hold-timeout-sec" value="1800"/>
<!--<param name="enable-3pcc" value="true"/>-->
<!-- TLS: disabled by default, set to "true" to enable -->
<param name="tls" value="$${external_ssl_enable}"/>
<!-- Set to true to not bind on the normal sip-port but only on the TLS port -->
<param name="tls-only" value="false"/>
<!-- additional bind parameters for TLS -->
<param name="tls-bind-params" value="transport=tls"/>
<!-- Port to listen on for TLS requests. (5081 will be used if unspecified) -->
<param name="tls-sip-port" value="$${external_tls_port}"/>
<!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
<!--<param name="tls-cert-dir" value=""/>-->
<!-- Optionally set the passphrase password used by openSSL to encrypt/decrypt TLS private key files -->
<param name="tls-passphrase" value=""/>
<!-- Verify the date on TLS certificates -->
<param name="tls-verify-date" value="true"/>
<!-- TLS verify policy, when registering/inviting gateways with other servers (outbound) or handling inbound registration/invite requests how should we verify their certificate -->
<!-- set to 'in' to only verify incoming connections, 'out' to only verify outgoing connections, 'all' to verify all connections, also 'in_subjects', 'out_subjects' and 'all_subjects' for subject validation. Multiple policies can be split with a '|' pipe -->
<param name="tls-verify-policy" value="none"/>
<!-- Certificate max verify depth to use for validating peer TLS certificates when the verify policy is not none -->
<param name="tls-verify-depth" value="2"/>
<!-- If the tls-verify-policy is set to subjects_all or subjects_in this sets which subjects are allowed, multiple subjects can be split with a '|' pipe -->
<param name="tls-verify-in-subjects" value=""/>
<!-- TLS version ("sslv23" (default), "tlsv1"). NOTE: Phones may not work with TLSv1 -->
<param name="tls-version" value="$${sip_tls_version}"/>
</settings>
</profile>
<profile name="external">
<!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
<!-- This profile is only for outbound registrations to providers -->
<gateways>
<X-PRE-PROCESS cmd="include" data="external/*.xml"/>
</gateways>
<aliases>
<!--
<alias name="outbound"/>
<alias name="nat"/>
-->
</aliases>
<domains>
<domain name="all" alias="false" parse="true"/>
</domains>
<settings>
<param name="debug" value="0"/>
<!-- If you want FreeSWITCH to shutdown if this profile fails to load, uncomment the next line. -->
<!-- <param name="shutdown-on-fail" value="true"/> -->
<param name="sip-trace" value="no"/>
<param name="sip-capture" value="no"/>
<param name="rfc2833-pt" value="101"/>
<!-- RFC 5626 : Send reg-id and sip.instance -->
<!--<param name="enable-rfc-5626" value="true"/> -->
<param name="sip-port" value="$${external_sip_port}"/>
<param name="dialplan" value="XML"/>
<param name="context" value="public"/>
<param name="dtmf-duration" value="2000"/>
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
<param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
<param name="hold-music" value="$${hold_music}"/>
<param name="rtp-timer-name" value="soft"/>
<!--<param name="enable-100rel" value="true"/>-->
<!--<param name="disable-srv503" value="true"/>-->
<!-- This could be set to "passive" -->
<param name="local-network-acl" value="localnet.auto"/>
<param name="manage-presence" value="false"/>
<!-- used to share presence info across sofia profiles
manage-presence needs to be set to passive on this profile
if you want it to behave as if it were the internal profile
for presence.
-->
<!-- Name of the db to use for this profile -->
<!--<param name="dbname" value="share_presence"/>-->
<!--<param name="presence-hosts" value="$${domain}"/>-->
<!--<param name="force-register-domain" value="$${domain}"/>-->
<!--all inbound reg will stored in the db using this domain -->
<!--<param name="force-register-db-domain" value="$${domain}"/>-->
<!-- ************************************************* -->
<!--<param name="aggressive-nat-detection" value="true"/>-->
<param name="inbound-codec-negotiation" value="generous"/>
<param name="nonce-ttl" value="60"/>
<param name="auth-calls" value="false"/>
<param name="inbound-late-negotiation" value="true"/>
<param name="inbound-zrtp-passthru" value="true"/> <!-- (also enables late negotiation) -->
<!--
DO NOT USE HOSTNAMES, ONLY IP ADDRESSES IN THESE SETTINGS!
-->
<param name="rtp-ip" value="$${local_ip_v4}"/>
<param name="sip-ip" value="$${local_ip_v4}"/>
<param name="ext-rtp-ip" value="auto-nat"/>
<param name="ext-sip-ip" value="auto-nat"/>
<param name="rtp-timeout-sec" value="300"/>
<param name="rtp-hold-timeout-sec" value="1800"/>
<!--<param name="enable-3pcc" value="true"/>-->
<!-- TLS: disabled by default, set to "true" to enable -->
<param name="tls" value="$${external_ssl_enable}"/>
<!-- Set to true to not bind on the normal sip-port but only on the TLS port -->
<param name="tls-only" value="false"/>
<!-- additional bind parameters for TLS -->
<param name="tls-bind-params" value="transport=tls"/>
<!-- Port to listen on for TLS requests. (5081 will be used if unspecified) -->
<param name="tls-sip-port" value="$${external_tls_port}"/>
<!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
<!--<param name="tls-cert-dir" value=""/>-->
<!-- Optionally set the passphrase password used by openSSL to encrypt/decrypt TLS private key files -->
<param name="tls-passphrase" value=""/>
<!-- Verify the date on TLS certificates -->
<param name="tls-verify-date" value="true"/>
<!-- TLS verify policy, when registering/inviting gateways with other servers (outbound) or handling inbound registration/invite requests how should we verify their certificate -->
<!-- set to 'in' to only verify incoming connections, 'out' to only verify outgoing connections, 'all' to verify all connections, also 'in_subjects', 'out_subjects' and 'all_subjects' for subject validation. Multiple policies can be split with a '|' pipe -->
<param name="tls-verify-policy" value="none"/>
<!-- Certificate max verify depth to use for validating peer TLS certificates when the verify policy is not none -->
<param name="tls-verify-depth" value="2"/>
<!-- If the tls-verify-policy is set to subjects_all or subjects_in this sets which subjects are allowed, multiple subjects can be split with a '|' pipe -->
<param name="tls-verify-in-subjects" value=""/>
<!-- TLS version ("sslv23" (default), "tlsv1"). NOTE: Phones may not work with TLSv1 -->
<param name="tls-version" value="$${sip_tls_version}"/>
</settings>
</profile>
<include>
<!--<gateway name="asterlink.com">-->
<!--/// account username *required* ///-->
<!--<param name="username" value="cluecon"/>-->
<!--/// auth realm: *optional* same as gateway name, if blank ///-->
<!--<param name="realm" value="asterlink.com"/>-->
<!--/// username to use in from: *optional* same as username, if blank ///-->
<!--<param name="from-user" value="cluecon"/>-->
<!--/// domain to use in from: *optional* same as realm, if blank ///-->
<!--<param name="from-domain" value="asterlink.com"/>-->
<!--/// account password *required* ///-->
<!--<param name="password" value="2007"/>-->
<!--/// extension for inbound calls: *optional* same as username, if blank ///-->
<!--<param name="extension" value="cluecon"/>-->
<!--/// proxy host: *optional* same as realm, if blank ///-->
<!--<param name="proxy" value="asterlink.com"/>-->
<!--/// send register to this proxy: *optional* same as proxy, if blank ///-->
<!--<param name="register-proxy" value="mysbc.com"/>-->
<!--/// expire in seconds: *optional* 3600, if blank ///-->
<!--<param name="expire-seconds" value="60"/>-->
<!--/// do not register ///-->
<!--<param name="register" value="false"/>-->
<!-- which transport to use for register -->
<!--<param name="register-transport" value="udp"/>-->
<!--How many seconds before a retry when a failure or timeout occurs -->
<!--<param name="retry-seconds" value="30"/>-->
<!--Use the callerid of an inbound call in the from field on outbound calls via this gateway -->
<!--<param name="caller-id-in-from" value="false"/>-->
<!--extra sip params to send in the contact-->
<!--<param name="contact-params" value=""/>-->
<!-- Put the extension in the contact -->
<!--<param name="extension-in-contact" value="true"/>-->
<!--send an options ping every x seconds, failure will unregister and/or mark it down-->
<!--<param name="ping" value="25"/>-->
<!--<param name="cid-type" value="rpid"/>-->
<!--rfc5626 : Abilitazione rfc5626 ///-->
<!--<param name="rfc-5626" value="true"/>-->
<!--rfc5626 : extra sip params to send in the contact-->
<!--<param name="reg-id" value="1"/>-->
<!--</gateway>-->
</include>
<profile name="internal-ipv6">
<!--
This is an example of a sofia profile setup to listen on IPv6.
-->
<!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files -->
<!--aliases are other names that will work as a valid profile name for this profile-->
<settings>
<!-- Can be set to "_undef_" to remove the User-Agent header -->
<!-- <param name="user-agent-string" value="FreeSWITCH Rocks!"/> -->
<param name="debug" value="0"/>
<param name="sip-trace" value="no"/>
<param name="context" value="public"/>
<param name="rfc2833-pt" value="101"/>
<!-- port to bind to for sip traffic -->
<param name="sip-port" value="$${internal_sip_port}"/>
<param name="dialplan" value="XML"/>
<param name="dtmf-duration" value="2000"/>
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
<param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
<param name="use-rtp-timer" value="true"/>
<param name="rtp-timer-name" value="soft"/>
<!-- ip address to use for rtp -->
<param name="rtp-ip" value="$${local_ip_v6}"/>
<!-- ip address to bind to -->
<param name="sip-ip" value="$${local_ip_v6}"/>
<param name="hold-music" value="$${hold_music}"/>
<!--<param name="enable-100rel" value="false"/>-->
<!--<param name="disable-srv503" value="true"/>-->
<param name="apply-inbound-acl" value="domains"/>
<!--<param name="apply-register-acl" value="domains"/>-->
<!--<param name="dtmf-type" value="info"/>-->
<param name="record-template" value="$${recordings_dir}/${caller_id_number}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
<!--enable to use presence and mwi -->
<param name="manage-presence" value="true"/>
<!-- This setting is for AAL2 bitpacking on G726 -->
<!-- <param name="bitpacking" value="aal2"/> -->
<!--max number of open dialogs in proceeding -->
<!--<param name="max-proceeding" value="1000"/>-->
<!--session timers for all call to expire after the specified seconds -->
<!--<param name="session-timeout" value="1800"/>-->
<!--<param name="multiple-registrations" value="true"/>-->
<!--set to 'greedy' if you want your codec list to take precedence -->
<param name="inbound-codec-negotiation" value="generous"/>
<!-- if you want to send any special bind params of your own -->
<!--<param name="bind-params" value="transport=udp"/>-->
<!--<param name="unregister-on-options-fail" value="true"/>-->
<!-- TLS: disabled by default, set to "true" to enable -->
<param name="tls" value="$${internal_ssl_enable}"/>
<!-- additional bind parameters for TLS -->
<param name="tls-bind-params" value="transport=tls"/>
<!-- Port to listen on for TLS requests. (5061 will be used if unspecified) -->
<param name="tls-sip-port" value="$${internal_tls_port}"/>
<!-- Location of the agent.pem and cafile.pem ssl certificates (needed for TLS server) -->
<param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
<!-- TLS version ("sslv23" (default), "tlsv1"). NOTE: Phones may not work with TLSv1 -->
<param name="tls-version" value="$${sip_tls_version}"/>
<!--If you don't want to pass through timestampes from 1 RTP call to another (on a per call basis with rtp_rewrite_timestamps chanvar)-->
<!--<param name="rtp-rewrite-timestamps" value="true"/>-->
<!--<param name="pass-rfc2833" value="true"/>-->
<!--If you have ODBC support and a working dsn you can use it instead of SQLite-->
<!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
<!--Uncomment to set all inbound calls to no media mode-->
<!--<param name="inbound-bypass-media" value="true"/>-->
<!--Uncomment to set all inbound calls to proxy media mode-->
<!--<param name="inbound-proxy-media" value="true"/>-->
<!-- Let calls hit the dialplan before selecting codec for the a-leg -->
<param name="inbound-late-negotiation" value="true"/>
<!-- Allow ZRTP clients to negotiate end-to-end security associations (also enables late negotiation) -->
<param name="inbound-zrtp-passthru" value="true"/>
<!-- this lets anything register -->
<!-- comment the next line and uncomment one or both of the other 2 lines for call authentication -->
<!-- <param name="accept-blind-reg" value="true"/> -->
<!-- accept any authentication without actually checking (not a good feature for most people) -->
<!-- <param name="accept-blind-auth" value="true"/> -->
<!-- suppress CNG on this profile or per call with the 'suppress_cng' variable -->
<!-- <param name="suppress-cng" value="true"/> -->
<!--TTL for nonce in sip auth-->
<param name="nonce-ttl" value="60"/>
<!--Uncomment if you want to force the outbound leg of a bridge to only offer the codec
that the originator is using-->
<!--<param name="disable-transcoding" value="true"/>-->
<!-- Used for when phones respond to a challenged ACK with method INVITE in the hash -->
<!--<param name="NDLB-broken-auth-hash" value="true"/>-->
<!-- add a ;received="<ip>:<port>" to the contact when replying to register for nat handling -->
<!--<param name="NDLB-received-in-nat-reg-contact" value="true"/>-->
<param name="auth-calls" value="$${internal_auth_calls}"/>
<!-- on authed calls, authenticate *all* the packets not just invite -->
<param name="auth-all-packets" value="false"/>
<!-- <param name="ext-rtp-ip" value="$${external_rtp_ip}"/> -->
<!-- <param name="ext-sip-ip" value="$${external_sip_ip}"/> -->
<!-- rtp inactivity timeout -->
<param name="rtp-timeout-sec" value="300"/>
<param name="rtp-hold-timeout-sec" value="1800"/>
<!-- VAD choose one (out is a good choice); -->
<!-- <param name="vad" value="in"/> -->
<!-- <param name="vad" value="out"/> -->
<!-- <param name="vad" value="both"/> -->
<!--<param name="alias" value="sip:10.0.1.251:5555"/>-->
<!--
These are enabled to make the default config work better out of the box.
If you need more than ONE domain you'll need to not use these options.
-->
<!--all inbound reg will look in this domain for the users -->
<param name="force-register-domain" value="$${domain}"/>
<!--all inbound reg will stored in the db using this domain -->
<param name="force-register-db-domain" value="$${domain}"/>
<!-- disable register and transfer which may be undesirable in a public switch -->
<!--<param name="disable-transfer" value="true"/>-->
<!--<param name="disable-register" value="true"/>-->
<!--<param name="enable-3pcc" value="true"/>-->
<!-- use stun when specified (default is true) -->
<!--<param name="stun-enabled" value="true"/>-->
<!-- use stun when specified (default is true) -->
<!-- set to true to have the profile determine stun is not useful and turn it off globally-->
<!--<param name="stun-auto-disable" value="true"/>-->
<!-- the following can be used as workaround with bogus SRV/NAPTR records -->
<!--<param name="disable-srv" value="false" />-->
<!--<param name="disable-naptr" value="false" />-->
</settings>
</profile>
差异被折叠。
<include>
<X-PRE-PROCESS cmd="set" data="default_password=1234"/>
<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/en/us/callie"/>
<X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>
<X-PRE-PROCESS cmd="set" data="domain_name=$${domain}"/>
<X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
<X-PRE-PROCESS cmd="set" data="use_profile=external"/>
<X-PRE-PROCESS cmd="set" data="rtp_sdes_suites=AEAD_AES_256_GCM_8|AEAD_AES_128_GCM_8|AES_CM_256_HMAC_SHA1_80|AES_CM_192_HMAC_SHA1_80|AES_CM_128_HMAC_SHA1_80|AES_CM_256_HMAC_SHA1_32|AES_CM_192_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_32|AES_CM_128_NULL_AUTH"/>
<X-PRE-PROCESS cmd="set" data="zrtp_secure_media=true"/>
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,VP8,H264"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,VP8,H264"/>
<X-PRE-PROCESS cmd="set" data="outbound_caller_name=FreeSWITCH"/>
<X-PRE-PROCESS cmd="set" data="outbound_caller_id=0000000000"/>
<X-PRE-PROCESS cmd="set" data="call_debug=false"/>
<X-PRE-PROCESS cmd="set" data="console_loglevel=debug"/>
<X-PRE-PROCESS cmd="set" data="presence_privacy=false"/>
<X-PRE-PROCESS cmd="set" data="au-ring=%(400,200,383,417);%(400,2000,383,417)"/>
<X-PRE-PROCESS cmd="set" data="be-ring=%(1000,3000,425)"/>
<X-PRE-PROCESS cmd="set" data="ca-ring=%(2000,4000,440,480)"/>
<X-PRE-PROCESS cmd="set" data="cn-ring=%(1000,4000,450)"/>
<X-PRE-PROCESS cmd="set" data="cy-ring=%(1500,3000,425)"/>
<X-PRE-PROCESS cmd="set" data="cz-ring=%(1000,4000,425)"/>
<X-PRE-PROCESS cmd="set" data="de-ring=%(1000,4000,425)"/>
<X-PRE-PROCESS cmd="set" data="dk-ring=%(1000,4000,425)"/>
<X-PRE-PROCESS cmd="set" data="dz-ring=%(1500,3500,425)"/>
<X-PRE-PROCESS cmd="set" data="eg-ring=%(2000,1000,475,375)"/>
<X-PRE-PROCESS cmd="set" data="es-ring=%(1500,3000,425)"/>
<X-PRE-PROCESS cmd="set" data="fi-ring=%(1000,4000,425)"/>
<X-PRE-PROCESS cmd="set" data="fr-ring=%(1500,3500,440)"/>
<X-PRE-PROCESS cmd="set" data="hk-ring=%(400,200,440,480);%(400,3000,440,480)"/>
<X-PRE-PROCESS cmd="set" data="hu-ring=%(1250,3750,425)"/>
<X-PRE-PROCESS cmd="set" data="il-ring=%(1000,3000,400)"/>
<X-PRE-PROCESS cmd="set" data="in-ring=%(400,200,425,375);%(400,2000,425,375)"/>
<X-PRE-PROCESS cmd="set" data="jp-ring=%(1000,2000,420,380)"/>
<X-PRE-PROCESS cmd="set" data="ko-ring=%(1000,2000,440,480)"/>
<X-PRE-PROCESS cmd="set" data="pk-ring=%(1000,2000,400)"/>
<X-PRE-PROCESS cmd="set" data="pl-ring=%(1000,4000,425)"/>
<X-PRE-PROCESS cmd="set" data="ro-ring=%(1850,4150,475,425)"/>
<X-PRE-PROCESS cmd="set" data="rs-ring=%(1000,4000,425)"/>
<X-PRE-PROCESS cmd="set" data="ru-ring=%(800,3200,425)"/>
<X-PRE-PROCESS cmd="set" data="sa-ring=%(1200,4600,425)"/>
<X-PRE-PROCESS cmd="set" data="tr-ring=%(2000,4000,450)"/>
<X-PRE-PROCESS cmd="set" data="uk-ring=%(400,200,400,450);%(400,2000,400,450)"/>
<X-PRE-PROCESS cmd="set" data="us-ring=%(2000,4000,440,480)"/>
<X-PRE-PROCESS cmd="set" data="bong-ring=v=-7;%(100,0,941.0,1477.0);v=-7;>=2;+=.1;%(1400,0,350,440)"/>
<X-PRE-PROCESS cmd="set" data="beep=%(1000,0,640)"/>
<X-PRE-PROCESS cmd="set" data="sit=%(274,0,913.8);%(274,0,1370.6);%(380,0,1776.7)"/>
<X-PRE-PROCESS cmd="set" data="sip_tls_version=tlsv1,tlsv1.1,tlsv1.2"/>
<X-PRE-PROCESS cmd="set" data="sip_tls_ciphers=ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"/>
<!-- Internal SIP Profile -->
<X-PRE-PROCESS cmd="set" data="internal_auth_calls=true"/>
<X-PRE-PROCESS cmd="set" data="internal_sip_port=5080"/>
<X-PRE-PROCESS cmd="set" data="internal_tls_port=5081"/>
<X-PRE-PROCESS cmd="set" data="internal_ssl_enable=false"/>
<!-- External SIP Profile -->
<X-PRE-PROCESS cmd="set" data="external_auth_calls=false"/>
<X-PRE-PROCESS cmd="set" data="external_sip_port=5090"/>
<X-PRE-PROCESS cmd="set" data="external_tls_port=5091"/>
<X-PRE-PROCESS cmd="set" data="external_ssl_enable=false"/>
<!-- Setting the max bandwdith -->
<X-PRE-PROCESS cmd="set" data="rtp_video_max_bandwidth_in=1mb"/>
<X-PRE-PROCESS cmd="set" data="rtp_video_max_bandwidth_out=1mb"/>
<!-- WebRTC Video -->
<!-- Suppress CNG for WebRTC Audio -->
<X-PRE-PROCESS cmd="set" data="suppress_cng=true"/>
<!-- Enable liberal DTMF for those that can't get it right -->
<X-PRE-PROCESS cmd="set" data="rtp_liberal_dtmf=true"/>
<!-- Helps with WebRTC Audio -->
<X-PRE-PROCESS cmd="set" data="answer_delay=4000"/>
<!-- Stock Video Avatars -->
<X-PRE-PROCESS cmd="set" data="video_mute_png=$${images_dir}/default-mute.png"/>
<X-PRE-PROCESS cmd="set" data="video_no_avatar_png=$${images_dir}/default-avatar.png"/>
</include>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论