diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/abstraction.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/abstraction.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..72446813740463242f20ba3e0f67bb9137bf3c11 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/abstraction.conf.xml @@ -0,0 +1,5 @@ +<configuration name="abstraction.conf" description="Abstraction"> +<apis> + <api name="user_name" description="Return Name for extension" syntax="<exten>" parse="(.*)" destination="user_data" argument="$1@default var effective_caller_id_name"/> +</apis> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/acl.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/acl.conf.xml index 1d65b299c273a872fcb5d057dc03c87081d133c1..9bb347d014bcc532eade3931311d008fb548069a 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/acl.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/acl.conf.xml @@ -1,31 +1,35 @@ <configuration name="acl.conf" description="Network Lists"> <network-lists> - <!-- - These ACL's are automatically created on startup. + <!-- + These ACL's are automatically created on startup. - rfc1918.auto - RFC1918 Space - nat.auto - RFC1918 Excluding your local lan. - localnet.auto - ACL for your local lan. - loopback.auto - ACL for your local lan. + rfc1918.auto - RFC1918 Space + nat.auto - RFC1918 Excluding your local lan. + localnet.auto - ACL for your local lan. + loopback.auto - ACL for your local lan. --> - <list name="localhost" default="allow"> - <node type="allow" cidr="127.0.0.1/255"/> - </list> - <list name="lan" default="allow"> - <node type="deny" cidr="192.168.42.0/24"/> - <node type="allow" cidr="192.168.42.42/32"/> + <node type="allow" cidr="127.0.0.1/32"/> + <node type="allow" cidr="10.130.218.147/32"/> </list> + <list name="deny_private_v6" default="allow"> + <node type="deny" cidr="0.0.0.0/0"/> + <node type="deny" cidr="fe80::/10"/> + <node type="deny" cidr="fc00::/7"/> + </list> <!-- - This will traverse the directory adding all users - with the cidr= tag to this ACL, when this ACL matches - the users variables and params apply as if they - digest authenticated. + This will traverse the directory adding all users + with the cidr= tag to this ACL, when this ACL matches + the users variables and params apply as if they + digest authenticated. --> - <list name="domains" default="deny"> + <list name="domains" default="allow"> + <!-- domain= is special it scans the domain from the directory to build the ACL --> <node type="allow" domain="$${domain}"/> + <!-- use cidr= if you wish to allow ip ranges to this domains acl. --> + <!-- <node type="allow" cidr="192.168.0.0/24"/> --> </list> </network-lists> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/alsa.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/alsa.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..e589acaacf4cfa8b950b6238f024328cffccdd6c --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/alsa.conf.xml @@ -0,0 +1,12 @@ +<configuration name="alsa.conf" description="Soundcard Endpoint"> + <settings> + <!--Default dialplan and caller-id info --> + <param name="dialplan" value="XML"/> + <param name="cid-name" value="N800 Alsa"/> + <param name="cid-num" value="5555551212"/> + + <!--audio sample rate and interval --> + <param name="sample-rate" value="8000"/> + <param name="codec-ms" value="20"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amqp.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amqp.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..3db3c322326aef0a99af8227af2b10b9f804649d --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amqp.conf.xml @@ -0,0 +1,87 @@ +<configuration name="amqp.conf" description="mod_amqp"> + <producers> + <profile name="default"> + <connections> + <connection name="primary"> + <param name="hostname" value="localhost"/> + <param name="virtualhost" value="/"/> + <param name="username" value="guest"/> + <param name="password" value="guest"/> + <param name="port" value="5673"/> + <param name="heartbeat" value="0"/> + </connection> + <connection name="secondary"> + <param name="hostname" value="localhost"/> + <param name="virtualhost" value="/"/> + <param name="username" value="guest"/> + <param name="password" value="guest"/> + <param name="port" value="5672"/> + <param name="heartbeat" value="0"/> + </connection> + </connections> + <params> + <param name="exchange-name" value="TAP.Events"/> + <param name="exchange-type" value="topic"/> + <param name="circuit_breaker_ms" value="10000"/> + <param name="reconnect_interval_ms" value="1000"/> + <param name="send_queue_size" value="5000"/> + <param name="enable_fallback_format_fields" value="1"/> + + <!-- The routing key is made from the format string, using the header values in the event specified in the format_fields.--> + <!-- Fields that are prefixed with a # are treated as literals rather than doing a header lookup --> + <param name="format_fields" value="#FreeSWITCH,FreeSWITCH-Hostname,Event-Name,Event-Subclass,Unique-ID"/> + + <!-- If enable_fallback_format_fields is enabled, then you can | separate event headers, and if the first does not exist + then the system will check additional configured header values. + --> + <!-- <param name="format_fields" value="#FreeSWITCH,FreeSWITCH-Hostname|#Unknown,Event-Name,Event-Subclass,Unique-ID"/> --> + + <!-- <param name="event_filter" value="SWITCH_EVENT_ALL"/> --> + <param name="event_filter" value="SWITCH_EVENT_CHANNEL_CREATE,SWITCH_EVENT_CHANNEL_DESTROY,SWITCH_EVENT_HEARTBEAT,SWITCH_EVENT_DTMF"/> + </params> + </profile> + </producers> + <commands> + <profile name="default"> + <connections> + <connection name="primary"> + <param name="hostname" value="localhost"/> + <param name="virtualhost" value="/"/> + <param name="username" value="guest"/> + <param name="password" value="guest"/> + <param name="port" value="5672"/> + <param name="heartbeat" value="0"/> + </connection> + </connections> + <params> + <param name="exchange-name" value="TAP.Commands"/> + <param name="binding_key" value="commandBindingKey"/> + <param name="reconnect_interval_ms" value="1000"/> + <param name="queue-passive" value="false"/> + <param name="queue-durable" value="false"/> + <param name="queue-exclusive" value="false"/> + <param name="queue-auto-delete" value="true"/> + </params> + </profile> + </commands> + <logging> + <profile name="default"> + <connections> + <connection name="primary"> + <param name="hostname" value="localhost"/> + <param name="virtualhost" value="/"/> + <param name="username" value="guest"/> + <param name="password" value="guest"/> + <param name="port" value="5672"/> + <param name="heartbeat" value="0"/> + </connection> + </connections> + <params> + <param name="exchange-name" value="TAP.Logging"/> + <param name="send_queue_size" value="5000"/> + <param name="reconnect_interval_ms" value="1000"/> + <param name="log-levels" value="debug,info,notice,warning,err,crit,alert"/> + </params> + </profile> + </logging> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amr.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amr.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..e1c3e3cc1be3dce799bc171d3de581412ed40d10 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amr.conf.xml @@ -0,0 +1,19 @@ +<configuration name="amr.conf"> + <settings> + <!-- AMR modes (supported bitrates) : + mode 0 AMR 4.75 kbps + mode 1 AMR 5.15 kbps + mode 2 AMR 5.9 kbps + mode 3 AMR 6.7 kbps + mode 4 AMR 7.4 kbps + mode 5 AMR 7.95 kbps + mode 6 AMR 10.2 kbps + mode 7 AMR 12.2 kbps + --> + <param name="default-bitrate" value="7"/> + <!-- Enable VoLTE specific FMTP --> + <param name="volte" value="0"/> + <!-- Enable automatic bitrate variation during the call based on RTCP feedback --> + <param name="adjust-bitrate" value="0"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amrwb.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amrwb.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..9dac3505a4baf5790e0b0559358e5894bf795615 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/amrwb.conf.xml @@ -0,0 +1,7 @@ +<configuration name="amrwb.conf"> + <settings> + <param name="default-bitrate" value="8"/> + <param name="volte" value="1"/> + <param name="adjust-bitrate" value="0"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/av.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/av.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..43e8514ce1c49e88f01b71c38853055b674adfc8 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/av.conf.xml @@ -0,0 +1,167 @@ +<configuration name="avcodec.conf" description="AVCodec Config"> + <settings> + <!-- max bitrate the system support, truncate if over limit --> + <!-- <param name="max-bitrate" value="5mb"/> --> + + <!-- <param name="rtp-slice-size" value="1200"/> --> + + <!-- minimum time to generate a new key frame in ms /> --> + <!-- <param name="key-frame-min-freq" value="250"/> --> + + <!-- integer of cpus, or 'auto', or 'cpu/<divisor>/<max> --> + <param name="dec-threads" value="1"/> + <param name="enc-threads" value="cpu/2/4"/> + </settings> + + <profiles> + <profile name="H263"> + </profile> + + <profile name="H263+"> + </profile> + + <profile name="H264"> + <!-- <param name="dec-threads" value="1"/> --> + <!-- <param name="enc-threads" value="cpu/2/4"/> --> + + <!-- <param name="profile" value="baseline"/> --> + <!-- <param name="level" value="41"/> --> + <!-- <param name="timebase" value="1/90"/> --> + +<!-- + +#define AV_CODEC_FLAG_UNALIGNED (1 << 0) +#define AV_CODEC_FLAG_QSCALE (1 << 1) +#define AV_CODEC_FLAG_4MV (1 << 2) +#define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3) +#define AV_CODEC_FLAG_QPEL (1 << 4) +#define AV_CODEC_FLAG_PASS1 (1 << 9) +#define AV_CODEC_FLAG_PASS2 (1 << 10) +#define AV_CODEC_FLAG_LOOP_FILTER (1 << 11) +#define AV_CODEC_FLAG_GRAY (1 << 13) +#define AV_CODEC_FLAG_PSNR (1 << 15) +#define AV_CODEC_FLAG_TRUNCATED (1 << 16) +#define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18) +#define AV_CODEC_FLAG_LOW_DELAY (1 << 19) +#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) +#define AV_CODEC_FLAG_BITEXACT (1 << 23) +#define AV_CODEC_FLAG_AC_PRED (1 << 24) +#define AV_CODEC_FLAG_INTERLACED_ME (1 << 29) +#define AV_CODEC_FLAG_CLOSED_GOP (1U << 31) + +--> + + <param name="flags" value="LOOP_FILTER|PSNR"/> + +<!-- +#define FF_CMP_SAD 0 +#define FF_CMP_SSE 1 +#define FF_CMP_SATD 2 +#define FF_CMP_DCT 3 +#define FF_CMP_PSNR 4 +#define FF_CMP_BIT 5 +#define FF_CMP_RD 6 +#define FF_CMP_ZERO 7 +#define FF_CMP_VSAD 8 +#define FF_CMP_VSSE 9 +#define FF_CMP_NSSE 10 +#define FF_CMP_W53 11 +#define FF_CMP_W97 12 +#define FF_CMP_DCTMAX 13 +#define FF_CMP_DCT264 14 +#define FF_CMP_MEDIAN_SAD 15 +#define FF_CMP_CHROMA 256 +--> + + <!-- <param name="me-cmp" value="1"/> --> + <!-- <param name="me-range" value="16"/> --> + <!-- <param name="max-b-frames" value="3"/> --> + <!-- <param name="refs" value="3"/> --> + <!-- <param name="gop-size" value="250"/> --> + <!-- <param name="keyint-min" value="25"/> --> + <!-- <param name="i-quant-factor" value="0.71"/> --> + <!-- <param name="b-quant-factor" value="0.76923078"/> --> + <!-- <param name="qcompress" value="0.6"/> --> + <!-- <param name="qmin" value="10"/> --> + <!-- <param name="qmax" value="51"/> --> + <!-- <param name="max-qdiff" value="4"/> --> + +<!-- +enum AVColorSpace { + AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB) + AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B + AVCOL_SPC_UNSPECIFIED = 2, + AVCOL_SPC_RESERVED = 3, + AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) + AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 + AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC + AVCOL_SPC_SMPTE240M = 7, ///< functionally identical to above + AVCOL_SPC_YCGCO = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 + AVCOL_SPC_YCOCG = AVCOL_SPC_YCGCO, + AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system + AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system + AVCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x + AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system + AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system + AVCOL_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp + AVCOL_SPC_NB ///< Not part of ABI +}; +--> + <param name="colorspace" value="0"/> + +<!-- +enum AVColorRange { + AVCOL_RANGE_UNSPECIFIED = 0, + AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges + AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges + AVCOL_RANGE_NB ///< Not part of ABI +}; +--> + <param name="color-range" value="2"/> + + <!-- x264 private options--> + <options> + <option name="preset" value="veryfast"/> + <option name="intra_refresh" value="1"/> + <option name="tune" value="animation+zerolatency"/> + <option name="sc_threshold" value="40"/> + <option name="b_strategy" value="1"/> + <option name="crf" value="18"/> + </options> + </profile> + + <profile name="H265"> + </profile> + + <profile name="conference"> + <param name="dec-threads" value="1"/> + <param name="enc-threads" value="cpu/2/4"/> + + <codecs> + <!-- profiles will be parsed at runtime + to overwrite this profile params if codec matches --> + <codec name="H263" profile="H263"/> + <codec name="H264" profile="H264"/> + <codec name="H264" profile="conference-H264"/> + </codecs> + </profile> + + <profile name="conference-H264"> + <options> + <option name="preset" value="veryfast"/> + <option name="intra_refresh" value="1"/> + <option name="tune" value="animation+zerolatency"/> + <option name="sc_threshold" value="40"/> + <option name="b_strategy" value="1"/> + <option name="crf" value="10"/> + </options> + </profile> + + </profiles> +</configuration> + +<configuration name="avformat.conf" description="AVFormat Config"> + <settings> + <param name="colorspace" value="1"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/avmd.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/avmd.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..86b2500bad23f033ee563a0ddac35fbde89b7f8f --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/avmd.conf.xml @@ -0,0 +1,74 @@ +<configuration name="avmd.conf" description="AVMD config"> + <settings> + + <!-- Edit these settings to change default behaviour + of each avmd session. Settings can be overwritten + by values passed dynamically per each session --> + + + <!-- Global settings --> + + <!-- define/undefine this to enable/disable logging of avmd + intermediate computations to log --> + <param name="debug" value="0"/> + + <!-- define/undef this to enable/disable verbose logging (and reporting to the console) + of detection status and other diagnostics like parameters avmd session has been started with, + change of configuration parameters, beep detection status after session ended + (stop event is fired independently of this setting and beep status included there) --> + <param name="report_status" value="1"/> + + <!-- define/undefine this to enable/disable faster computation + of arcus cosine - table will be created mapping floats + to integers and returning arc cos values given these integer + indices into table --> + <param name="fast_math" value="0"/> + <!-- Global settings end --> + + + <!-- Per call (session) settings. These settings can be overwritten + with custom/different values per each avmd session --> + + <!-- define/undefine this to classify avmd beep detection as valid + only when there is required number of consecutive elements + in the SMA buffer without reset --> + <param name="require_continuous_streak" value="1"/> + + <!-- required number of consecutive elements in the SMA buffer + without reset. This parameter helps to avoid false beeps, bigger this value is + smaller the probability of getting false detection --> + <param name="sample_n_continuous_streak" value="3"/> + + <!-- define number of samples to skip starting from the beginning + of the frame and/or after reset has happened. This serves the purpose of skipping first few + estimations on each frame, as these estimations may be inaccurate. This parameter also helps + to give more robust detections when it's value is increased (up to scertain limit of about 60). --> + <param name="sample_n_to_skip" value="0"/> + + <param name="require_continuous_streak_amp" value="1"/> + <param name="sample_n_continuous_streak_amp" value="3"/> + + <!-- define/undefine this to enable/disable simplified estimation + of frequency based on approximation of sin(x) with (x) + in the range x=[0,PI/2] --> + <param name="simplified_estimation" value="1"/> + + <!-- define/undefine to enable/disable avmd on internal channel --> + <param name="inbound_channel" value="0"/> + + <!-- define/undefine to enable/disable avmd on external channel --> + <param name="outbound_channel" value="1"/> + + <!-- determines the mode of detection, default is both amplitude and frequency --> + <param name="detection_mode" value="2"/> + + <!-- number of detection threads running per each avmd session --> + <param name="detectors_n" value="36"/> + + <!-- number of lagged detection threads running per each avmd session --> + <param name="detectors_lagged_n" value="1"/> + + <!-- Per call settings end --> + </settings> +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/blacklist.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/blacklist.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..9995febd8325d7e5f9fdfb4865ae306242c36564 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/blacklist.conf.xml @@ -0,0 +1,11 @@ +<configuration name="mod_blacklist.conf" description="Blacklist module"> +<lists> + <!-- + Example blacklist, the referenced file contains blacklisted items, one entry per line + + NOTE: make sure the file exists and is readable by FreeSWITCH. + + <list name="example" filename="$${conf_dir}/blacklists/example.list"/> + --> +</lists> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/callcenter.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/callcenter.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..a0cd6f0d5d070ef82379f19d03245a88b32f7f45 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/callcenter.conf.xml @@ -0,0 +1,39 @@ +<configuration name="callcenter.conf" description="CallCenter"> + <settings> + <!--<param name="odbc-dsn" value="dsn:user:pass"/>--> + <!--<param name="dbname" value="/dev/shm/callcenter.db"/>--> + <!--<param name="cc-instance-id" value="single_box"/>--> + </settings> + + <queues> + + <queue name="support@default"> + <param name="strategy" value="longest-idle-agent"/> + <param name="moh-sound" value="$${hold_music}"/> + <!--<param name="record-template" value="$${recordings_dir}/${strftime(%Y-%m-%d-%H-%M-%S)}.${destination_number}.${caller_id_number}.${uuid}.wav"/>--> + <param name="time-base-score" value="system"/> + <param name="max-wait-time" value="0"/> + <param name="max-wait-time-with-no-agent" value="0"/> + <param name="max-wait-time-with-no-agent-time-reached" value="5"/> + <param name="tier-rules-apply" value="false"/> + <param name="tier-rule-wait-second" value="300"/> + <param name="tier-rule-wait-multiply-level" value="true"/> + <param name="tier-rule-no-agent-no-wait" value="false"/> + <param name="discard-abandoned-after" value="60"/> + <param name="abandoned-resume-allowed" value="false"/> + </queue> + + </queues> + +<!-- WARNING: Configuration of XML Agents will be updated into the DB upon restart. --> +<!-- WARNING: Configuration of XML Tiers will reset the level and position if those were supplied. --> +<!-- WARNING: Agents and Tiers XML config shouldn't be used in a multi FS shared DB setup (Not currently supported anyway) --> + <agents> + <!--<agent name="1000@default" type="callback" contact="[leg_timeout=10]user/1000@default" status="Available" max-no-answer="3" wrap-up-time="10" reject-delay-time="10" busy-delay-time="60" />--> + </agents> + <tiers> + <!-- If no level or position is provided, they will default to 1. You should do this to keep db value on restart. --> + <!-- <tier agent="1000@default" queue="support@default" level="1" position="1"/> --> + </tiers> + +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_csv.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_csv.conf.xml index bcefd460b436c780090223383303c303d73ea8ea..8d796c68f06f0ead7d604b3adbb8990de54004b9 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_csv.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_csv.conf.xml @@ -17,6 +17,7 @@ <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> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_mongodb.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_mongodb.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce366d1bd04f887861cd3a30686c87770e10e00b --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_mongodb.conf.xml @@ -0,0 +1,13 @@ +<configuration name="cdr_mongodb.conf" description="MongoDB CDR logger"> + <settings> + <!-- Hostnames and IPv6 addrs not supported (yet) --> + <param name="host" value="127.0.0.1"/> + <param name="port" value="27017"/> + + <!-- Namespace format is database.collection --> + <param name="namespace" value="test.cdr"/> + + <!-- If true, create CDR for B-leg of call (default: true) --> + <param name="log-b-leg" value="false"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_pg_csv.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_pg_csv.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..9891455f8adb87ed88e4361c35ee7ceb0fa2d304 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_pg_csv.conf.xml @@ -0,0 +1,40 @@ +<configuration name="cdr_pg_csv.conf" description="CDR PG CSV Format"> + <settings> + <!-- See parameters for PQconnectdb() at http://www.postgresql.org/docs/8.4/static/libpq-connect.html --> + <param name="db-info" value="host=localhost dbname=cdr connect_timeout=10" /> + <!-- CDR table name --> + <!--<param name="db-table" value="cdr"/>--> + + <!-- Log a-leg (a), b-leg (b) or both (ab) --> + <param name="legs" value="a"/> + + <!-- Directory in which to spool failed SQL inserts --> + <!-- <param name="spool-dir" value="$${log_dir}/cdr-pg-csv"/> --> + <!-- Disk spool format if DB connection/insert fails - csv (default) or sql --> + <param name="spool-format" value="csv"/> + <param name="rotate-on-hup" value="true"/> + + <!-- This is like the info app but after the call is hung up --> + <!--<param name="debug" value="true"/>--> + </settings> + <schema> + <field var="local_ip_v4"/> + <field var="caller_id_name"/> + <field var="caller_id_number"/> + <field var="destination_number"/> + <field var="context"/> + <field var="start_stamp"/> + <field var="answer_stamp"/> + <field var="end_stamp"/> + <field var="duration" quote="false"/> + <field var="billsec" quote="false"/> + <field var="hangup_cause"/> + <field var="uuid"/> + <field var="bleg_uuid"/> + <field var="accountcode"/> + <field var="read_codec"/> + <field var="write_codec"/> + <!-- <field var="sip_hangup_disposition"/> --> + <!-- <field var="ani"/> --> + </schema> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_sqlite.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_sqlite.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..872c04c4fba6686f2bac6cfe118aa0b76e4c6f99 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cdr_sqlite.conf.xml @@ -0,0 +1,18 @@ +<configuration name="cdr_sqlite.conf" description="SQLite CDR"> + <settings> + <!-- SQLite database name (.db suffix will be automatically appended) --> + <!-- <param name="db-name" value="cdr"/> --> + <!-- CDR table name --> + <!-- <param name="db-table" value="cdr"/> --> + <!-- Log a-leg (a), b-leg (b) or both (ab) --> + <param name="legs" value="a"/> + <!-- Default template to use when inserting records --> + <param name="default-template" value="example"/> + <!-- This is like the info app but after the call is hung up --> + <!--<param name="debug" value="true"/>--> + </settings> + <templates> + <!-- Note that field order must match SQL table schema, otherwise insert will fail --> + <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}"</template> + </templates> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cepstral.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cepstral.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..cf4aa92f4186005d7cb2478dcebf0fdc0322a424 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cepstral.conf.xml @@ -0,0 +1,12 @@ +<configuration name="cepstral.conf" description="Cepstral TTS configuration"> + <settings> + <!-- + Possible encodings: + * utf-8 + * us-ascii + * iso8859-1 (default) + * iso8859-15 + --> + <param name="encoding" value="utf-8"/> + </settings> +</configuration> \ No newline at end of file diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cidlookup.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cidlookup.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd28f9b0c08d01a307a93e1b6ca8021c1fc3c0e3 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/cidlookup.conf.xml @@ -0,0 +1,33 @@ +<configuration name="cidlookup.conf" description="cidlookup Configuration"> + <settings> + <!-- comment out url to not setup a url based lookup --> + <param name="url" value="http://query.voipcnam.com/query.php?api_key=MYAPIKEY&number=${caller_id_number}"/> + + <!-- comment out whitepages-apikey to not use whitepages.com, you must + get an API key from http://developer.whitepages.com/ --> + <param name="whitepages-apikey" value="MYAPIKEY"/> + + <!-- set to false to not cache (in memcache) results from the url query --> + <param name="cache" value="true"/> + <!-- expire is in seconds --> + <param name="cache-expire" value="86400"/> + + <param name="odbc-dsn" value="phone:phone:phone"/> + + <!-- comment out sql to not setup a database (directory) lookup --> + <param name="sql" value=" + SELECT name||' ('||type||')' AS name + FROM phonebook p JOIN numbers n ON p.id = n.phonebook_id + WHERE n.number='${caller_id_number}' + LIMIT 1 + "/> + <!-- comment out citystate-sql to not setup a database (city/state) + lookup --> + <param name="citystate-sql" value=" + SELECT ratecenter||' '||state as name + FROM npa_nxx_company_ocn + WHERE npa = ${caller_id_number:1:3} AND nxx = ${caller_id_number:4:3} + LIMIT 1 + "/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/conference.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/conference.conf.xml index 0951987c5ad0b185d77e802d04677314da165973..739511f0a8ed5fc51c73cad6b857d5ed487e30b9 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/conference.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/conference.conf.xml @@ -1,4 +1,4 @@ -<!-- http://wiki.freeswitch.org/wiki/Mod_conference --> +<!-- http://wiki.freeswitch.org/wiki/Mod_conference --> <!-- None of these paths are real if you want any of these options you need to really set them up --> <configuration name="conference.conf" description="Audio Conference"> <!-- Advertise certain presence on startup . --> @@ -6,8 +6,8 @@ <room name="3001@$${domain}" status="FreeSWITCH"/> </advertise> - <!-- These are the default keys that map when you do not specify a caller control group --> - <!-- Note: none and default are reserved names for group names. Disabled if dist-dtmf member flag is set. --> + <!-- These are the default keys that map when you do not specify a caller control group --> + <!-- Note: none and default are reserved names for group names. Disabled if dist-dtmf member flag is set. --> <caller-controls> <group name="default"> <control action="mute" digits="0"/> @@ -21,7 +21,7 @@ <control action="vol listen up" digits="6"/> <control action="vol listen zero" digits="5"/> <control action="vol listen dn" digits="4"/> - <control action="hangup" digits="#"/> + <!--control action="hangup" digits="#"/ --> </group> </caller-controls> @@ -29,6 +29,13 @@ <profiles> <!--If no profile is specified it will default to "default"--> <profile name="default"> + <!-- Directory to drop CDR's + 'auto' means $PREFIX/logs/conference_cdr/<confernece_uuid>.cdr.xml + a non-absolute path means $PREFIX/logs/<value>/<confernece_uuid>.cdr.xml + absolute path means <value>/<confernece_uuid>.cdr.xml + --> + <!-- <param name="cdr-log-dir" value="auto"/> --> + <!-- Domain (for presence) --> <param name="domain" value="$${domain}"/> <!-- Sample Rate--> @@ -36,28 +43,31 @@ <!-- Number of milliseconds per frame --> <param name="interval" value="20"/> <!-- Energy level required for audio to be sent to the other users --> - <param name="energy-level" value="300"/> + <param name="energy-level" value="100"/> <!--Can be | delim of waste|mute|deaf|dist-dtmf waste will always transmit data to each channel even during silence. dist-dtmf propagates dtmfs to all other members, but channel controls - via dtmf will be disabled. --> - <param name="member-flags" value="nomoh"/> + via dtmf will be disabled. --> + <!-- <param name="member-flags" value="waste"/> --> <!-- Name of the caller control group to use for this profile --> <!-- <param name="caller-controls" value="some name"/> --> + <!-- Name of the caller control group to use for the moderator in this profile --> + <!-- <param name="moderator-controls" value="some name"/> --> <!-- TTS Engine to use --> - <!--<param name="tts-engine" value="cepstral"/>--> + <!-- <param name="tts-engine" value="cepstral"/> --> <!-- TTS Voice to use --> - <!--<param name="tts-voice" value="david"/>--> + <!-- <param name="tts-voice" value="david"/> --> <!-- If TTS is enabled all audio-file params beginning with --> <!-- 'say:' will be considered text to say with TTS --> - <!-- Set a default path here so you can use relative paths in the other sound params--> - <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> + <!-- Override the default path here, after which you use relative paths in the other sound params --> + <!-- Note: The default path is the conference's first caller's sound_prefix --> + <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> --> <!-- File to play to acknowledge succees --> - <!--<param name="ack-sound" value="beep.wav"/>--> + <!-- <param name="ack-sound" value="beep.wav"/> --> <!-- File to play to acknowledge failure --> - <!--<param name="nack-sound" value="beeperr.wav"/>--> + <!-- <param name="nack-sound" value="beeperr.wav"/> --> <!-- File to play to acknowledge muted --> <param name="muted-sound" value="conference/conf-muted.wav"/> <!-- File to play to acknowledge unmuted --> @@ -65,14 +75,14 @@ <!-- File to play if you are alone in the conference --> <param name="alone-sound" value="conference/conf-alone.wav"/> <!-- File to play endlessly (nobody will ever be able to talk) --> - <!--<param name="perpetual-sound" value="perpetual.wav"/>--> + <!-- <param name="perpetual-sound" value="perpetual.wav"/> --> <!-- File to play when you're alone (music on hold)--> <param name="moh-sound" value="$${hold_music}"/> <!-- File to play when you join the conference --> <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/> <!-- File to play when you leave the conference --> <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/> - <!-- File to play when you ae ejected from the conference --> + <!-- File to play when you are ejected from the conference --> <param name="kicked-sound" value="conference/conf-kicked.wav"/> <!-- File to play when the conference is locked --> <param name="locked-sound" value="conference/conf-locked.wav"/> @@ -85,7 +95,10 @@ <!-- File to play to when the pin is invalid --> <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/> <!-- Conference pin --> - <!--<param name="pin" value="12345"/>--> + <!-- <param name="pin" value="12345"/> --> + <!-- <param name="moderator-pin" value="54321"/> --> + <!-- Max number of times the user can be prompted for PIN --> + <!-- <param name="pin-retries" value="3"/> --> <!-- Default Caller ID Name for outbound calls --> <param name="caller-id-name" value="$${outbound_caller_name}"/> <!-- Default Caller ID Number for outbound calls --> @@ -99,15 +112,28 @@ <!-- <param name="auto-record" value="$${recordings_dir}/${conference_name}_${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/> --> + + <!-- IVR digit machine timeouts --> + <!-- How much to wait between DTMF digits to match caller-controls --> + <!-- <param name="ivr-dtmf-timeout" value="500"/> --> + <!-- How much to wait for the first DTMF, 0 forever --> + <!-- <param name="ivr-input-timeout" value="0" /> --> + <!-- Delay before a conference is asked to be terminated --> + <!-- <param name="endconf-grace-time" value="120" /> --> + <!-- Can be | delim of wait-mod|audio-always|video-bridge|video-floor-only + wait_mod will wait until the moderator in, + audio-always will always mix audio from all members regardless they are talking or not --> + <!-- <param name="conference-flags" value="audio-always"/> --> + <!-- Allow live array sync for Verto --> + <!-- <param name="conference-flags" value="livearray-sync"/> --> </profile> <profile name="wideband"> <param name="domain" value="$${domain}"/> <param name="rate" value="16000"/> <param name="interval" value="20"/> - <param name="energy-level" value="50"/> - <param name="member-flags" value="waste"/> - <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> + <param name="energy-level" value="100"/> + <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> --> <param name="muted-sound" value="conference/conf-muted.wav"/> <param name="unmuted-sound" value="conference/conf-unmuted.wav"/> <param name="alone-sound" value="conference/conf-alone.wav"/> @@ -123,17 +149,16 @@ <param name="caller-id-name" value="$${outbound_caller_name}"/> <param name="caller-id-number" value="$${outbound_caller_id}"/> <param name="comfort-noise" value="true"/> - <param name="min-required-recording-participants" value="1"/> - <!--<param name="tts-engine" value="flite"/>--> - <!--<param name="tts-voice" value="kal16"/>--> + <!-- <param name="tts-engine" value="flite"/> --> + <!-- <param name="tts-voice" value="kal16"/> --> </profile> <profile name="ultrawideband"> <param name="domain" value="$${domain}"/> <param name="rate" value="32000"/> <param name="interval" value="20"/> - <param name="energy-level" value="300"/> - <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> + <param name="energy-level" value="100"/> + <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> --> <param name="muted-sound" value="conference/conf-muted.wav"/> <param name="unmuted-sound" value="conference/conf-unmuted.wav"/> <param name="alone-sound" value="conference/conf-alone.wav"/> @@ -149,23 +174,39 @@ <param name="caller-id-name" value="$${outbound_caller_name}"/> <param name="caller-id-number" value="$${outbound_caller_id}"/> <param name="comfort-noise" value="true"/> - <!--<param name="tts-engine" value="flite"/>--> - <!--<param name="tts-voice" value="kal16"/>--> + + <!-- <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|auto-3d-position|transcode-video|minimize-video-encoding"/> --> + + <!-- <param name="video-mode" value="mux"/> --> + <!-- <param name="video-layout-name" value="3x3"/> --> + <!-- <param name="video-layout-name" value="group:grid"/> --> + <!-- <param name="video-canvas-size" value="1280x720"/> --> + <!-- <param name="video-canvas-bgcolor" value="#333333"/> --> + <!-- <param name="video-layout-bgcolor" value="#000000"/> --> + <!-- <param name="video-codec-bandwidth" value="2mb"/> --> + <!-- <param name="video-fps" value="15"/> --> + <!-- <param name="video-auto-floor-msec" value="100"/> --> + + + <!-- <param name="tts-engine" value="flite"/> --> + <!-- <param name="tts-voice" value="kal16"/> --> </profile> <profile name="cdquality"> <param name="domain" value="$${domain}"/> <param name="rate" value="48000"/> - <param name="interval" value="10"/> - <param name="energy-level" value="300"/> - <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> + <param name="interval" value="20"/> + <param name="energy-level" value="100"/> + <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> --> <param name="muted-sound" value="conference/conf-muted.wav"/> <param name="unmuted-sound" value="conference/conf-unmuted.wav"/> <param name="alone-sound" value="conference/conf-alone.wav"/> +<!-- <param name="moh-sound" value="$${hold_music}"/> <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/> <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/> <param name="kicked-sound" value="conference/conf-kicked.wav"/> +--> <param name="locked-sound" value="conference/conf-locked.wav"/> <param name="is-locked-sound" value="conference/conf-is-locked.wav"/> <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/> @@ -173,9 +214,57 @@ <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/> <param name="caller-id-name" value="$${outbound_caller_name}"/> <param name="caller-id-number" value="$${outbound_caller_id}"/> - <param name="comfort-noise" value="true"/> + <!-- param name="comfort-noise" value="true"/ --> + <param name="comfort-noise" value="1400"/> + + <!-- <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|auto-3d-position|minimize-video-encoding"/> --> + + <!-- <param name="video-mode" value="mux"/> --> + <!-- <param name="video-layout-name" value="3x3"/> --> + <!-- <param name="video-layout-name" value="group:grid"/> --> + <!-- <param name="video-canvas-size" value="1920x1080"/> --> + <!-- <param name="video-canvas-bgcolor" value="#333333"/> --> + <!-- <param name="video-layout-bgcolor" value="#000000"/> --> + <!-- <param name="video-codec-bandwidth" value="2mb"/> --> + <!-- <param name="video-fps" value="15"/> --> + </profile> + <profile name="video-mcu-stereo"> + <param name="domain" value="$${domain}"/> + <param name="rate" value="48000"/> + <param name="channels" value="2"/> + <param name="interval" value="20"/> + <param name="energy-level" value="100"/> + <!-- <param name="tts-engine" value="flite"/> --> + <!-- <param name="tts-voice" value="kal16"/> --> + <param name="muted-sound" value="conference/conf-muted.wav"/> + <param name="unmuted-sound" value="conference/conf-unmuted.wav"/> + <param name="alone-sound" value="conference/conf-alone.wav"/> + <param name="moh-sound" value="local_stream://stereo"/> + <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/> + <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/> + <param name="kicked-sound" value="conference/conf-kicked.wav"/> + <param name="locked-sound" value="conference/conf-locked.wav"/> + <param name="is-locked-sound" value="conference/conf-is-locked.wav"/> + <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/> + <param name="pin-sound" value="conference/conf-pin.wav"/> + <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/> + <param name="caller-id-name" value="$${outbound_caller_name}"/> + <param name="caller-id-number" value="$${outbound_caller_id}"/> + <param name="comfort-noise" value="false"/> + <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|minimize-video-encoding"/> + <param name="video-mode" value="mux"/> + <param name="video-layout-name" value="3x3"/> + <param name="video-layout-name" value="group:grid"/> + <param name="video-canvas-size" value="1920x1080"/> + <param name="video-canvas-bgcolor" value="#333333"/> + <param name="video-layout-bgcolor" value="#000000"/> + <param name="video-codec-bandwidth" value="1mb"/> + <param name="video-fps" value="15"/> + </profile> + + <profile name="sla"> <param name="domain" value="$${domain}"/> <param name="rate" value="16000"/> @@ -185,6 +274,6 @@ <param name="moh-sound" value="silence"/> <param name="comfort-noise" value="true"/> </profile> - </profiles> </configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/conference_layouts.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/conference_layouts.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..4dc974a1e93cf6bbe5f51c29641c9e65400b2f1b --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/conference_layouts.conf.xml @@ -0,0 +1,393 @@ +<configuration name="conference_layouts.conf" description="Audio Conference"> + <layout-settings> + <layouts> + <layout name="1x1"> + <image x="0" y="0" scale="360" floor="true"/> + </layout> + <layout name="1x2" auto-3d-position="true"> + <image x="90" y="0" scale="180"/> + <image x="90" y="180" scale="180"/> + </layout> + <layout name="2x1" auto-3d-position="true"> + <image x="0" y="90" scale="180"/> + <image x="180" y="90" scale="180"/> + </layout> + + <layout name="2x1-zoom" auto-3d-position="true"> + <image x="0" y="0" scale="180" hscale="360" zoom="true"/> + <image x="180" y="0" scale="180" hscale="360" zoom="true"/> + </layout> + <layout name="3x1-zoom" auto-3d-position="true"> + <image x="0" y="0" scale="120" hscale="360" zoom="true"/> + <image x="120" y="0" scale="120" hscale="360" zoom="true"/> + <image x="240" y="0" scale="120" hscale="360" zoom="true"/> + </layout> + <layout name="5-grid-zoom" auto-3d-position="true"> + <image x="0" y="0" scale="180"/> + <image x="180" y="0" scale="180"/> + <image x="0" y="180" scale="120" hscale="180" zoom="true"/> + <image x="120" y="180" scale="120" hscale="180" zoom="true"/> + <image x="240" y="180" scale="120" hscale="180" zoom="true"/> + </layout> + <layout name="3x2-zoom" auto-3d-position="true"> + <image x="0" y="0" scale="120" hscale="180" zoom="true"/> + <image x="120" y="0" scale="120" hscale="180" zoom="true"/> + <image x="240" y="0" scale="120" hscale="180" zoom="true"/> + <image x="0" y="180" scale="120" hscale="180" zoom="true"/> + <image x="120" y="180" scale="120" hscale="180" zoom="true"/> + <image x="240" y="180" scale="120" hscale="180" zoom="true"/> + </layout> + <layout name="7-grid-zoom" auto-3d-position="true"> + <image x="0" y="0" scale="120" hscale="180" zoom="true"/> + <image x="120" y="0" scale="120" hscale="180" zoom="true"/> + <image x="240" y="0" scale="120" hscale="180" zoom="true"/> + <image x="0" y="180" scale="90" hscale="180" zoom="true"/> + <image x="90" y="180" scale="90" hscale="180" zoom="true"/> + <image x="180" y="180" scale="90" hscale="180" zoom="true"/> + <image x="270" y="180" scale="90" hscale="180" zoom="true"/> + </layout> + <layout name="4x2-zoom" auto-3d-position="true"> + <image x="0" y="0" scale="90" hscale="180" zoom="true"/> + <image x="90" y="0" scale="90" hscale="180" zoom="true"/> + <image x="180" y="0" scale="90" hscale="180" zoom="true"/> + <image x="270" y="0" scale="90" hscale="180" zoom="true"/> + <image x="0" y="180" scale="90" hscale="180" zoom="true"/> + <image x="90" y="180" scale="90" hscale="180" zoom="true"/> + <image x="180" y="180" scale="90" hscale="180" zoom="true"/> + <image x="270" y="180" scale="90" hscale="180" zoom="true"/> + </layout> + <layout name="1x1+2x1" auto-3d-position="true"> + <image x="90" y="0" scale="180"/> + <image x="0" y="180" scale="180"/> + <image x="180" y="180" scale="180"/> + </layout> + <layout name="2x2" auto-3d-position="true"> + <image x="0" y="0" scale="180"/> + <image x="180" y="0" scale="180"/> + <image x="0" y="180" scale="180"/> + <image x="180" y="180" scale="180"/> + </layout> + <layout name="3x3" auto-3d-position="true"> + <image x="0" y="0" scale="120"/> + <image x="120" y="0" scale="120"/> + <image x="240" y="0" scale="120"/> + <image x="0" y="120" scale="120"/> + <image x="120" y="120" scale="120"/> + <image x="240" y="120" scale="120"/> + <image x="0" y="240" scale="120"/> + <image x="120" y="240" scale="120"/> + <image x="240" y="240" scale="120"/> + </layout> + <layout name="4x4" auto-3d-position="true"> + <image x="0" y="0" scale="90"/> + <image x="90" y="0" scale="90"/> + <image x="180" y="0" scale="90"/> + <image x="270" y="0" scale="90"/> + <image x="0" y="90" scale="90"/> + <image x="90" y="90" scale="90"/> + <image x="180" y="90" scale="90"/> + <image x="270" y="90" scale="90"/> + <image x="0" y="180" scale="90"/> + <image x="90" y="180" scale="90"/> + <image x="180" y="180" scale="90"/> + <image x="270" y="180" scale="90"/> + <image x="0" y="270" scale="90"/> + <image x="90" y="270" scale="90"/> + <image x="180" y="270" scale="90"/> + <image x="270" y="270" scale="90"/> + </layout> + <layout name="5x5" auto-3d-position="true"> + <image x="0" y="0" scale="72"/> + <image x="72" y="0" scale="72"/> + <image x="144" y="0" scale="72"/> + <image x="216" y="0" scale="72"/> + <image x="288" y="0" scale="72"/> + <image x="0" y="72" scale="72"/> + <image x="72" y="72" scale="72"/> + <image x="144" y="72" scale="72"/> + <image x="216" y="72" scale="72"/> + <image x="288" y="72" scale="72"/> + <image x="0" y="144" scale="72"/> + <image x="72" y="144" scale="72"/> + <image x="144" y="144" scale="72"/> + <image x="216" y="144" scale="72"/> + <image x="288" y="144" scale="72"/> + <image x="0" y="216" scale="72"/> + <image x="72" y="216" scale="72"/> + <image x="144" y="216" scale="72"/> + <image x="216" y="216" scale="72"/> + <image x="288" y="216" scale="72"/> + <image x="0" y="288" scale="72"/> + <image x="72" y="288" scale="72"/> + <image x="144" y="288" scale="72"/> + <image x="216" y="288" scale="72"/> + <image x="288" y="288" scale="72"/> + </layout> + <layout name="6x6" auto-3d-position="true"> + <image x="0" y="0" scale="60"/> + <image x="60" y="0" scale="60"/> + <image x="120" y="0" scale="60"/> + <image x="180" y="0" scale="60"/> + <image x="240" y="0" scale="60"/> + <image x="300" y="0" scale="60"/> + <image x="0" y="60" scale="60"/> + <image x="60" y="60" scale="60"/> + <image x="120" y="60" scale="60"/> + <image x="180" y="60" scale="60"/> + <image x="240" y="60" scale="60"/> + <image x="300" y="60" scale="60"/> + <image x="0" y="120" scale="60"/> + <image x="60" y="120" scale="60"/> + <image x="120" y="120" scale="60"/> + <image x="180" y="120" scale="60"/> + <image x="240" y="120" scale="60"/> + <image x="300" y="120" scale="60"/> + <image x="0" y="180" scale="60"/> + <image x="60" y="180" scale="60"/> + <image x="120" y="180" scale="60"/> + <image x="180" y="180" scale="60"/> + <image x="240" y="180" scale="60"/> + <image x="300" y="180" scale="60"/> + <image x="0" y="240" scale="60"/> + <image x="60" y="240" scale="60"/> + <image x="120" y="240" scale="60"/> + <image x="180" y="240" scale="60"/> + <image x="240" y="240" scale="60"/> + <image x="300" y="240" scale="60"/> + <image x="0" y="300" scale="60"/> + <image x="60" y="300" scale="60"/> + <image x="120" y="300" scale="60"/> + <image x="180" y="300" scale="60"/> + <image x="240" y="300" scale="60"/> + <image x="300" y="300" scale="60"/> + </layout> + <layout name="8x8" auto-3d-position="true"> + <image x="0" y="0" scale="45"/> + <image x="45" y="0" scale="45"/> + <image x="90" y="0" scale="45"/> + <image x="135" y="0" scale="45"/> + <image x="180" y="0" scale="45"/> + <image x="225" y="0" scale="45"/> + <image x="270" y="0" scale="45"/> + <image x="315" y="0" scale="45"/> + <image x="0" y="45" scale="45"/> + <image x="45" y="45" scale="45"/> + <image x="90" y="45" scale="45"/> + <image x="135" y="45" scale="45"/> + <image x="180" y="45" scale="45"/> + <image x="225" y="45" scale="45"/> + <image x="270" y="45" scale="45"/> + <image x="315" y="45" scale="45"/> + <image x="0" y="90" scale="45"/> + <image x="45" y="90" scale="45"/> + <image x="90" y="90" scale="45"/> + <image x="135" y="90" scale="45"/> + <image x="180" y="90" scale="45"/> + <image x="225" y="90" scale="45"/> + <image x="270" y="90" scale="45"/> + <image x="315" y="90" scale="45"/> + <image x="0" y="135" scale="45"/> + <image x="45" y="135" scale="45"/> + <image x="90" y="135" scale="45"/> + <image x="135" y="135" scale="45"/> + <image x="180" y="135" scale="45"/> + <image x="225" y="135" scale="45"/> + <image x="270" y="135" scale="45"/> + <image x="315" y="135" scale="45"/> + <image x="0" y="180" scale="45"/> + <image x="45" y="180" scale="45"/> + <image x="90" y="180" scale="45"/> + <image x="135" y="180" scale="45"/> + <image x="180" y="180" scale="45"/> + <image x="225" y="180" scale="45"/> + <image x="270" y="180" scale="45"/> + <image x="315" y="180" scale="45"/> + <image x="0" y="225" scale="45"/> + <image x="45" y="225" scale="45"/> + <image x="90" y="225" scale="45"/> + <image x="135" y="225" scale="45"/> + <image x="180" y="225" scale="45"/> + <image x="225" y="225" scale="45"/> + <image x="270" y="225" scale="45"/> + <image x="315" y="225" scale="45"/> + <image x="0" y="270" scale="45"/> + <image x="45" y="270" scale="45"/> + <image x="90" y="270" scale="45"/> + <image x="135" y="270" scale="45"/> + <image x="180" y="270" scale="45"/> + <image x="225" y="270" scale="45"/> + <image x="270" y="270" scale="45"/> + <image x="315" y="270" scale="45"/> + <image x="0" y="315" scale="45"/> + <image x="45" y="315" scale="45"/> + <image x="90" y="315" scale="45"/> + <image x="135" y="315" scale="45"/> + <image x="180" y="315" scale="45"/> + <image x="225" y="315" scale="45"/> + <image x="270" y="315" scale="45"/> + <image x="315" y="315" scale="45"/> + </layout> + <layout name="1up_top_left+5" auto-3d-position="true"> + <image x="0" y="0" scale="240" floor="true"/> + <image x="240" y="0" scale="120"/> + <image x="240" y="120" scale="120"/> + <image x="0" y="240" scale="120"/> + <image x="120" y="240" scale="120"/> + <image x="240" y="240" scale="120"/> + </layout> + <layout name="1up_top_left+7" auto-3d-position="true"> + <image x="0" y="0" scale="270" floor="true"/> + <image x="270" y="0" scale="90"/> + <image x="270" y="90" scale="90"/> + <image x="270" y="180" scale="90"/> + <image x="0" y="270" scale="90"/> + <image x="90" y="270" scale="90"/> + <image x="180" y="270" scale="90"/> + <image x="270" y="270" scale="90"/> + </layout> + <layout name="1up_top_left+9" auto-3d-position="true"> + <image x="0" y="0" scale="288" floor="true"/> + <image x="288" y="0" scale="72"/> + <image x="288" y="72" scale="72"/> + <image x="288" y="144" scale="72"/> + <image x="288" y="216" scale="72"/> + <image x="0" y="288" scale="72"/> + <image x="72" y="288" scale="72"/> + <image x="144" y="288" scale="72"/> + <image x="216" y="288" scale="72"/> + <image x="288" y="288" scale="72"/> + </layout> + <layout name="2up_top+8" auto-3d-position="true"> + <image x="0" y="0" scale="180" floor="true"/> + <image x="180" y="0" scale="180" reservation_id="secondary"/> + <image x="0" y="180" scale="90"/> + <image x="90" y="180" scale="90"/> + <image x="180" y="180" scale="90"/> + <image x="270" y="180" scale="90"/> + <image x="0" y="270" scale="90"/> + <image x="90" y="270" scale="90"/> + <image x="180" y="270" scale="90"/> + <image x="270" y="270" scale="90"/> + </layout> + <layout name="2up_middle+8" auto-3d-position="true"> + <image x="0" y="90" scale="180" floor="true"/> + <image x="180" y="90" scale="180" reservation_id="secondary"/> + <image x="0" y="0" scale="90"/> + <image x="90" y="0" scale="90"/> + <image x="180" y="0" scale="90"/> + <image x="270" y="0" scale="90"/> + <image x="0" y="270" scale="90"/> + <image x="90" y="270" scale="90"/> + <image x="180" y="270" scale="90"/> + <image x="270" y="270" scale="90"/> + </layout> + <layout name="2up_bottom+8" auto-3d-position="true"> + <image x="0" y="180" scale="180" floor="true"/> + <image x="180" y="180" scale="180" reservation_id="secondary"/> + <image x="0" y="0" scale="90"/> + <image x="90" y="0" scale="90"/> + <image x="180" y="0" scale="90"/> + <image x="270" y="0" scale="90"/> + <image x="0" y="90" scale="90"/> + <image x="90" y="90" scale="90"/> + <image x="180" y="90" scale="90"/> + <image x="270" y="90" scale="90"/> + </layout> + <layout name="3up+4" auto-3d-position="true"> + <image x="0" y="0" scale="180" floor="true"/> + <image x="180" y="0" scale="180" reservation_id="secondary"/> + <image x="0" y="180" scale="180" reservation_id="third"/> + <image x="180" y="180" scale="90"/> + <image x="270" y="180" scale="90"/> + <image x="180" y="270" scale="90"/> + <image x="270" y="270" scale="90"/> + </layout> + <layout name="3up+9" auto-3d-position="true"> + <image x="0" y="0" scale="180" floor="true"/> + <image x="180" y="0" scale="180" reservation_id="secondary"/> + <image x="0" y="180" scale="180" reservation_id="third"/> + <image x="180" y="180" scale="60"/> + <image x="240" y="180" scale="60"/> + <image x="300" y="180" scale="60"/> + <image x="180" y="240" scale="60"/> + <image x="240" y="240" scale="60"/> + <image x="300" y="240" scale="60"/> + <image x="180" y="300" scale="60"/> + <image x="240" y="300" scale="60"/> + <image x="300" y="300" scale="60"/> + </layout> + <layout name="2x1-presenter-zoom" auto-3d-position="true"> + <image x="0" y="0" scale="180" hscale="360" zoom="true" floor="true"/> + <image x="180" y="0" scale="180" hscale="360" zoom="true" reservation_id="presenter"/> + </layout> + <layout name="presenter-dual-vertical"> + <image x="90" y="0" scale="180" floor-only="true"/> + <image x="90" y="180" scale="180" reservation_id="presenter"/> + </layout> + <layout name="presenter-dual-horizontal"> + <image x="0" y="90" scale="180" floor-only="true"/> + <image x="180" y="90" scale="180" reservation_id="presenter"/> + </layout> + <layout name="presenter-overlap-small-top-right"> + <image x="0" y="0" scale="360" floor-only="true"/> + <image x="300" y="0" scale="60" overlap="true" reservation_id="presenter"/> + </layout> + <layout name="presenter-overlap-small-bot-right"> + <image x="0" y="0" scale="360" floor-only="true"/> + <image x="300" y="300" scale="60" overlap="true" reservation_id="presenter"/> + </layout> + <layout name="presenter-overlap-large-top-right"> + <image x="0" y="0" scale="360" floor-only="true"/> + <image x="180" y="0" scale="180" overlap="true" reservation_id="presenter"/> + </layout> + <layout name="presenter-overlap-large-bot-right"> + <image x="0" y="0" scale="360" floor-only="true"/> + <image x="180" y="180" scale="180" overlap="true" reservation_id="presenter"/> + </layout> + <layout name="overlaps" auto-3d-position="true"> + <image x="0" y="0" scale="360" floor-only="true"/> + <image x="300" y="300" scale="60" overlap="true"/> + <image x="240" y="300" scale="60" overlap="true"/> + <image x="180" y="300" scale="60" overlap="true"/> + <image x="120" y="300" scale="60" overlap="true"/> + <image x="60" y="300" scale="60" overlap="true"/> + <image x="0" y="300" scale="60" overlap="true"/> + </layout> + + + </layouts> + <groups> + <group name="grid"> + <layout>1x1</layout> + <layout>2x1</layout> + <layout>1x1+2x1</layout> + <layout>2x2</layout> + <layout>3x3</layout> + <layout>4x4</layout> + <layout>5x5</layout> + <layout>6x6</layout> + <layout>8x8</layout> + </group> + <group name="grid-zoom"> + <layout>1x1</layout> + <layout>2x1-zoom</layout> + <layout>3x1-zoom</layout> + <layout>2x2</layout> + <layout>5-grid-zoom</layout> + <layout>3x2-zoom</layout> + <layout>7-grid-zoom</layout> + <layout>4x2-zoom</layout> + <layout>3x3</layout> + </group> + <group name="1up_top_left_plus"> + <layout>1up_top_left+5</layout> + <layout>1up_top_left+7</layout> + <layout>1up_top_left+9</layout> + </group> + <group name="3up_plus"> + <layout>3up+4</layout> + <layout>3up+9</layout> + </group> + </groups> + </layout-settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/console.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/console.conf.xml index 95d42e4ec01b1c5ebc5029de00dc7159bd90c5ba..6c2b82812a77a60d35d45edeaf72f871b2176ab3 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/console.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/console.conf.xml @@ -31,20 +31,18 @@ <map name="mod_sndfile.c" value="warning,info,debug"/> --> <map name="all" value="console,debug,info,notice,warning,err,crit,alert"/> - <map name="sofia.c" value="notice"/> - <map name="switch_core_state_machine.c" value="notice"/> <!-- 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 OpenZAP, Sofia, and switch core messages. + 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_openzap" value="all"/> + <map name="mod_freetdm" value="all"/> <map name="sofia.c" value="notice"/> <map name="switch_core_state_machine.c" value="all"/> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/curl.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/curl.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..eff3c6b9ac85cc2512d9d614757f0e6f0e714e0c --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/curl.conf.xml @@ -0,0 +1,5 @@ +<configuration name="curl.conf" description="cURL module"> + <settings> + <param name="max-bytes" value="64000"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/db.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/db.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..abc6c0c152e9c50c7846d28f8413925babf4f6f1 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/db.conf.xml @@ -0,0 +1,5 @@ +<configuration name="db.conf" description="LIMIT DB Configuration"> + <settings> + <!--<param name="odbc-dsn" value="dsn:user:pass"/>--> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/dialplan_directory.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/dialplan_directory.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..e4edcd6b153e7ea449389c9ab01a34dc716bfdd9 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/dialplan_directory.conf.xml @@ -0,0 +1,9 @@ +<configuration name="dialplan_directory.conf" description="Dialplan Directory"> + <settings> + <param name="directory-name" value="ldap"/> + <param name="host" value="ldap.freeswitch.org"/> + <param name="dn" value="cn=Manager,dc=freeswitch,dc=org"/> + <param name="pass" value="test"/> + <param name="base" value="dc=freeswitch,dc=org"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/dingaling.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/dingaling.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..dd6c9a5da1aae1557e7bacf9b3430217a70e5522 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/dingaling.conf.xml @@ -0,0 +1,9 @@ +<configuration name="dingaling.conf" description="XMPP Jingle Endpoint"> + <settings> + <param name="debug" value="0"/> + <param name="codec-prefs" value="H264,PCMU"/> + </settings> + + <X-PRE-PROCESS cmd="include" data="../jingle_profiles/*.xml"/> + +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/directory.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/directory.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..748b2337c479e9277e4f57b056de1f3bd2352b17 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/directory.conf.xml @@ -0,0 +1,21 @@ +<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> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/distributor.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/distributor.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..99a4c9d942e89bef6c497640f445af2065bcebb5 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/distributor.conf.xml @@ -0,0 +1,10 @@ +<configuration name="distributor.conf" description="Distributor Configuration"> + <lists> + <!-- every 10 calls to test you will get foo1 once and foo2 9 times...yes NINE TIMES! --> + <!-- this is not the same as 100 with 10 and 90 that would do foo1 10 times in a row then foo2 90 times in a row --> + <list name="test"> + <node name="foo1" weight="1"/> + <node name="foo2" weight="9"/> + </list> + </lists> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/easyroute.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/easyroute.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..350a50989b0443cf9d60eb7eefba28788b746a62 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/easyroute.conf.xml @@ -0,0 +1,28 @@ +<configuration name="easyroute.conf" description="EasyRoute Module"> + <settings> + <!-- These are kind Obvious --> + <param name="db-username" value="root"/> + <param name="db-password" value="password"/> + <param name="db-dsn" value="easyroute"/> + + <!-- Default Technology and profile --> + <param name="default-techprofile" value="sofia/default"/> + + <!-- IP or Hostname of Default Route --> + <param name="default-gateway" value="192.168.66.6"/> + + <!-- Number of times to retry ODBC connection on connection problems, default is 120 --> + <param name="odbc-retries" value="120"/> + + <!-- Customer Query. Use this with Care!!! We are not responsible if you mess + This up!!! Query *MUST* return columns in the following order! + gateway varchar(128) - contains destination gateway host:port pair (ex: 192.168.1.1:5060 ) + group varchar(128) - contains optional group name + call_limit varchar(16) - contains optional call limit + tech_prefix varchar(128) - tech prefix used to build dial string (ex: sofia/default ) + acctcode varchar(128) - used to set channel variable acctcode for logging into the CDRs + destination_number varchar(16) - Number returning for the query for building the dial string. (ex: 18005551212) + See Documentation on the Wiki for further information --> + <!-- <param name="custom-query" value="call FS_GET_SIP_LOCATION(%s);"/> --> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/enum.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/enum.conf.xml index 0304d0dacd4fd9eda9e6d9afcfe4c14f5f59ed63..a8f6f52f851227e1b51a624bda669cea51d190f5 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/enum.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/enum.conf.xml @@ -2,12 +2,20 @@ <settings> <param name="default-root" value="e164.org"/> <param name="default-isn-root" value="freenum.org"/> - <param name="query-timeout" value="10"/> <param name="auto-reload" value="true"/> + + <param name="query-timeout-ms" value="200"/> + <param name="query-timeout-retry" value="2"/> + <param name="random-nameserver" value="false"/> + + <!-- If you have specific (non-recursive) servers for your enum queries, specify them here ( up to 10 ) --> + <!-- <param name="nameserver" value="x.x.x.x"/> --> + <!-- <param name="nameserver" value="y.y.y.y"/> --> </settings> <routes> - <route service="E2U+SIP" regex="sip:(.*)" replace="sofia/${use_profile}/$1"/> - <!--<route service="E2U+XMPP" regex="XMPP:(.*)" replace="dingaling/$${xmpp_server_profile}/$1"/>--> + <route service="E2U+SIP" regex="sip:(.*)" replace="sofia/${use_profile}-ipv6/$1;transport=udp|sofia/${use_profile}/$1;transport=udp"/> + <route service="E2T+SIP" regex="sip:(.*)" replace="sofia/${use_profile}-ipv6/$1;transport=tcp|sofia/${use_profile}/$1;transport=tcp"/> + <route service="E2T+SIPS" regex="sip:(.*)" replace="sofia/${use_profile}-ipv6/$1;transport=tls|sofia/${use_profile}/$1;transport=tls"/> </routes> </configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/erlang_event.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/erlang_event.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f627668efcdcc610ab711c526a9351dfdecb052 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/erlang_event.conf.xml @@ -0,0 +1,23 @@ +<configuration name="erlang_event.conf" description="Erlang Socket Client"> + <settings> + <param name="listen-ip" value="0.0.0.0"/> + <param name="listen-port" value="8031"/> + <!-- Specify the first part of the node name + (the host part after the @ will be autodetected) + OR pass a complete nodename to avoid autodetection + eg. freeswitch@example or freeswitch@example.com. + If you pass a complete node name, the 'shortname' parameter has no effect. --> + <param name="nodename" value="freeswitch"/> + <!-- Specify this OR 'cookie-file' or $HOME/.erlang.cookie will be read --> + <param name="cookie" value="ClueCon"/> + <!-- Read a cookie from an arbitary erlang cookie file instead --> + <!--<param name="cookie-file" value="/$${temp_dir}/erlang.cookie"/>--> + <param name="shortname" value="true"/> + <!-- in additon to cookie, optionally restrict by ACL --> + <!--<param name="apply-inbound-acl" value="lan"/>--> + <!-- alternative is "binary" --> + <!--<param name="encoding" value="string"/>--> + <!-- provide compatability with previous OTP release (use with care) --> + <!--<param name="compat-rel" value="12"/> --> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/event_multicast.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/event_multicast.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..eac039260784d648e56a45ced76a4711b8137ee0 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/event_multicast.conf.xml @@ -0,0 +1,14 @@ +<configuration name="event_multicast.conf" description="Multicast Event"> + <settings> + <param name="address" value="225.1.1.1"/> + <param name="port" value="4242"/> + <param name="bindings" value="all"/> + <param name="ttl" value="1"/> + <!-- <param name="loopback" value="no"/>--> + <!-- Uncomment this to enable pre-shared key encryption on the packets. --> + <!-- For this option to work, you'll need to have the openssl development --> + <!-- headers installed when you ran ./configure --> + <!-- <param name="psk" value="ClueCon"/> --> + </settings> +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/event_socket.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/event_socket.conf.xml index e4581bc948f51078d57b1852c20f1872734f0f29..d62dd34dc7951d45a0142254f91b1a86f56571c8 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/event_socket.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/event_socket.conf.xml @@ -1,9 +1,10 @@ <configuration name="event_socket.conf" description="Socket Client"> <settings> <param name="nat-map" value="false"/> - <param name="listen-ip" value="127.0.0.1"/> + <param name="listen-ip" value="::"/> <param name="listen-port" value="8021"/> <param name="password" value="ClueCon"/> - <!-- param name="apply-inbound-acl" value="localnet.auto"/ --> + <!--<param name="apply-inbound-acl" value="loopback.auto"/>--> + <!--<param name="stop-on-bind-error" value="true"/>--> </settings> </configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/fax.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/fax.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..d6a5ff734b1c01472f9eea67ce2c5574b7a39b06 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/fax.conf.xml @@ -0,0 +1,12 @@ +<configuration name="fax.conf" description="FAX application configuration"> + <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"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/fifo.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/fifo.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..b1db4dd2bdb3a024ef2f19673644eee5b6e7e840 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/fifo.conf.xml @@ -0,0 +1,10 @@ +<configuration name="fifo.conf" description="FIFO Configuration"> + <settings> + <param name="delete-all-outbound-member-on-startup" value="false"/> + </settings> + <fifos> + <fifo name="cool_fifo@$${domain}" importance="0"> + <!--<member timeout="60" simo="1" lag="20">{member_wait=nowait}user/1005@$${domain}</member>--> + </fifo> + </fifos> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/format_cdr.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/format_cdr.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..0c42e78b409ac3261b803f00c4deb996cf2d53f5 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/format_cdr.conf.xml @@ -0,0 +1,88 @@ +<configuration name="format_cdr.conf" description="Multi Format CDR CURL logger"> + + <!-- You can have multiple profiles, to allow logging to both json and cdr simultaneously, or to + different paths or servers with different settings, just be sure to use different name for + each profile. --> + <profiles> + + <profile name="default"> + <settings> + <!-- the format of data to send, defaults to xml --> + <!-- <param name="format" value="json|xml"/> --> + <param name="format" value="xml"/> + + <!-- the url to post to if blank web posting is disabled --> + <!-- <param name="url" value="http://localhost/cdr_curl/post.php"/> --> + + <!-- optional: credentials to send to web server --> + <!-- <param name="cred" value="user:pass"/> --> + + <!-- the total number of retries (not counting the first 'try') to post to webserver incase of failure --> + <!-- <param name="retries" value="2"/> --> + + <!-- delay between retries in seconds, default is 5 seconds --> + <!-- <param name="delay" value="1"/> --> + + <!-- Log via http and on disk, default is false --> + <!-- <param name="log-http-and-disk" value="true"/> --> + + <!-- optional: if not present we do not log every record to disk --> + <!-- either an absolute path, a relative path assuming ${prefix}/logs or a blank value will default to ${prefix}/logs/format_cdr --> + <param name="log-dir" value=""/> + + <!-- optional: if not present we do log the b leg --> + <!-- true or false if we should create a cdr for the b leg of a call--> + <param name="log-b-leg" value="false"/> + + <!-- optional: if not present, all filenames are the uuid of the call --> + <!-- true or false if a leg files are prefixed "a_" --> + <param name="prefix-a-leg" value="true"/> + + <!-- encode the post data may be 'true' for url encoding, 'false' for no encoding, 'base64' for base64 encoding or 'textxml' for text/xml --> + <param name="encode" value="true"/> + + <!-- optional: set to true to disable Expect: 100-continue lighttpd requires this setting --> + <!--<param name="disable-100-continue" value="true"/>--> + + <!-- optional: full path to the error log dir for failed web posts if not specified its the same as log-dir --> + <!-- either an absolute path, a relative path assuming ${prefix}/logs or a blank or omitted value will default to ${prefix}/logs/format_cdr --> + <!-- <param name="err-log-dir" value="$${temp_dir}"/> --> + + <!-- which auhtentification scheme to use. Supported values are: basic, digest, NTLM, GSS-NEGOTIATE or "any" for automatic detection --> + <!--<param name="auth-scheme" value="basic"/>--> + + <!-- optional: this will enable the CA root certificate check by libcurl to + verify that the certificate was issued by a major Certificate Authority. + note: default value is disabled. only enable if you want this! --> + <!--<param name="enable-cacert-check" value="true"/>--> + <!-- optional: verify that the server is actually the one listed in the cert --> + <!-- <param name="enable-ssl-verifyhost" value="true"/> --> + + <!-- optional: these options can be used to specify custom SSL certificates + to use for HTTPS communications. Either use both options or neither. + Specify your public key with 'ssl-cert-path' and the private key with + 'ssl-key-path'. If your private key has a password, specify it with + 'ssl-key-password'. --> + <!-- <param name="ssl-cert-path" value="$${certs_dir}/public_key.pem"/> --> + <!-- <param name="ssl-key-path" value="$${certs_dir}/private_key.pem"/> --> + <!-- <param name="ssl-key-password" value="MyPrivateKeyPassword"/> --> + + <!-- optional: use a custom CA certificate in PEM format to verify the peer + with. This is useful if you are acting as your own certificate authority. + note: only makes sense if used in combination with "enable-cacert-check." --> + <!-- <param name="ssl-cacert-file" value="$${certs_dir}/cacert.pem"/> --> + + <!-- optional: specify the SSL version to force HTTPS to use. Valid options are + "SSLv3" and "TLSv1". Otherwise libcurl will auto-negotiate the version. --> + <!-- <param name="ssl-version" value="TLSv1"/> --> + + <!-- optional: enables cookies and stores them in the specified file. --> + <!-- <param name="cookie-file" value="/$${temp_dir}/cookie-mod_format_cdr_curl.txt"/> --> + + <!-- Whether to URL encode the individual JSON values. Defaults to true, set to false for standard JSON. --> + <param name="encode-values" value="true"/> + + </settings> + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/graylog2.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/graylog2.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a05482bf84d2b1f3f387f648b63318ba6a9f0ba --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/graylog2.conf.xml @@ -0,0 +1,24 @@ +<configuration name="graylog2.conf" description="Graylog2 Logger"> + <!-- emerg - system is unusable --> + <!-- alert - action must be taken immediately --> + <!-- crit - critical conditions --> + <!-- err - error conditions --> + <!-- warning - warning conditions --> + <!-- notice - normal, but significant, condition --> + <!-- info - informational message --> + <!-- debug - debug-level message --> + <settings> + <param name="server-host" value="192.168.0.69"/> + <param name="server-port" value="12201"/> + <param name="loglevel" value="warning"/> + <!-- Uncomment if using logstash w/ gelf.rb --> + <!--param name="send-uncompressed-header" value="true"/--> + + <!-- fields to add to every log associated w/ a session --> + <fields> + <!-- for example: channel variable "customer_account_number" will be the data source for the customer field in graylog2 --> + <!--field name="customer" variable="customer_account_number"/--> + </fields> + </settings> +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/hash.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/hash.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..95b79287755ee627174ef44cb0970110b9248923 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/hash.conf.xml @@ -0,0 +1,6 @@ +<configuration name="hash.conf" description="Hash Configuration"> + <remotes> + <!-- List of hosts from where to pull usage data --> + <!-- <remote name="Test1" host="10.0.0.10" port="8021" password="ClueCon" interval="1000" /> --> + </remotes> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/hiredis.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/hiredis.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..e82453928b2ebe8f8348fa5333a7e813e44ac453 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/hiredis.conf.xml @@ -0,0 +1,23 @@ +<configuration name="hiredis.conf" description="mod_hiredis"> + <profiles> + <profile name="default"> + <connections> + <connection name="primary"> + <param name="hostname" value="172.18.101.101"/> + <param name="password" value="redis"/> + <param name="port" value="6379"/> + <param name="timeout_ms" value="500"/> + </connection> + <connection name="secondary"> + <param name="hostname" value="localhost"/> + <param name="password" value="redis"/> + <param name="port" value="6380"/> + <param name="timeout_ms" value="500"/> + </connection> + </connections> + <params> + <param name="ignore-connect-fail" value="true"/> + </params> + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/httapi.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/httapi.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3566d148a14189920819694ecf93ccf5d44a78b --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/httapi.conf.xml @@ -0,0 +1,129 @@ +<configuration name="httapi.conf" description="HT-TAPI Hypertext Telephony API"> + <settings> + <!-- print xml on the console --> + <param name="debug" value="true"/> + <!-- time to keep audio files when discovered they were deleted from the http server --> + <param name="file-not-found-expires" value="300"/> + <!-- how often to re-check the server to make sure the remote file has not changed --> + <param name="file-cache-ttl" value="300"/> + </settings> + <profiles> + <profile name="default"> + + <!-- default params for conference action tags --> + <conference> + <param name="default-profile" value="default"/> + </conference> + + <!-- default params for dial action tags --> + <dial> + <param name="context" value="default"/> + <param name="dialplan" value="XML"/> + </dial> + + <!-- permissions --> + <permissions> + <!-- <permission name="all" value="true"/> --> + <!--<permission name="none" value="true"/> --> + <permission name="set-params" value="true"/> + <permission name="set-vars" value="false"> + <!-- default to "deny" or "allow" --> + <!-- type attr can be "deny" or "allow" nothing defaults to opposite of the list default so allow in this case --> + <!-- + <variable-list default="deny"> + <variable name="caller_id_name"/> + <variable name="hangup"/> + </variable-list> + --> + </permission> + <permission name="get-vars" value="false"> + <!-- default to "deny" or "allow" --> + <!-- type attr can be "deny" or "allow" nothing defaults to opposite of the list default so allow in this case --> + <!-- + <variable-list default="deny"> + <variable name="caller_id_name"/> + <variable name="hangup"/> + </variable-list> + --> + </permission> + <permission name="extended-data" value="false"/> + <permission name="execute-apps" value="true"> + <!-- default to "deny" or "allow" --> + <application-list default="deny"> + <!-- type attr can be "deny" or "allow" nothing defaults to opposite of the list default so allow in this case --> + <application name="info"/> + <application name="hangup"/> + </application-list> + </permission> + <permission name="expand-vars-in-tag-body" value="false"> + <!-- default to "deny" or "allow" --> + <!-- type attr can be "deny" or "allow" nothing defaults to opposite of the list default so allow in this case --> + <!-- + <variable-list default="deny"> + <variable name="caller_id_name"/> + <variable name="hangup"/> + </variable-list> + + <api-list default="deny"> + <api name="expr"/> + <api name="lua"/> + </api-list> + --> + </permission> + <permission name="dial" value="true"/> + <permission name="dial-set-context" value="false"/> + <permission name="dial-set-dialplan" value="false"/> + <permission name="dial-set-cid-name" value="false"/> + <permission name="dial-set-cid-number" value="false"/> + <permission name="dial-full-originate" value="false"/> + <permission name="conference" value="true"/> + <permission name="conference-set-profile" value="false"/> + </permissions> + + <params> + <!-- default url can be overridden by app data --> + <param name="gateway-url" value="http://www.freeswitch.org/api/index.cgi" /> + + <!-- set this to provide authentication credentials to the server --> + <!--<param name="gateway-credentials" value="muser:mypass"/>--> + <!--<param name="auth-scheme" value="basic"/>--> + + <!-- optional: this will enable the CA root certificate check by libcurl to + verify that the certificate was issued by a major Certificate Authority. + note: default value is disabled. only enable if you want this! --> + <!--<param name="enable-cacert-check" value="true"/>--> + <!-- optional: verify that the server is actually the one listed in the cert --> + <!-- <param name="enable-ssl-verifyhost" value="true"/> --> + + <!-- optional: these options can be used to specify custom SSL certificates + to use for HTTPS communications. Either use both options or neither. + Specify your public key with 'ssl-cert-path' and the private key with + 'ssl-key-path'. If your private key has a password, specify it with + 'ssl-key-password'. --> + <!-- <param name="ssl-cert-path" value="$${certs_dir}/public_key.pem"/> --> + <!-- <param name="ssl-key-path" value="$${certs_dir}/private_key.pem"/> --> + <!-- <param name="ssl-key-password" value="MyPrivateKeyPassword"/> --> + <!-- optional timeout --> + <!-- <param name="timeout" value="10"/> --> + <!-- optional: maximum amount of time in seconds that is allowed to make the connection to the server --> + <!-- <param name="connect-timeout" value="2"/> --> + + <!-- optional: use a custom CA certificate in PEM format to verify the peer + with. This is useful if you are acting as your own certificate authority. + note: only makes sense if used in combination with "enable-cacert-check." --> + <!-- <param name="ssl-cacert-file" value="$${certs_dir}/cacert.pem"/> --> + + <!-- optional: specify the SSL version to force HTTPS to use. Valid options are + "SSLv3" and "TLSv1". Otherwise libcurl will auto-negotiate the version. --> + <!-- <param name="ssl-version" value="TLSv1"/> --> + + <!-- optional: enables cookies and stores them in the specified file. --> + <!-- <param name="cookie-file" value="$${temp_dir}/cookie-mod_xml_curl.txt"/> --> + + <!-- one or more of these imply you want to pick the exact variables that are transmitted --> + <!--<param name="enable-post-var" value="Caller-Unique-ID"/>--> + </params> + + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/http_cache.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/http_cache.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..f8cc9368d76ba15f7fe4d9a6aece7ba0f8a96a77 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/http_cache.conf.xml @@ -0,0 +1,21 @@ +<configuration name="http_cache.conf" description="HTTP GET cache"> + <settings> + <!-- set to true if you want to enable http:// and https:// formats. Do not use if mod_httapi is also loaded --> + <param name="enable-file-formats" value="false"/> + <param name="max-urls" value="10000"/> + <param name="location" value="$${cache_dir}"/> + <param name="default-max-age" value="86400"/> + <param name="prefetch-thread-count" value="8"/> + <param name="prefetch-queue-size" value="100"/> + <!-- absolute path to CA bundle file --> + <param name="ssl-cacert" value="$${certs_dir}/cacert.pem"/> + <!-- verify certificates --> + <param name="ssl-verifypeer" value="true"/> + <!-- verify host name matches certificate --> + <param name="ssl-verifyhost" value="true"/> + <!-- default is 300 seconds, override here --> + <!--param name="connect-timeout" value="300"/--> + <!-- default is 300 seconds, override here --> + <!--param name="download-timeout" value="300"/--> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/ivr.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/ivr.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd4e73dedff7cf14257b73dba4a3da782872bb66 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/ivr.conf.xml @@ -0,0 +1,5 @@ +<configuration name="ivr.conf" description="IVR menus"> + <menus> + <X-PRE-PROCESS cmd="include" data="../ivr_menus/*.xml"/> + </menus> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/java.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/java.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..705114ac4a8ba11ba5da93e9c1a5dca8579d8bce --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/java.conf.xml @@ -0,0 +1,8 @@ +<configuration name="java.conf" description="Java Plug-Ins"> + <javavm path="/opt/jdk1.6.0_04/jre/lib/amd64/server/libjvm.so"/> + <options> + <option value="-Djava.class.path=$${script_dir}/freeswitch.jar:$${script_dir}/example.jar"/> + <option value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8000"/> + </options> + <startup class="org/freeswitch/example/ApplicationLauncher" method="startup"/> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/kazoo.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/kazoo.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..b730523d4c2b56d8df2be1edb05934267a59f79a --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/kazoo.conf.xml @@ -0,0 +1,215 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration name="kazoo.conf" description="General purpose Erlang c-node produced to better fit the Kazoo project"> + <settings> + <param name="listen-ip" value="0.0.0.0" /> + <param name="listen-port" value="8031" /> + <!--<param name="cookie-file" value="/etc/freeswitch/autoload_configs/.erlang.cookie" />--> + <param name="cookie" value="change_me" /> + <param name="shortname" value="false" /> + <param name="nodename" value="freeswitch" /> + <param name="send-msg-batch-size" value="10" /> + <param name="receive-timeout" value="1" /> + <!--<param name="receive-msg-preallocate" value="0" />--> + <!--<param name="event-stream-preallocate" value="0" />--> + <!--<param name="event-stream-framing" value="2" />--> + <!--<param name="kazoo-var-prefix" value="ecallmgr" />--> + <!--<param name="compat-rel" value="12"/> --> + </settings> + <event-filter type="whitelist"> + <header name="Acquired-UUID" /> + <header name="action" /> + <header name="Action" /> + <header name="alt_event_type" /> + <header name="Answer-State" /> + <header name="Application" /> + <header name="Application-Data" /> + <header name="Application-Name" /> + <header name="Application-Response" /> + <header name="att_xfer_replaced_by" /> + <header name="Auth-Method" /> + <header name="Auth-Realm" /> + <header name="Auth-User" /> + <header name="Bridge-A-Unique-ID" /> + <header name="Bridge-B-Unique-ID" /> + <header name="Call-Direction" /> + <header name="Caller-Callee-ID-Name" /> + <header name="Caller-Callee-ID-Number" /> + <header name="Caller-Caller-ID-Name" /> + <header name="Caller-Caller-ID-Number" /> + <header name="Caller-Context" /> + <header name="Caller-Controls" /> + <header name="Caller-Destination-Number" /> + <header name="Caller-Dialplan" /> + <header name="Caller-Network-Addr" /> + <header name="Caller-Unique-ID" /> + <header name="Call-ID" /> + <header name="Channel-Call-State" /> + <header name="Channel-Call-UUID" /> + <header name="Channel-Presence-ID" /> + <header name="Channel-State" /> + <header name="Chat-Permissions" /> + <header name="Conference-Name" /> + <header name="Conference-Profile-Name" /> + <header name="Conference-Unique-ID" /> + <header name="Conference-Size" /> + <header name="New-ID" /> + <header name="Old-ID" /> + <header name="Detected-Tone" /> + <header name="dialog_state" /> + <header name="direction" /> + <header name="Distributed-From" /> + <header name="DTMF-Digit" /> + <header name="DTMF-Duration" /> + <header name="Event-Date-Timestamp" /> + <header name="Event-Name" /> + <header name="Event-Subclass" /> + <header name="Expires" /> + <header name="Ext-SIP-IP" /> + <header name="File" /> + <header name="FreeSWITCH-Hostname" /> + <header name="from" /> + <header name="Hunt-Destination-Number" /> + <header name="ip" /> + <header name="Message-Account" /> + <header name="metadata" /> + <header name="old_node_channel_uuid" /> + <header name="Other-Leg-Callee-ID-Name" /> + <header name="Other-Leg-Callee-ID-Number" /> + <header name="Other-Leg-Caller-ID-Name" /> + <header name="Other-Leg-Caller-ID-Number" /> + <header name="Other-Leg-Destination-Number" /> + <header name="Other-Leg-Direction" /> + <header name="Other-Leg-Unique-ID" /> + <header name="Participant-Type" /> + <header name="Path" /> + <header name="profile_name" /> + <header name="Profiles" /> + <header name="proto-specific-event-name" /> + <header name="Raw-Application-Data" /> + <header name="Resigning-UUID" /> + <header name="set" /> + <header name="sip_auto_answer" /> + <header name="sip_auth_method" /> + <header name="sip_from_host" /> + <header name="sip_from_user" /> + <header name="sip_to_host" /> + <header name="sip_to_user" /> + <header name="sub-call-id" /> + <header name="technology" /> + <header name="to" /> + <header name="Unique-ID" /> + <header name="URL" /> + <header name="variable_channel_is_moving" /> + <header name="variable_collected_digits" /> + <header name="variable_current_application" /> + <header name="variable_current_application_data" /> + <header name="variable_domain_name" /> + <header name="variable_effective_caller_id_name" /> + <header name="variable_effective_caller_id_number" /> + <header name="variable_fax_bad_rows" /> + <header name="variable_fax_document_total_pages" /> + <header name="variable_fax_document_transferred_pages" /> + <header name="variable_fax_ecm_used" /> + <header name="variable_fax_result_code" /> + <header name="variable_fax_result_text" /> + <header name="variable_fax_success" /> + <header name="variable_fax_transfer_rate" /> + <header name="variable_holding_uuid" /> + <header name="variable_hold_music" /> + <header name="variable_media_group_id" /> + <header name="variable_originate_disposition" /> + <header name="variable_playback_terminator_used" /> + <header name="variable_presence_id" /> + <header name="variable_record_ms" /> + <header name="variable_recovered" /> + <header name="variable_silence_hits_exhausted" /> + <header name="variable_sip_auth_realm" /> + <header name="variable_sip_from_host" /> + <header name="variable_sip_from_user" /> + <header name="variable_sip_h_X-AUTH-IP" /> + <header name="variable_sip_received_ip" /> + <header name="variable_sip_to_host" /> + <header name="variable_sip_to_user" /> + <header name="variable_sofia_profile_name" /> + <header name="variable_transfer_history" /> + <header name="variable_user_name" /> + <header name="variable_endpoint_disposition" /> + <header name="variable_originate_disposition" /> + <header name="variable_bridge_hangup_cause" /> + <header name="variable_hangup_cause" /> + <header name="variable_last_bridge_proto_specific_hangup_cause" /> + <header name="variable_proto_specific_hangup_cause" /> + <header name="VM-Call-ID" /> + <header name="VM-sub-call-id" /> + <header name="whistle_application_name" /> + <header name="whistle_application_response" /> + <header name="whistle_event_name" /> + <header name="sip_auto_answer_notify" /> + <header name="eavesdrop_group" /> + <header name="origination_caller_id_name" /> + <header name="origination_caller_id_number" /> + <header name="origination_callee_id_name" /> + <header name="origination_callee_id_number" /> + <header name="sip_auth_username" /> + <header name="sip_auth_password" /> + <header name="effective_caller_id_name" /> + <header name="effective_caller_id_number" /> + <header name="effective_callee_id_name" /> + <header name="effective_callee_id_number" /> + + <!-- Registrations --> + <header name="call-id" /> + <header name="profile-name" /> + <header name="from-user" /> + <header name="from-host" /> + <header name="presence-hosts" /> + <header name="contact" /> + <header name="rpid" /> + <header name="status" /> + <header name="expires" /> + <header name="to-user" /> + <header name="to-host" /> + <header name="network-ip" /> + <header name="network-port" /> + <header name="username" /> + <header name="realm" /> + <header name="user-agent" /> + + <!-- CDR Headers --> + <header name="Hangup-Cause" /> + <header name="Unique-ID" /> + <header name="variable_switch_r_sdp" /> + <header name="variable_sip_local_sdp_str" /> + <header name="variable_sip_to_uri" /> + <header name="variable_sip_from_uri" /> + <header name="variable_effective_caller_id_number" /> + <header name="Caller-Caller-ID-Number" /> + <header name="variable_effective_caller_id_name" /> + <header name="Caller-Caller-ID-Name" /> + <header name="Caller-Callee-ID-Name" /> + <header name="Caller-Callee-ID-Number" /> + <header name="Other-Leg-Unique-ID" /> + <header name="variable_sip_user_agent" /> + <header name="variable_duration" /> + <header name="variable_billsec" /> + <header name="variable_progresssec" /> + <header name="variable_progress_uepoch" /> + <header name="variable_progress_media_uepoch" /> + <header name="variable_start_uepoch" /> + <header name="variable_digits_dialed" /> + <header name="variable_sip_cid_type" /> + + <!-- Conference Headers --> + <header name="Hear" /> + <header name="Speak" /> + <header name="Video" /> + <header name="Talking" /> + <header name="Mute-Detect" /> + <header name="Member-ID" /> + <header name="Member-Type" /> + <header name="Energy-Level" /> + <header name="Current-Energy" /> + <header name="Floor" /> + + </event-filter> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/lcr.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/lcr.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d106d4890ff50786075f8d24b988502fc63acce --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/lcr.conf.xml @@ -0,0 +1,89 @@ +<configuration name="lcr.conf" description="LCR Configuration"> + <settings> + <param name="odbc-dsn" value="freeswitch-mysql:freeswitch:Fr33Sw1tch"/> +<!-- <param name="odbc-dsn" value="freeswitch-pgsql:freeswitch:Fr33Sw1tch"/> --> + </settings> + <profiles> + <profile name="default"> + <param name="id" value="0"/> + <param name="order_by" value="rate,quality,reliability"/> + </profile> + <profile name="qual_rel"> + <param name="id" value="1"/> + <param name="order_by" value="quality,reliability"/> + </profile> + <profile name="rel_qual"> + <param name="id" value="2"/> + <param name="order_by" value="reliability,quality"/> + </profile> +<!-- + Some samples of how to do custom SQL: + + ============================================================= + PostgreSQL with contrib prefix module which supports fast + prefix queries. Ideal option. + ============================================================= + <profile name="pg_prefix"> + <param name="custom_sql" value=" +SELECT l.digits AS lcr_digits, + c.carrier_name AS lcr_carrier_name, + l.${lcr_rate_field} as lcr_rate_field, + cg.prefix AS lcr_gw_prefix, cg.suffix AS lcr_gw_suffix, + l.lead_strip AS lcr_lead_strip, l.trail_strip AS lcr_trail_strip, + l.prefix AS lcr_prefix, l.suffix AS lcr_suffix + FROM lcr l + JOIN carriers c ON l.carrier_id=c.id + JOIN carrier_gateway cg ON c.id=cg.carrier_id + WHERE c.enabled = '1' AND cg.enabled = '1' AND l.enabled = '1' + AND digits_prefix @> %q + AND CURRENT_TIMESTAMP BETWEEN date_start AND date_end + ORDER BY digits DESC, ${lcr_rate_field}, random(); + "/> + </profile> + + ============================================================= + PostgreSQL with contrib prefix module which supports fast + prefix queries. Ideal option. Alternate syntax which requies + a session but allows variable substitution. + ============================================================= + <profile name="pg_prefix2"> + <param name="custom_sql" value=" +SELECT l.digits AS lcr_digits, + c.carrier_name AS lcr_carrier_name, + l.${lcr_rate_field} as lcr_rate_field, + cg.prefix AS lcr_gw_prefix, cg.suffix AS lcr_gw_suffix, + l.lead_strip AS lcr_lead_strip, l.trail_strip AS lcr_trail_strip, + l.prefix AS lcr_prefix, l.suffix AS lcr_suffix + FROM lcr l + JOIN carriers c ON l.carrier_id=c.id + JOIN carrier_gateway cg ON c.id=cg.carrier_id + WHERE c.enabled = '1' AND cg.enabled = '1' AND l.enabled = '1' + AND digits_prefix @> '${lcr_query_digits}' + AND CURRENT_TIMESTAMP BETWEEN date_start AND date_end + ORDER BY digits DESC, ${lcr_rate_field}, random(); + "/> + </profile> + + ============================================================= + Demonstrates use of computed inlist. + ============================================================= + <profile name="inlist"> + <param name="custom_sql" value=" +SELECT l.digits AS lcr_digits, + c.carrier_name AS lcr_carrier_name, + l.${lcr_rate_field} as lcr_rate_field, + cg.prefix AS lcr_gw_prefix, cg.suffix AS lcr_gw_suffix, + l.lead_strip AS lcr_lead_strip, l.trail_strip AS lcr_trail_strip, + l.prefix AS lcr_prefix, l.suffix AS lcr_suffix + FROM lcr l + JOIN carriers c ON l.carrier_id=c.id + JOIN carrier_gateway cg ON c.id=cg.carrier_id + WHERE c.enabled = '1' AND cg.enabled = '1' AND l.enabled = '1' + AND digits IN (${lcr_query_expanded_digits}) + AND CURRENT_TIMESTAMP BETWEEN date_start AND date_end + ORDER BY digits DESC, ${lcr_rate_field}, random(); + "/> + </profile> +--> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/local_stream.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/local_stream.conf.xml index 94a566539222731bb11c471b2544ce4f1c15c9ad..16371d2610f3e8758f9b2995570c5d3ddfc0fda6 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/local_stream.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/local_stream.conf.xml @@ -37,7 +37,7 @@ <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"/> @@ -45,5 +45,5 @@ <param name="interval" value="10"/> <param name="timer-name" value="soft"/> </directory> - --> + </configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/logfile.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/logfile.conf.xml index 57f276c4eaf746ad61d95941197c4342b6dbc836..670bae957f9ec66c1c49dab4db3c899e3a385b9f 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/logfile.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/logfile.conf.xml @@ -9,9 +9,12 @@ <!-- 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"/> - <!-- Uncomment to prefix all log lines by the session's uuid --> - <!-- <param name="uuid" value="true" /> --> + <param name="rollover" value="1048576000"/> + <!-- 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> <!-- @@ -19,7 +22,7 @@ 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="debug,info,notice,warning,err,crit,alert"/> + <map name="all" value="console,debug,info,notice,warning,err,crit,alert"/> </mappings> </profile> </profiles> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/lua.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/lua.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..fafd3361690f78fbb05b3be567bb67f42b97b009 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/lua.conf.xml @@ -0,0 +1,32 @@ +<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> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/memcache.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/memcache.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc0173f986d7c3460d1867e136a0dc60cf0054a3 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/memcache.conf.xml @@ -0,0 +1,6 @@ +<configuration name="memcache.conf" description="memcache Configuration"> + <settings> + <!-- comma sep list of servers: eg: localhost,otherhost:port,anotherone --> + <param name="memcache-servers" value="localhost"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/modules.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/modules.conf.xml index 94961f1d81dbec1d0b8a04b361c4481614ad3542..044d67e72e5f46b65bd6f9c1e463b36012a95160 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/modules.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/modules.conf.xml @@ -1,8 +1,8 @@ <configuration name="modules.conf" description="Modules"> <modules> - <!-- Loggers (I'd load these first) --> <load module="mod_console"/> + <!-- <load module="mod_graylog2"/> --> <load module="mod_logfile"/> <!-- <load module="mod_syslog"/> --> @@ -10,18 +10,26 @@ <!-- Multi-Faceted --> <!-- mod_enum is a dialplan interface, an application interface and an api command interface --> - <load module="mod_enum"/> + <load module="mod_enum"/> <!-- XML Interfaces --> <!-- <load module="mod_xml_rpc"/> --> <!-- <load module="mod_xml_curl"/> --> <!-- <load module="mod_xml_cdr"/> --> + <!-- <load module="mod_xml_radius"/> --> + <!-- <load module="mod_xml_scgi"/> --> <!-- Event Handlers --> - <load module="mod_cdr_csv"/> + <!-- <load module="mod_amqp"/> --> + <!-- <load module="mod_cdr_csv"/> --> + <!-- <load module="mod_cdr_sqlite"/> --> <!-- <load module="mod_event_multicast"/> --> <load module="mod_event_socket"/> + <!-- <load module="mod_event_zmq"/> --> <!-- <load module="mod_zeroconf"/> --> + <!-- <load module="mod_erlang_event"/> --> + <!-- <load module="mod_smpp"/> --> + <!-- <load module="mod_snmp"/> --> <!-- Directory Interfaces --> <!-- <load module="mod_ldap"/> --> @@ -33,63 +41,86 @@ <load module="mod_sofia"/> <load module="mod_loopback"/> <!-- <load module="mod_woomera"/> --> - <!-- <load module="mod_openzap"/> --> + <!-- <load module="mod_freetdm"/> --> <!-- <load module="mod_unicall"/> --> <!-- <load module="mod_skinny"/> --> + <!-- <load module="mod_khomp"/> --> + <load module="mod_rtc"/> + <!-- <load module="mod_rtmp"/> --> + <load module="mod_verto"/> <!-- Applications --> <load module="mod_commands"/> <load module="mod_conference"/> + <!-- <load module="mod_curl"/> --> + <load module="mod_db"/> <load module="mod_dptools"/> <load module="mod_expr"/> - <!-- <load module="mod_fifo"/> --> - <!-- <load module="mod_voicemail"/> --> + <load module="mod_fifo"/> + <load module="mod_hash"/> + <!--<load module="mod_mongo"/> --> + <!--load module="mod_voicemail"/>--> <!--<load module="mod_directory"/>--> + <!--<load module="mod_distributor"/>--> <!--<load module="mod_lcr"/>--> - <!-- <load module="mod_limit"/>--> - <!-- <load module="mod_esf"/>--> - <!-- <load module="mod_fsv"/>--> - <!-- <load module="mod_cluechoo"/>--> - <!-- <load module="mod_valet_parking"/>--> + <!--<load module="mod_easyroute"/>--> + <load module="mod_esf"/> + <load module="mod_fsv"/> + <!--<load module="mod_cluechoo"/>--> + <!--load module="mod_valet_parking"/>--> + <!--<load module="mod_fsk"/>--> <!--<load module="mod_spy"/>--> + <!--<load module="mod_sms"/>--> + <!--<load module="mod_smpp"/>--> + <!--<load module="mod_random"/>--> + <load module="mod_httapi"/> + <!--<load module="mod_translate"/>--> <!-- SNOM Module --> <!--<load module="mod_snom"/>--> + <!-- This one only works on Linux for now --> + <!--<load module="mod_ladspa"/>--> + <!-- Dialplan Interfaces --> <!-- <load module="mod_dialplan_directory"/> --> <load module="mod_dialplan_xml"/> <load module="mod_dialplan_asterisk"/> <!-- Codec Interfaces --> - <!-- <load module="mod_spandsp"/> --> + <load module="mod_spandsp"/> <load module="mod_g723_1"/> <load module="mod_g729"/> <load module="mod_amr"/> - <load module="mod_ilbc"/> - <load module="mod_speex"/> - <load module="mod_h26x"/> - <load module="mod_siren"/> - <!--<load module="mod_celt"/>--> + <!--<load module="mod_ilbc"/>--> + <!--<load module="mod_h26x"/>--> + <load module="mod_b64"/> + <!--<load module="mod_siren"/>--> + <!--<load module="mod_isac"/>--> + <load module="mod_opus"/> + <load module="mod_opusfile"/> <!-- File Format Interfaces --> <load module="mod_sndfile"/> <load module="mod_native_file"/> + <load module="mod_png"/> + <!-- <load module="mod_shell_stream"/> --> <!--For icecast/mp3 streams/files--> <!--<load module="mod_shout"/>--> <!--For local streams (play all the files in a directory)--> <load module="mod_local_stream"/> <load module="mod_tone_stream"/> - <load module="mod_file_string"/> <!-- Timers --> + <!-- <load module="mod_timerfd"/> --> + <!-- <load module="mod_posix_timer"/> --> <!-- Languages --> - <load module="mod_spidermonkey"/> + <!-- <load module="mod_v8"/> --> <!-- <load module="mod_perl"/> --> <!-- <load module="mod_python"/> --> <!-- <load module="mod_java"/> --> - <!-- <load module="mod_lua"/> --> + <load module="mod_lua"/> <!-- ASR /TTS --> <!-- <load module="mod_flite"/> --> @@ -97,14 +128,18 @@ <!-- <load module="mod_cepstral"/> --> <!-- <load module="mod_tts_commandline"/> --> <!-- <load module="mod_rss"/> --> - + <!-- Say --> <load module="mod_say_en"/> - <load module="mod_say_ru"/> + <!-- <load module="mod_say_ru"/> --> <!-- <load module="mod_say_zh"/> --> + <!-- <load module="mod_say_sv"/> --> <!-- Third party modules --> <!--<load module="mod_nibblebill"/>--> + <!--<load module="mod_callcenter"/>--> + <!--<load module="mod_av"/--> </modules> </configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/mongo.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/mongo.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..5adf148e7d134ba594e77b68d47e933745142e58 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/mongo.conf.xml @@ -0,0 +1,15 @@ +<configuration name="mongo.conf"> + <settings> + <!-- + mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] + --> + <param name="connection-string" value="mongodb://127.0.0.1:27017/?connectTimeoutMS=10000"/> + +<!-- + <param name="map" value="function() { emit(this.a, 1); }"/> + <param name="reduce" value="function(key, values) { return Array.sum(values); }"/> + <param name="finalize" value="function(key, value) { return value;}"/> +--> + + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/msrp.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/msrp.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..65c2d619762a22c6ab6526c145800d42712a5bf5 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/msrp.conf.xml @@ -0,0 +1,12 @@ +<configuration name="msrp.conf" description="MSRP"> + <settings> + <param name="listen-ip" value="$${local_ip_v4}"/> + <!-- <param name="listen-port" value="2855"/> --> + <!-- <param name="listen-ssl-port" value="2856"/> --> + <!-- <param name="message-buffer-size" value="50"/> --> + <!-- <param name="debug" value="true"/> --> + <!-- <param name="secure-cert" value="$${certs_dir}/wss.pem"/> --> + <!-- <param name="secure-key" value="$${certs_dir}/wss.pem"/> --> + </settings> +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/nibblebill.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/nibblebill.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..043c985482d1ff16d08a8eae13bd849805052f2b --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/nibblebill.conf.xml @@ -0,0 +1,48 @@ +<configuration name="nibblebill.conf" description="Nibble Billing"> + <settings> + <!-- See http://wiki.freeswitch.org/wiki/Mod_nibblebill for help with these options --> + + <!-- Information for connecting to your database --> + <param name="odbc-dsn" value="bandwidth.com"/> + + <!-- The database table where your CASH column is located --> + <param name="db_table" value="accounts"/> + + <!-- The column name where we store the value of the account --> + <param name="db_column_cash" value="cash"/> + + <!-- The column name for the unique ID identifying the account --> + <param name="db_column_account" value="id"/> + + <!-- Custom SQL for loading current balance - overrides column names + channel vars are interpreted. + field nibble_balance is used for balance info + + <param name="custom_sql_lookup" value="SELECT cash AS nibble_balance FROM accounts WHERE account_code='${nibble_account}'"/> + --> + + <!-- Custom SQL for loading current balance - overrides column names + channel vars are interpreted. + nibble_increment is the amount to update + + <param name="custom_sql_save" value="UPDATE accounts SET cash=cash-${nibble_increment} WHERE account_code='${nibble_account}'"/> + --> + + + <!-- Default heartbeat interval. Set to 'off' for no heartbeat (i.e. bill only at end of call) --> + <param name="global_heartbeat" value="60"/> + + <!-- By default, warn a caller when their balance is at $5.00. You can set this to a negative number. --> + <param name="lowbal_amt" value="5"/> + <param name="lowbal_action" value="play ding"/> + + <!-- By default, terminate a caller when their balance hits $0.00. You can set this to a negative number. --> + <param name="nobal_amt" value="0"/> + <param name="nobal_action" value="hangup"/> + + <!-- If a call goes beyond a certain dollar amount, flag or terminate it --> + <param name="percall_max_amt" value="100"/> + <param name="percall_action" value="hangup"/> + + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/opal.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/opal.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..280b69304e224ac119f8771d86fc2c48c927cbc0 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/opal.conf.xml @@ -0,0 +1,21 @@ +<configuration name="opal.conf" description="Opal Endpoints"> + <settings> + <param name="trace-level" value="3"/> + <param name="context" value="default"/> + <param name="dialplan" value="XML"/> + <param name="dtmf-type" value="signal"/> <!-- string, signal, rfc2833, in-band --> + <param name="jitter-size" value="40,100"/> <!-- Jitter buffer min/max size, milliseconds --> + <!-- <param name="codec-prefs" value="PCMU,PCMA"/> --> <!-- list, and preferecnce order, of codecs --> + <!-- <param name="disable-transcoding" value="true"/> --> <!-- do not transcode, use source channel codec only --> + <param name="gk-address" value=""/> <!-- empty to disable, "*" to search LAN --> + <param name="gk-identifer" value=""/> <!-- optional name of gk --> + <param name="gk-interface" value="$${local_ip_v4}"/> <!-- optional listener interface name --> + </settings> + <listeners> + <listener name="default"> + <param name="h323-ip" value="$${local_ip_v4}"/> + <param name="h323-port" value="1720"/> + </listener> + </listeners> +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/opus.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/opus.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..8b9e64e1b7f07a2fbe8be07514e7258732c37ab1 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/opus.conf.xml @@ -0,0 +1,12 @@ +<configuration name="opus.conf"> + <settings> + <param name="use-vbr" value="1"/> + <param name="use-dtx" value="0"/> + <param name="complexity" value="5"/> + + <param name="packet-loss-percent" value="15"/> + <param name="keep-fec-enabled" value="1"/> + <param name="use-jb-lookahead" value="1"/> + <param name="advertise-useinbandfec" value="1"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/oreka.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/oreka.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..29eabd5c292cb5650fa8ec86e43cb40edeb40065 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/oreka.conf.xml @@ -0,0 +1,13 @@ +<!-- +To use this application simply install the open source Oreka recorder server (Orkaudio) and point +the sip-server-addr and sip-server-port to the oreka server +--> +<configuration name="oreka.conf" description="Oreka Recorder configuration"> + <settings> + <!-- Oreka/Orkaudio recording server address --> + <!-- <param name="sip-server-addr" value="192.168.1.200"/> --> + + <!-- Which port to send signaling to in the recording server --> + <!-- <param name="sip-server-port" value="6000"/> --> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/osp.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/osp.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..b320dbba88f7c7b5bc6921625a4b2fa56b11d3bc --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/osp.conf.xml @@ -0,0 +1,53 @@ +<configuration name="osp.conf" description="OSP Module Configuration"> + <settings> + <!-- Debug info flag --> + <param name="debug-info" value="disabled"/> + <!-- Log level for debug info --> + <param name="log-level" value="info"/> + <!-- Crypto hareware accelerate is disabled by default --> + <param name="crypto-hardware" value="disabled"/> + <!-- SIP settings --> + <param name="sip" module="sofia" profile="external"/> + <!-- H.323 settings --> + <!-- <param name="h323" module="h323" profile="external"/> --> + <!-- IAX settings --> + <!-- <param name="iax" module="iax" profile="external"/> --> + <!-- Skype settings --> + <!-- <param name="skype" module="skypopen" profile="external"/> --> + <!-- Default destination protocol --> + <param name="default-protocol" value="sip"/> + </settings> + + <profiles> + <!-- Default OSP profile --> + <profile name="default"> + <!-- Service point URLs, up to 8 allowed --> + <!-- <param name="service-point-url" value="http://osptestserver.transnexus.com:5045/osp"/> --> + <!-- <param name="service-point-url" value="https://127.0.0.1:1443/osp"/> --> + <param name="service-point-url" value="http://127.0.0.1:5045/osp"/> + + <!-- FreeSWITCH IP address for OSP --> + <param name="device-ip" value="127.0.0.1:5080"/> + + <!-- SSL lifetime in seconds --> + <param name="ssl-lifetime" value="300"/> + <!-- HTTP max connections, 1~1000 --> + <param name="http-max-connections" value="20"/> + <!-- HTTP persistence in seconds --> + <param name="http-persistence" value="60"/> + <!-- HTTP retry delay in seconds, 0~10 --> + <param name="http-retry-delay" value="0"/> + <!-- HTTP retry limit, 0~100 --> + <param name="http-retry-limit" value="2"/> + <!-- HTTP timeout in milliseconds, 200~60000 --> + <param name="http-timeout" value="10000"/> + + <!-- OSP work mode, direct or indirect --> + <param name="work-mode" value="direct"/> + <!-- OSP service type, voice or npquery --> + <param name="service-type" value="voice"/> + <!-- Max number of destinations --> + <param name="max-destinations" value="12"/> + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/perl.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/perl.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..0249119230785f7ba391da0e29c2cd328e717b55 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/perl.conf.xml @@ -0,0 +1,16 @@ +<configuration name="perl.conf" description="PERL Configuration"> + <settings> + <!--<param name="xml-handler-script" value="$${temp_dir}/xml.pl"/>--> + <!--<param name="xml-handler-bindings" value="dialplan"/>--> + + <!-- + The following options identifies a perl 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.pl"/--> + <!--param name="startup-script" value="startup_script_2.pl"/--> + + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/pocketsphinx.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/pocketsphinx.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..3bf7d5e5755a95c8c51171ac6035c62c11d80477 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/pocketsphinx.conf.xml @@ -0,0 +1,12 @@ +<configuration name="pocketsphinx.conf" description="PocketSphinx ASR Configuration"> + <settings> + <param name="threshold" value="400"/> + <param name="silence-hits" value="25"/> + <param name="listen-hits" value="1"/> + <param name="auto-reload" value="true"/> + <!--<param name="language-weight" value="1"/>--> + <!--<param name="narrowband-model" value="communicator"/>--> + <!--<param name="wideband-model" value="wsj1"/>--> + <!--<param name="dictionary" value="default.dic"/>--> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/portaudio.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/portaudio.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..a715571c6ff2bec8233fb73add3b85cc1633dd23 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/portaudio.conf.xml @@ -0,0 +1,221 @@ +<configuration name="portaudio.conf" description="Soundcard Endpoint"> + <settings> + <!-- indev, outdev, ringdev: + partial case sensitive string match on something in the name + or the device number prefixed with # eg "#1" (or blank for default) --> + + <!-- device to use for input --> + <param name="indev" value=""/> + <!-- device to use for output --> + <param name="outdev" value=""/> + + <!--device to use for inbound ring --> + <!--<param name="ringdev" value=""/>--> + <!--File to play as the ring sound --> + <!--<param name="ring-file" value="/sounds/ring.wav"/>--> + <!--Number of seconds to pause between rings --> + <!--<param name="ring-interval" value="5"/>--> + <!--Enable or Disable dual_streams--> + <!--<param name="dual-streams" value="true"/>--> + + <!--file to play when calls are on hold--> + <param name="hold-file" value="$${hold_music}"/> + <!--Timer to use for hold music (i'd leave this one commented)--> + <!--<param name="timer-name" value="soft"/>--> + + <!--Default dialplan and caller-id info --> + <param name="dialplan" value="XML"/> + <param name="cid-name" value="$${outbound_caller_name}"/> + <param name="cid-num" value="$${outbound_caller_id}"/> + + <!--audio sample rate and interval --> + <param name="sample-rate" value="48000"/> + <param name="codec-ms" value="20"/> + + <!--uncomment the following line to make mod_portaudio fail to load if it fails to find a device--> + <!-- <param name="unload-on-device-fail" value="true"/> --> + </settings> + + <!-- + mod_portaudio "streams" + + The portaudio streams were introduced to support multiple devices and multiple channels in mod_portaudio. + For example, if you have a sound card that supports multiple channels or have multiple sound cards and you + want to use them at the same time, you can do it configuring streams and endpoints here. + + A "stream" is just a logical container for some settings required by portaudio in order to stream audio and + define a friendly name for that configuration. Streams in itself do not do anything else than contain configs. + Once you have your streams defined you can proceed to define "endpoints". Go to the "<endpoints>" section + for more information on endpoints. + + You can use the command "pa shstreams" (portaudio shared streams) to show the configured streams. + --> + <streams> + <!-- + In this example we define 2 streams, one for a usb audio device and another for the usual Mac defaults + The name="" attribute in the <stream> tag must uniquely identify the stream configuration and can be + later used when creating endpoints in the "instream" and "outstream" parameters of the endpoint. + --> + + <!-- This sample "usb1" configuration was tested with a USB Griffin iMic device --> + <stream name="usb1"> + <!-- + Which device to use for input in this stream + The value for this parameter must be either in the form '#devno', + for example '#2' for device number 2, or 'device-name', like 'iMic USB audio system' + The output of command "pa devlist" will show you device names and numbers as enumerated + by portaudio. + --> + <param name="indev" value="#2" /> + + <!-- + Same as the indev but for output. In this case the device is capable of input and output + Some devices are capable of input only or output only (see the default example) + --> + <param name="outdev" value="#2" /> + + <!-- The sample rate to use for this stream --> + <param name="sample-rate" value="48000" /> + + <!-- + Size of the packets in milliseconds. The smaller the number the less latency you'll have + The minimum value is 10ms + --> + <param name="codec-ms" value="10" /> + + <!-- + How many channels to open for this stream. + If you're device is stereo, you can choose 2 here. However, bear in mind that then + your left and right channels will be separated and when creating endpoints you will have + to either choose the left or right channel. This may or may not be what you want. This separation + means that you can have 2 separate FreeSWITCH calls, listening to one of them in your left channel + and the other in the right chanel. + --> + <param name="channels" value="2" /> + </stream> + + <!-- This default stream was tested using the default Macbook Pro input/output devices --> + <stream name="default"> + <!-- The default system input device --> + <param name="indev" value="#0" /> + <!-- The default system output device --> + <param name="outdev" value="#1" /> + <!-- CD quality sampling rate ftw --> + <param name="sample-rate" value="48000" /> + <!-- Low latency --> + <param name="codec-ms" value="10" /> + <!-- Choosing 1 channel allows to hear in both left-right channel when using a headset --> + <param name="channels" value="1" /> + </stream> + </streams> + + <!-- + mod_portaudio "endpoints" + + Endpoints is a way to define the input and output that a given portaudio channel will use. + There is a lot of flexibility. You can create endpoints which are "send-only", which means + audio will be read from FreeSWITCH and sent down to the provided stream, but no audio will + be read from that stream and only silence provided back to FreeSWITCH. + + send-only endpoint: + (FS CORE) ->-> audio ->-> sound-card-x + + You can also create a read-only endpoint. + + read-only-endpoint: + (FS CORE) <-<- audio <-<- sound-card-x + + And of course you can create a bidirectional endpoint: + bidirectional-endpoint: + (FS CORE) <-> audio <-> sound-card-x + + You can also define a stream which uses only the left or only the right channel of a given device stream. + This means you can have 2 SIP calls connected to the same device haring one call in your left ear and + the other call to your right ear :-) + + The name="parameter" of the endpoint allows you to use it in the FreeSWITCH dial plan to dial, ie: + + <action application="bridge" data="portaudio/endpoint/usb1out-left" /> + + You can use the command "pa endpoints" to show the configured endpoints. + --> + <endpoints> + + <!-- + An endpoint is a handle name to refer to a configuration that determines where to read media from + and write media to. The endpoint can use any input/output stream combination for that purpose as + long as the streams match the sampling rate and codec-ms (see <streams> XML tag). + You can also omit the instream or the outstream parameter (but obviously not both). + --> + + <!-- + Configuration for a "default" bidirectional endpoint that uses the default stream defined previously in + the <streams> section. + --> + <endpoint name="default"> + <!-- + The instream, outstream is the name of the stream and channel to use. The stream + name is the same you configured in the <streams> section. This parameters follow + the syntax <stream-name>:<channel index>. You can omit either the outstream + or the instream, but not both! The channel index is zero-based and must be consistent + with the number of channels available for that stream (as configured in the <stream> section). + You cannot use index 1 if you chose channels=1 in the stream configuration. + --> + <param name="instream" value="default:0" /> + <param name="outstream" value="default:0" /> + </endpoint> + + <!-- + This endpoint uses the USB stream defined previously in the <streams> section and + is 'send-only' or 'output-only' and uses the channel index 0 (left channel in a stereo device) + --> + <endpoint name="usb1out-left"> + <param name="outstream" value="usb1:0" /> + </endpoint> + + <!-- + This endpoint uses the USB stream defined previously in the <streams> section and + is 'send-only' or 'output-only' and uses the channel index 1 (right channel in a stereo device) + --> + <endpoint name="usb1out-right"> + <param name="outstream" value="usb1:1" /> + </endpoint> + + <!-- + This endpoint uses the USB stream defined previously in the <streams> section and + is 'receive-only' or 'input-only' and uses the channel index 0 (left channel in a stereo device) + --> + <endpoint name="usb1in-left"> + <param name="instream" value="usb1:0" /> + </endpoint> + + <!-- + This endpoint uses the USB stream defined previously in the <streams> section and + is 'receive-only' or 'input-only' and uses the channel index 1 (right channel in a stereo device) + --> + <endpoint name="usb1in-right"> + <param name="instream" value="usb1:1" /> + </endpoint> + + <!-- + This endpoint uses the USB stream defined previously in the <streams> section and + is 'bidirectional' or 'send-receive' and uses the channel index 0 (left channel in a stereo device) + --> + <endpoint name="usb1-left"> + <param name="instream" value="usb1:0" /> + <param name="outstream" value="usb1:0" /> + </endpoint> + + <!-- + This endpoint uses the USB stream defined previously in the <streams> section and + is 'bidirectional' or 'send-receive' and uses the channel index 1 (right channel in a stereo device) + --> + <endpoint name="usb1-right"> + <param name="instream" value="usb1:1" /> + <param name="outstream" value="usb1:1" /> + </endpoint> + + </endpoints> + +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/pre_load_modules.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/pre_load_modules.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..620a6c1cd93b51e9b0933d197c3eadb5d2a0138e --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/pre_load_modules.conf.xml @@ -0,0 +1,7 @@ +<configuration name="pre_load_modules.conf" description="Modules"> + <modules> + <!-- Databases --> + <!-- <load module="mod_mariadb"/> --> + <load module="mod_pgsql"/> + </modules> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/presence_map.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/presence_map.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..8a9d1dde5a144cdbfe3a9f38399a377feed5112a --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/presence_map.conf.xml @@ -0,0 +1,7 @@ +<configuration name="presence_map.conf" description="PRESENCE MAP"> + <domains> + <domain name="$${domain}"> + <exten regex="3\d+" proto="conf"/> + </domain> + </domains> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/python.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/python.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..d3a8fdc7558625a0a7ab456b644f56379324a479 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/python.conf.xml @@ -0,0 +1,16 @@ +<configuration name="python.conf" description="PYTHON Configuration"> + <settings> + <!--<param name="xml-handler-script" value="dp"/>--> + <!--<param name="xml-handler-bindings" value="dialplan"/>--> + + <!-- + The following options identifies a py module 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"/>--> + <!--<param name="startup-script" value="startup_script_2"/>--> + + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/redis.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/redis.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..1a1f474036e6abcbd751f8d692b11746c1e3ac29 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/redis.conf.xml @@ -0,0 +1,7 @@ +<configuration name="redis.conf" description="mod_redis Configuration"> + <settings> + <param name="host" value="localhost"/> + <param name="port" value="6379"/> + <param name="timeout" value="10000"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/rss.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/rss.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..f8c4f6d2b4f62f083d9c58ec0b7c2da0c91fa185 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/rss.conf.xml @@ -0,0 +1,7 @@ +<configuration name="rss.conf" description="RSS Parser"> + <feeds> + <!-- Just download the files to wherever and refer to them here --> + <!-- <feed name="Slash Dot">/home/rss/rss.rss</feed> --> + <!-- <feed name="News Forge">/home/rss/newsforge.rss</feed> --> + </feeds> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/rtmp.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/rtmp.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5d278810e999b8b2e8f226352627d8784c4094e --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/rtmp.conf.xml @@ -0,0 +1,17 @@ +<configuration name="rtmp.conf" description="RTMP Endpoint"> + <profiles> + <profile name="default"> + <settings> + <param name="bind-address" value="0.0.0.0:1935" /> + <param name="context" value="public" /> + <param name="dialplan" value="XML" /> + <!-- If this is set to true, no unauthenticated inbound calls will be allowed --> + <param name="auth-calls" value="true" /> + <!-- How much time should the clients buffer the media stream (miliseconds) --> + <param name="buffer-len" value="50" /> + <!-- Sets the maximum size of outbound RTMP chunks --> + <param name="chunksize" value="512" /> + </settings> + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sangoma_codec.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sangoma_codec.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..eed9d673e163b04b7a1f9e7e26ac907ca480a373 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sangoma_codec.conf.xml @@ -0,0 +1,37 @@ +<configuration name="sangoma_codec.conf" description="Sangoma Codec Configuration"> + + <settings> + <!-- + Comma separated list of codecs to register with FreeSWITCH, + by default (if this parameter is not set) all available codecs are registered. + Valid codec values are: PCMU,PCMA,G729,G726-32,G722,GSM,G723,AMR,G7221,iLBC + If this parameter is not specified only G729 will be registered + <param name="register" value="all"/> + --> + + <!-- + List of codecs to not register with FreeSWITCH, by default this is empty, + but you may want to not load PCMU and PCMA or may be others to not use your + resources in codecs that are done well and fast in software. + <param name="noregister" value="PCMU,PCMA"/> + --> + + <!-- + Transcoding SOAP server URL. If you are installing the soap server (sngtc_server) + in the same box where FreeSWITCH, do not use this value, the default URL + that is hard-coded will work out of the box for local installations. + If you modify this value, you must configure your SOAP server (/etc/sngtc/sngtc_server.conf.xml) + to listen for HTTP requests on the same IP/port that you specify here. + <param name="soapserver" value="http://192.168.1.100:8080"/> + --> + + <!-- + RTP IP to use + By default, this module asks FreeSWITCH for the local ip address. However if you want to use a specific + IP address you can set it here. + <param name="rtpip" value="192.168.1.1"/> + --> + </settings> + +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/shout.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/shout.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f381e6278f5653c16260b2d27bd0e423fe787fa --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/shout.conf.xml @@ -0,0 +1,8 @@ +<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> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/skinny.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/skinny.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a878fcd7132d0a0b2cbf828fe9210a7239588f9 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/skinny.conf.xml @@ -0,0 +1,6 @@ +<configuration name="skinny.conf" description="Skinny Endpoints"> + <profiles> + <X-PRE-PROCESS cmd="include" data="../skinny_profiles/*.xml"/> + </profiles> +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/smpp.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/smpp.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5b7c0d6fc7ede6714737c1d2884fb187b42d55a --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/smpp.conf.xml @@ -0,0 +1,15 @@ +<configuration name="smpp.conf" description="SMPP client and server Gateway"> + <gateways> + <gateway name="example.com"> + <params> + <param name="host" value="example.com"/> + <param name="port" value="2775"/> + <param name="debug" value="1"/> + <param name="profile" value="default"/> + <param name="system_id" value="username"/> + <param name="password" value="password"/> + <param name="system_type" value="remote_smpp"/> + </params> + </gateway> + </gateways> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sms_flowroute.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sms_flowroute.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..43d1c3eb06f3a392ea02c29167ab02e91356edd0 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sms_flowroute.conf.xml @@ -0,0 +1,13 @@ +<configuration name="sms_flowroute.conf" description="SMS_FLOWROUTE send configs"> + <profiles> + <profile name="default"> + <params> + <param name="host" value="https://api.flowroute.com/v2/messages"/> + <param name="debug" value="1"/> + <param name="port" value="8090"/> + <param name="access-key" value="ACCESS-KEY"/> + <param name="secret-key" value="SECRET-KEY"/> + </params> + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sndfile.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sndfile.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..d9e0cff75d83b88d8709185edd61413221b1e1ad --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sndfile.conf.xml @@ -0,0 +1,9 @@ +<configuration name="sndfile.conf"> + <settings> + <!-- Allow only these file extensions. Default: allow all sndfile provided extensions + FS custom extra --> + <!-- + <param name="allowed-extensions" value="wav,raw,r8,r16"/> + --> + </settings> +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sofia.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sofia.conf.xml index 24252d08ce3dcc83ff34959833068593501a9e3e..629a0019fa222df473e6e71bc1be78d2e0907296 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sofia.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/sofia.conf.xml @@ -2,8 +2,19 @@ <global_settings> <param name="log-level" value="0"/> + <!-- <param name="abort-on-empty-external-ip" value="true"/> --> <!-- <param name="auto-restart" value="false"/> --> <param name="debug-presence" value="0"/> + <!-- <param name="capture-server" value="udp:homer.domain.com:5060"/> --> + + <!-- + the new format for HEPv2/v3 and capture ID + + protocol:host:port;hep=2;capture_id=200; + + --> + + <!-- <param name="capture-server" value="udp:homer.domain.com:5060;hep=3;capture_id=100"/> --> </global_settings> <!-- diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/spandsp.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/spandsp.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..2471ca52ceca16ade6b5ae406756517ce38aacf0 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/spandsp.conf.xml @@ -0,0 +1,118 @@ +<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> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/spidermonkey.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/spidermonkey.conf.xml deleted file mode 100644 index dbd54a77114860c65266f6d130ebc3d80a9d7273..0000000000000000000000000000000000000000 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/spidermonkey.conf.xml +++ /dev/null @@ -1,9 +0,0 @@ -<configuration name="spidermonkey.conf" description="Spider Monkey JavaScript Plug-Ins"> - <modules> - <load module="mod_spidermonkey_teletone"/> - <load module="mod_spidermonkey_core_db"/> - <load module="mod_spidermonkey_socket"/> - <load module="mod_spidermonkey_curl"/> - <!--<load module="mod_spidermonkey_odbc"/>--> - </modules> -</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/switch.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/switch.conf.xml index 03bc993372c51099a8e6be473473f510b82d7e5c..1ab77b45c65e16503c040e0cecd9573eb1155c47 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/switch.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/switch.conf.xml @@ -13,72 +13,169 @@ <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> - + </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 --> + <!-- Colorize the Console --> <param name="colorize-console" value="true"/> - <!--Most channels to allow at once --> + + <!--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"/> - <!-- 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"/>--> + + <!-- 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"/> - - Donot 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 - ################################### - - --> + 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 dump every detail about a channel on every event --> - <!--<param name="verbose-channel-events" value="no"/>--> - <!--RTP port range --> - <!--<param name="rtp-start-port" value="16384"/>--> - <!--<param name="rtp-end-port" value="32768"/>--> + + <!-- 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="24576"/> + + <!-- 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="true"/> + + <!-- + Store encryption keys for secure media in channel variables and call CDRs. Default: false. + WARNING: If true, anyone with CDR access can decrypt secure media! + --> + <!-- <param name="rtp-retain-crypto-keys" value="true"/> --> + + <!-- <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> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/syslog.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/syslog.conf.xml index 636a12c8c1c8ce1d6db3cd3eb5bdd093f4c0076b..7a06e8f3b0b4ee645f1e6b873b0862b147a4d029 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/syslog.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/syslog.conf.xml @@ -12,7 +12,7 @@ <param name="facility" value="user"/> <param name="ident" value="freeswitch"/> <param name="loglevel" value="warning"/> - <!-- Uncomment the following line to log uuids in syslogs (when applicable) --> - <!-- <param name="uuid" value="true"/> --> + <!-- log uuids in syslogs --> + <param name="uuid" value="true"/> </settings> </configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/timezones.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/timezones.conf.xml index 85c805ff25a0c7e9809848a4706d0940710ab56f..50bd7f376027f9e767310b88db207fe234bc3e7b 100644 --- a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/timezones.conf.xml +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/timezones.conf.xml @@ -13,19 +13,20 @@ <zone name="Africa/Blantyre" value="CAT-2" /> <zone name="Africa/Brazzaville" value="WAT-1" /> <zone name="Africa/Bujumbura" value="CAT-2" /> - <zone name="Africa/Cairo" value="EEST" /> - <zone name="Africa/Casablanca" value="WET0" /> + <zone name="Africa/Cairo" value="EET-2" /> + <zone name="Africa/Casablanca" value="WET0WEST,M3.5.0,M10.5.0/3" /> <zone name="Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Africa/Conakry" value="GMT0" /> <zone name="Africa/Dakar" value="GMT0" /> <zone name="Africa/Dar_es_Salaam" value="EAT-3" /> <zone name="Africa/Djibouti" value="EAT-3" /> <zone name="Africa/Douala" value="WAT-1" /> - <zone name="Africa/El_Aaiun" value="WET0" /> + <zone name="Africa/El_Aaiun" value="WET0WEST,M3.5.0,M10.5.0/3" /> <zone name="Africa/Freetown" value="GMT0" /> <zone name="Africa/Gaborone" value="CAT-2" /> <zone name="Africa/Harare" value="CAT-2" /> <zone name="Africa/Johannesburg" value="SAST-2" /> + <zone name="Africa/Juba" value="EAT-3" /> <zone name="Africa/Kampala" value="EAT-3" /> <zone name="Africa/Khartoum" value="EAT-3" /> <zone name="Africa/Kigali" value="CAT-2" /> @@ -51,31 +52,33 @@ <zone name="Africa/Sao_Tome" value="GMT0" /> <zone name="Africa/Timbuktu" value="GMT0" /> <zone name="Africa/Tripoli" value="EET-2" /> - <zone name="Africa/Tunis" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="Africa/Tunis" value="CET-1" /> <zone name="Africa/Windhoek" value="WAT-1WAST,M9.1.0,M4.1.0" /> - <zone name="America/Adak" value="HAST10HADT,M3.2.0,M11.1.0" /> + <zone name="America/Adak" value="HST10HDT,M3.2.0,M11.1.0" /> <zone name="America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" /> <zone name="America/Anguilla" value="AST4" /> <zone name="America/Antigua" value="AST4" /> <zone name="America/Araguaina" value="BRT3" /> - <zone name="America/Argentina/Buenos_Aires" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/Catamarca" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/ComodRivadavia" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/Cordoba" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/Jujuy" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/La_Rioja" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/Mendoza" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/Rio_Gallegos" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/San_Juan" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> + <zone name="America/Argentina/Buenos_Aires" value="ART3" /> + <zone name="America/Argentina/Catamarca" value="ART3" /> + <zone name="America/Argentina/ComodRivadavia" value="ART3" /> + <zone name="America/Argentina/Cordoba" value="ART3" /> + <zone name="America/Argentina/Jujuy" value="ART3" /> + <zone name="America/Argentina/La_Rioja" value="ART3" /> + <zone name="America/Argentina/Mendoza" value="ART3" /> + <zone name="America/Argentina/Rio_Gallegos" value="ART3" /> + <zone name="America/Argentina/Salta" value="ART3" /> + <zone name="America/Argentina/San_Juan" value="ART3" /> <zone name="America/Argentina/San_Luis" value="ART3" /> - <zone name="America/Argentina/Tucuman" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Argentina/Ushuaia" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> + <zone name="America/Argentina/Tucuman" value="ART3" /> + <zone name="America/Argentina/Ushuaia" value="ART3" /> <zone name="America/Aruba" value="AST4" /> - <zone name="America/Asuncion" value="PYT4PYST,M10.3.0/0,M3.2.0/0" /> + <zone name="America/Asuncion" value="PYT4PYST,M10.1.0/0,M3.4.0/0" /> <zone name="America/Atikokan" value="EST5" /> - <zone name="America/Atka" value="HAST10HADT,M3.2.0,M11.1.0" /> + <zone name="America/Atka" value="HST10HDT,M3.2.0,M11.1.0" /> <zone name="America/Bahia" value="BRT3" /> + <zone name="America/Bahia_Banderas" value="CST6CDT,M4.1.0,M10.5.0" /> <zone name="America/Barbados" value="AST4" /> <zone name="America/Belem" value="BRT3" /> <zone name="America/Belize" value="CST6" /> @@ -83,20 +86,21 @@ <zone name="America/Boa_Vista" value="AMT4" /> <zone name="America/Bogota" value="COT5" /> <zone name="America/Boise" value="MST7MDT,M3.2.0,M11.1.0" /> - <zone name="America/Buenos_Aires" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> + <zone name="America/Buenos_Aires" value="ART3" /> <zone name="America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" /> - <zone name="America/Campo_Grande" value="AMT4AMST,M10.2.0/0,M2.3.0/0" /> - <zone name="America/Cancun" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="America/Campo_Grande" value="AMT4AMST,M10.3.0/0,M2.3.0/0" /> + <zone name="America/Cancun" value="EST5" /> <zone name="America/Caracas" value="VET4:30" /> - <zone name="America/Catamarca" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> + <zone name="America/Catamarca" value="ART3" /> <zone name="America/Cayenne" value="GFT3" /> - <zone name="America/Cayman" value="EST5" /> + <zone name="America/Cayman" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Chihuahua" value="MST7MDT,M4.1.0,M10.5.0" /> <zone name="America/Coral_Harbour" value="EST5" /> - <zone name="America/Cordoba" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> + <zone name="America/Cordoba" value="ART3" /> <zone name="America/Costa_Rica" value="CST6" /> - <zone name="America/Cuiaba" value="AMT4AMST,M10.2.0/0,M2.3.0/0" /> + <zone name="America/Creston" value="MST7" /> + <zone name="America/Cuiaba" value="AMT4AMST,M10.3.0/0,M2.3.0/0" /> <zone name="America/Curacao" value="AST4" /> <zone name="America/Danmarkshavn" value="GMT0" /> <zone name="America/Dawson" value="PST8PDT,M3.2.0,M11.1.0" /> @@ -107,56 +111,61 @@ <zone name="America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" /> <zone name="America/Eirunepe" value="ACT5" /> <zone name="America/El_Salvador" value="CST6" /> - <zone name="America/Ensenada" value="PST8PDT,M4.1.0,M10.5.0" /> - <zone name="America/Fortaleza" value="BRT3" /> + <zone name="America/Ensenada" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="America/Fort_Nelson" value="MST7" /> <zone name="America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="America/Fortaleza" value="BRT3" /> <zone name="America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" /> <zone name="America/Godthab" value="WGST" /> - <zone name="America/Goose_Bay" value="AST4ADT,M3.2.0/0:01,M11.1.0/0:01" /> - <zone name="America/Grand_Turk" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="America/Goose_Bay" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="America/Grand_Turk" value="AST4" /> <zone name="America/Grenada" value="AST4" /> <zone name="America/Guadeloupe" value="AST4" /> <zone name="America/Guatemala" value="CST6" /> <zone name="America/Guayaquil" value="ECT5" /> <zone name="America/Guyana" value="GYT4" /> <zone name="America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" /> - <zone name="America/Havana" value="CST5CDT,M3.3.0/0,M10.5.0/1" /> + <zone name="America/Havana" value="CST5CDT,M3.2.0/0,M11.1.0/1" /> <zone name="America/Hermosillo" value="MST7" /> <zone name="America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" /> - <zone name="America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" /> <zone name="America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Jamaica" value="EST5" /> - <zone name="America/Jujuy" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> + <zone name="America/Jujuy" value="ART3" /> <zone name="America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" /> <zone name="America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="America/Kralendijk" value="AST4" /> <zone name="America/La_Paz" value="BOT4" /> <zone name="America/Lima" value="PET5" /> <zone name="America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" /> <zone name="America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="America/Lower_Princes" value="AST4" /> <zone name="America/Maceio" value="BRT3" /> <zone name="America/Managua" value="CST6" /> <zone name="America/Manaus" value="AMT4" /> <zone name="America/Marigot" value="AST4" /> <zone name="America/Martinique" value="AST4" /> + <zone name="America/Matamoros" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Mazatlan" value="MST7MDT,M4.1.0,M10.5.0" /> - <zone name="America/Mendoza" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> + <zone name="America/Mendoza" value="ART3" /> <zone name="America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Merida" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="America/Metlakatla" value="PST8" /> <zone name="America/Mexico_City" value="CST6CDT,M4.1.0,M10.5.0" /> <zone name="America/Miquelon" value="PMST3PMDT,M3.2.0,M11.1.0" /> <zone name="America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" /> <zone name="America/Monterrey" value="CST6CDT,M4.1.0,M10.5.0" /> - <zone name="America/Montevideo" value="UYT3UYST,M10.1.0,M3.2.0" /> + <zone name="America/Montevideo" value="UYT3" /> <zone name="America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Montserrat" value="AST4" /> <zone name="America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" /> @@ -164,31 +173,36 @@ <zone name="America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" /> <zone name="America/Noronha" value="FNT2" /> + <zone name="America/North_Dakota/Beulah" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="America/Ojinaga" value="MST7MDT,M3.2.0,M11.1.0" /> <zone name="America/Panama" value="EST5" /> <zone name="America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Paramaribo" value="SRT3" /> <zone name="America/Phoenix" value="MST7" /> - <zone name="America/Port-au-Prince" value="EST5" /> - <zone name="America/Porto_Acre" value="ACT5" /> + <zone name="America/Port-au-Prince" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Port_of_Spain" value="AST4" /> + <zone name="America/Porto_Acre" value="ACT5" /> <zone name="America/Porto_Velho" value="AMT4" /> <zone name="America/Puerto_Rico" value="AST4" /> <zone name="America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Recife" value="BRT3" /> <zone name="America/Regina" value="CST6" /> - <zone name="America/Resolute" value="EST5" /> + <zone name="America/Resolute" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="America/Rio_Branco" value="ACT5" /> - <zone name="America/Rosario" value="ART3ARST,M10.1.0/0,M3.3.0/0" /> - <zone name="America/Santiago" value="CLST" /> + <zone name="America/Rosario" value="ART3" /> + <zone name="America/Santa_Isabel" value="PST8PDT,M4.1.0,M10.5.0" /> + <zone name="America/Santarem" value="BRT3" /> + <zone name="America/Santiago" value="CLT3" /> <zone name="America/Santo_Domingo" value="AST4" /> - <zone name="America/Sao_Paulo" value="BRT3BRST,M10.2.0/0,M2.3.0/0" /> + <zone name="America/Sao_Paulo" value="BRT3BRST,M10.3.0/0,M2.3.0/0" /> <zone name="America/Scoresbysund" value="EGT1EGST,M3.5.0/0,M10.5.0/1" /> <zone name="America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="America/Sitka" value="AKST9AKDT,M3.2.0,M11.1.0" /> <zone name="America/St_Barthelemy" value="AST4" /> - <zone name="America/St_Johns" value="NST3:30NDT,M3.2.0/0:01,M11.1.0/0:01" /> + <zone name="America/St_Johns" value="NST3:30NDT,M3.2.0,M11.1.0" /> <zone name="America/St_Kitts" value="AST4" /> <zone name="America/St_Lucia" value="AST4" /> <zone name="America/St_Thomas" value="AST4" /> @@ -197,7 +211,7 @@ <zone name="America/Tegucigalpa" value="CST6" /> <zone name="America/Thule" value="AST4ADT,M3.2.0,M11.1.0" /> <zone name="America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" /> - <zone name="America/Tijuana" value="PST8PDT,M4.1.0,M10.5.0" /> + <zone name="America/Tijuana" value="PST8PDT,M3.2.0,M11.1.0" /> <zone name="America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="America/Tortola" value="AST4" /> <zone name="America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" /> @@ -207,23 +221,25 @@ <zone name="America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" /> <zone name="America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" /> - <zone name="Antarctica/Casey" value="WST-8" /> + <zone name="Antarctica/Casey" value="AWST-8" /> <zone name="Antarctica/Davis" value="DAVT-7" /> <zone name="Antarctica/DumontDUrville" value="DDUT-10" /> - <zone name="Antarctica/Mawson" value="MAWT-6" /> + <zone name="Antarctica/Macquarie" value="MIST-11" /> + <zone name="Antarctica/Mawson" value="MAWT-5" /> <zone name="Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> - <zone name="Antarctica/Palmer" value="CLST" /> + <zone name="Antarctica/Palmer" value="CLT3" /> <zone name="Antarctica/Rothera" value="ROTT3" /> <zone name="Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> <zone name="Antarctica/Syowa" value="SYOT-3" /> + <zone name="Antarctica/Troll" value="UTC0CEST-2,M3.5.0/1,M10.5.0/3" /> <zone name="Antarctica/Vostok" value="VOST-6" /> <zone name="Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Asia/Aden" value="AST-3" /> <zone name="Asia/Almaty" value="ALMT-6" /> - <zone name="Asia/Amman" value="EET-2EEST,M3.5.4/0,M10.5.5/1" /> - <zone name="Asia/Anadyr" value="ANAT-12ANAST,M3.5.0,M10.5.0/3" /> + <zone name="Asia/Amman" value="EEST" /> + <zone name="Asia/Anadyr" value="ANAT-12" /> <zone name="Asia/Aqtau" value="AQTT-5" /> <zone name="Asia/Aqtobe" value="AQTT-5" /> <zone name="Asia/Ashgabat" value="TMT-5" /> @@ -236,62 +252,65 @@ <zone name="Asia/Bishkek" value="KGT-6" /> <zone name="Asia/Brunei" value="BNT-8" /> <zone name="Asia/Calcutta" value="IST-5:30" /> - <zone name="Asia/Choibalsan" value="CHOT-9" /> + <zone name="Asia/Chita" value="IRKT-8" /> + <zone name="Asia/Choibalsan" value="CHOT-8CHOST,M3.5.6,M9.5.6/0" /> <zone name="Asia/Chongqing" value="CST-8" /> <zone name="Asia/Chungking" value="CST-8" /> <zone name="Asia/Colombo" value="IST-5:30" /> <zone name="Asia/Dacca" value="BDT-6" /> - <zone name="Asia/Damascus" value="EET-2EEST,M4.1.5/0,J274/0" /> + <zone name="Asia/Damascus" value="EET-2EEST,M3.5.5/0,M10.5.5/0" /> <zone name="Asia/Dhaka" value="BDT-6" /> <zone name="Asia/Dili" value="TLT-9" /> <zone name="Asia/Dubai" value="GST-4" /> <zone name="Asia/Dushanbe" value="TJT-5" /> - <zone name="Asia/Gaza" value="EET-2EEST,J91/0,M9.2.4" /> + <zone name="Asia/Gaza" value="EEST" /> <zone name="Asia/Harbin" value="CST-8" /> + <zone name="Asia/Hebron" value="EEST" /> <zone name="Asia/Ho_Chi_Minh" value="ICT-7" /> <zone name="Asia/Hong_Kong" value="HKT-8" /> - <zone name="Asia/Hovd" value="HOVT-7" /> - <zone name="Asia/Irkutsk" value="IRKT-8IRKST,M3.5.0,M10.5.0/3" /> + <zone name="Asia/Hovd" value="HOVT-7HOVST,M3.5.6,M9.5.6/0" /> + <zone name="Asia/Irkutsk" value="IRKT-8" /> <zone name="Asia/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> - <zone name="Asia/Jakarta" value="WIT-7" /> - <zone name="Asia/Jayapura" value="EIT-9" /> + <zone name="Asia/Jakarta" value="WIB-7" /> + <zone name="Asia/Jayapura" value="WIT-9" /> <zone name="Asia/Jerusalem" value="IDDT" /> <zone name="Asia/Kabul" value="AFT-4:30" /> - <zone name="Asia/Kamchatka" value="PETT-12PETST,M3.5.0,M10.5.0/3" /> + <zone name="Asia/Kamchatka" value="PETT-12" /> <zone name="Asia/Karachi" value="PKT-5" /> - <zone name="Asia/Kashgar" value="CST-8" /> + <zone name="Asia/Kashgar" value="XJT-6" /> + <zone name="Asia/Kathmandu" value="NPT-5:45" /> <zone name="Asia/Katmandu" value="NPT-5:45" /> + <zone name="Asia/Khandyga" value="YAKT-9" /> <zone name="Asia/Kolkata" value="IST-5:30" /> - <zone name="Asia/Krasnoyarsk" value="KRAT-7KRAST,M3.5.0,M10.5.0/3" /> + <zone name="Asia/Krasnoyarsk" value="KRAT-7" /> <zone name="Asia/Kuala_Lumpur" value="MYT-8" /> <zone name="Asia/Kuching" value="MYT-8" /> <zone name="Asia/Kuwait" value="AST-3" /> <zone name="Asia/Macao" value="CST-8" /> <zone name="Asia/Macau" value="CST-8" /> - <zone name="Asia/Magadan" value="MAGT-11MAGST,M3.5.0,M10.5.0/3" /> - <zone name="Asia/Makassar" value="CIT-8" /> + <zone name="Asia/Magadan" value="MAGT-10" /> + <zone name="Asia/Makassar" value="WITA-8" /> <zone name="Asia/Manila" value="PHT-8" /> <zone name="Asia/Muscat" value="GST-4" /> <zone name="Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> - <zone name="Asia/Novosibirsk" value="NOVT-6NOVST,M3.5.0,M10.5.0/3" /> - <zone name="Asia/Omsk" value="OMST-6OMSST,M3.5.0,M10.5.0/3" /> + <zone name="Asia/Novokuznetsk" value="KRAT-7" /> + <zone name="Asia/Novosibirsk" value="NOVT-6" /> + <zone name="Asia/Omsk" value="OMST-6" /> <zone name="Asia/Oral" value="ORAT-5" /> <zone name="Asia/Phnom_Penh" value="ICT-7" /> - <zone name="Asia/Pontianak" value="WIT-7" /> - <zone name="Asia/Pyongyang" value="KST-9" /> + <zone name="Asia/Pontianak" value="WIB-7" /> + <zone name="Asia/Pyongyang" value="KST-8:30" /> <zone name="Asia/Qatar" value="AST-3" /> <zone name="Asia/Qyzylorda" value="QYZT-6" /> <zone name="Asia/Rangoon" value="MMT-6:30" /> <zone name="Asia/Riyadh" value="AST-3" /> - <zone name="Asia/Riyadh87" value="zzz-3:07:04" /> - <zone name="Asia/Riyadh88" value="zzz-3:07:04" /> - <zone name="Asia/Riyadh89" value="zzz-3:07:04" /> <zone name="Asia/Saigon" value="ICT-7" /> - <zone name="Asia/Sakhalin" value="SAKT-10SAKST,M3.5.0,M10.5.0/3" /> + <zone name="Asia/Sakhalin" value="SAKT-10" /> <zone name="Asia/Samarkand" value="UZT-5" /> <zone name="Asia/Seoul" value="KST-9" /> <zone name="Asia/Shanghai" value="CST-8" /> <zone name="Asia/Singapore" value="SGT-8" /> + <zone name="Asia/Srednekolymsk" value="SRET-11" /> <zone name="Asia/Taipei" value="CST-8" /> <zone name="Asia/Tashkent" value="UZT-5" /> <zone name="Asia/Tbilisi" value="GET-4" /> @@ -300,15 +319,16 @@ <zone name="Asia/Thimbu" value="BTT-6" /> <zone name="Asia/Thimphu" value="BTT-6" /> <zone name="Asia/Tokyo" value="JST-9" /> - <zone name="Asia/Ujung_Pandang" value="CIT-8" /> - <zone name="Asia/Ulaanbaatar" value="ULAT-8" /> - <zone name="Asia/Ulan_Bator" value="ULAT-8" /> - <zone name="Asia/Urumqi" value="CST-8" /> + <zone name="Asia/Ujung_Pandang" value="WITA-8" /> + <zone name="Asia/Ulaanbaatar" value="ULAT-8ULAST,M3.5.6,M9.5.6/0" /> + <zone name="Asia/Ulan_Bator" value="ULAT-8ULAST,M3.5.6,M9.5.6/0" /> + <zone name="Asia/Urumqi" value="XJT-6" /> + <zone name="Asia/Ust-Nera" value="VLAT-10" /> <zone name="Asia/Vientiane" value="ICT-7" /> - <zone name="Asia/Vladivostok" value="VLAT-10VLAST,M3.5.0,M10.5.0/3" /> - <zone name="Asia/Yakutsk" value="YAKT-9YAKST,M3.5.0,M10.5.0/3" /> - <zone name="Asia/Yekaterinburg" value="YEKT-5YEKST,M3.5.0,M10.5.0/3" /> - <zone name="Asia/Yerevan" value="AMT-4AMST,M3.5.0,M10.5.0/3" /> + <zone name="Asia/Vladivostok" value="VLAT-10" /> + <zone name="Asia/Yakutsk" value="YAKT-9" /> + <zone name="Asia/Yekaterinburg" value="YEKT-5" /> + <zone name="Asia/Yerevan" value="AMT-4" /> <zone name="Atlantic/Azores" value="AZOT1AZOST,M3.5.0/0,M10.5.0/1" /> <zone name="Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" /> @@ -320,85 +340,101 @@ <zone name="Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" /> <zone name="Atlantic/Reykjavik" value="GMT0" /> <zone name="Atlantic/South_Georgia" value="GST2" /> - <zone name="Atlantic/Stanley" value="FKT4FKST,M9.1.0,M4.3.0" /> <zone name="Atlantic/St_Helena" value="GMT0" /> + <zone name="Atlantic/Stanley" value="FKST3" /> - <zone name="Australia/ACT" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Adelaide" value="CST-9:30CST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Brisbane" value="EST-10" /> - <zone name="Australia/Broken_Hill" value="CST-9:30CST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Canberra" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Currie" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Darwin" value="CST-9:30" /> - <zone name="Australia/Eucla" value="CWST-8:45" /> - <zone name="Australia/Hobart" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/LHI" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" /> - <zone name="Australia/Lindeman" value="EST-10" /> - <zone name="Australia/Lord_Howe" value="LHST-10:30LHST-11,M10.1.0,M4.1.0" /> - <zone name="Australia/Melbourne" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/North" value="CST-9:30" /> - <zone name="Australia/NSW" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Perth" value="WST-8" /> - <zone name="Australia/Queensland" value="EST-10" /> - <zone name="Australia/South" value="CST-9:30CST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Sydney" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Tasmania" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/Victoria" value="EST-10EST,M10.1.0,M4.1.0/3" /> - <zone name="Australia/West" value="WST-8" /> - <zone name="Australia/Yancowinna" value="CST-9:30CST,M10.1.0,M4.1.0/3" /> + <zone name="Australia/ACT" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Adelaide" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Brisbane" value="AEST-10" /> + <zone name="Australia/Broken_Hill" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Canberra" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Currie" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Darwin" value="ACST-9:30" /> + <zone name="Australia/Eucla" value="ACWST-8:45" /> + <zone name="Australia/Hobart" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/LHI" value="LHST-10:30LHDT-11,M10.1.0,M4.1.0" /> + <zone name="Australia/Lindeman" value="AEST-10" /> + <zone name="Australia/Lord_Howe" value="LHST-10:30LHDT-11,M10.1.0,M4.1.0" /> + <zone name="Australia/Melbourne" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/NSW" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/North" value="ACST-9:30" /> + <zone name="Australia/Perth" value="AWST-8" /> + <zone name="Australia/Queensland" value="AEST-10" /> + <zone name="Australia/South" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Sydney" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Tasmania" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/Victoria" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="Australia/West" value="AWST-8" /> + <zone name="Australia/Yancowinna" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> <zone name="Brazil/Acre" value="ACT5" /> <zone name="Brazil/DeNoronha" value="FNT2" /> - <zone name="Brazil/East" value="BRT3BRST,M10.2.0/0,M2.3.0/0" /> + <zone name="Brazil/East" value="BRT3BRST,M10.3.0/0,M2.3.0/0" /> <zone name="Brazil/West" value="AMT4" /> + <zone name="CET" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + + <zone name="CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" /> <zone name="Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" /> - <zone name="Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="Canada/East-Saskatchewan" value="CST6" /> + <zone name="Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" /> - <zone name="Canada/Newfoundland" value="NST3:30NDT,M3.2.0/0:01,M11.1.0/0:01" /> + <zone name="Canada/Newfoundland" value="NST3:30NDT,M3.2.0,M11.1.0" /> <zone name="Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" /> <zone name="Canada/Saskatchewan" value="CST6" /> <zone name="Canada/Yukon" value="PST8PDT,M3.2.0,M11.1.0" /> - <zone name="Chile/Continental" value="CLST" /> - <zone name="Chile/EasterIsland" value="EASST" /> + <zone name="Chile/Continental" value="CLT3" /> + <zone name="Chile/EasterIsland" value="EAST5" /> + + <zone name="Cuba" value="CST5CDT,M3.2.0/0,M11.1.0/1" /> + + <zone name="EET" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + + <zone name="EST" value="EST5" /> + + <zone name="EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" /> + + <zone name="Egypt" value="EET-2" /> + + <zone name="Eire" value="GMT0IST,M3.5.0/1,M10.5.0" /> <zone name="Etc/GMT" value="GMT0" /> - <zone name="Etc/GMT0" value="GMT0" /> - <zone name="Etc/GMT-0" value="GMT0" /> <zone name="Etc/GMT+0" value="GMT0" /> - <zone name="Etc/GMT-1" value="GMT-1" /> - <zone name="Etc/GMT+1" value="GMT+1" /> - <zone name="Etc/GMT-10" value="GMT-10" /> - <zone name="Etc/GMT+10" value="GMT+10" /> - <zone name="Etc/GMT-11" value="GMT-11" /> - <zone name="Etc/GMT+11" value="GMT+11" /> - <zone name="Etc/GMT-12" value="GMT-12" /> - <zone name="Etc/GMT+12" value="GMT+12" /> - <zone name="Etc/GMT-13" value="GMT-13" /> - <zone name="Etc/GMT-14" value="GMT-14" /> - <zone name="Etc/GMT-2" value="GMT-2" /> - <zone name="Etc/GMT+2" value="GMT+2" /> - <zone name="Etc/GMT-3" value="GMT-3" /> - <zone name="Etc/GMT+3" value="GMT+3" /> - <zone name="Etc/GMT-4" value="GMT-4" /> - <zone name="Etc/GMT+4" value="GMT+4" /> - <zone name="Etc/GMT-5" value="GMT-5" /> - <zone name="Etc/GMT+5" value="GMT+5" /> - <zone name="Etc/GMT-6" value="GMT-6" /> - <zone name="Etc/GMT+6" value="GMT+6" /> - <zone name="Etc/GMT-7" value="GMT-7" /> - <zone name="Etc/GMT+7" value="GMT+7" /> - <zone name="Etc/GMT-8" value="GMT-8" /> - <zone name="Etc/GMT+8" value="GMT+8" /> - <zone name="Etc/GMT-9" value="GMT-9" /> - <zone name="Etc/GMT+9" value="GMT+9" /> + <zone name="Etc/GMT+1" value="<GMT+1>1" /> + <zone name="Etc/GMT+10" value="<GMT+10>10" /> + <zone name="Etc/GMT+11" value="<GMT+11>11" /> + <zone name="Etc/GMT+12" value="<GMT+12>12" /> + <zone name="Etc/GMT+2" value="<GMT+2>2" /> + <zone name="Etc/GMT+3" value="<GMT+3>3" /> + <zone name="Etc/GMT+4" value="<GMT+4>4" /> + <zone name="Etc/GMT+5" value="<GMT+5>5" /> + <zone name="Etc/GMT+6" value="<GMT+6>6" /> + <zone name="Etc/GMT+7" value="<GMT+7>7" /> + <zone name="Etc/GMT+8" value="<GMT+8>8" /> + <zone name="Etc/GMT+9" value="<GMT+9>9" /> + <zone name="Etc/GMT-0" value="GMT0" /> + <zone name="Etc/GMT-1" value="<GMT-1>-1" /> + <zone name="Etc/GMT-10" value="<GMT-10>-10" /> + <zone name="Etc/GMT-11" value="<GMT-11>-11" /> + <zone name="Etc/GMT-12" value="<GMT-12>-12" /> + <zone name="Etc/GMT-13" value="<GMT-13>-13" /> + <zone name="Etc/GMT-14" value="<GMT-14>-14" /> + <zone name="Etc/GMT-2" value="<GMT-2>-2" /> + <zone name="Etc/GMT-3" value="<GMT-3>-3" /> + <zone name="Etc/GMT-4" value="<GMT-4>-4" /> + <zone name="Etc/GMT-5" value="<GMT-5>-5" /> + <zone name="Etc/GMT-6" value="<GMT-6>-6" /> + <zone name="Etc/GMT-7" value="<GMT-7>-7" /> + <zone name="Etc/GMT-8" value="<GMT-8>-8" /> + <zone name="Etc/GMT-9" value="<GMT-9>-9" /> + <zone name="Etc/GMT0" value="GMT0" /> <zone name="Etc/Greenwich" value="GMT0" /> <zone name="Etc/UCT" value="UCT0" /> - <zone name="Etc/Universal" value="UTC0" /> <zone name="Etc/UTC" value="UTC0" /> + <zone name="Etc/Universal" value="UTC0" /> <zone name="Etc/Zulu" value="UTC0" /> <zone name="Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" /> @@ -411,7 +447,8 @@ <zone name="Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" /> - <zone name="Europe/Chisinau" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="Europe/Busingen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="Europe/Chisinau" value="EET-2EEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Dublin" value="GMT0IST,M3.5.0/1,M10.5.0" /> <zone name="Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" /> @@ -420,7 +457,7 @@ <zone name="Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" /> <zone name="Europe/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" /> - <zone name="Europe/Kaliningrad" value="EET-2EEST,M3.5.0,M10.5.0/3" /> + <zone name="Europe/Kaliningrad" value="EET-2" /> <zone name="Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" /> <zone name="Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" /> @@ -429,9 +466,9 @@ <zone name="Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> - <zone name="Europe/Minsk" value="EET-2EEST,M3.5.0,M10.5.0/3" /> + <zone name="Europe/Minsk" value="MSK-3" /> <zone name="Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" /> - <zone name="Europe/Moscow" value="MSK-3MSD,M3.5.0,M10.5.0/3" /> + <zone name="Europe/Moscow" value="MSK-3" /> <zone name="Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" /> @@ -439,27 +476,47 @@ <zone name="Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" /> - <zone name="Europe/Samara" value="SAMT-4SAMST,M3.5.0,M10.5.0/3" /> + <zone name="Europe/Samara" value="SAMT-4" /> <zone name="Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" /> - <zone name="Europe/Simferopol" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="Europe/Simferopol" value="MSK-3" /> <zone name="Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" /> - <zone name="Europe/Tiraspol" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="Europe/Tiraspol" value="EET-2EEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> - <zone name="Europe/Volgograd" value="VOLT-3VOLST,M3.5.0,M10.5.0/3" /> + <zone name="Europe/Volgograd" value="MSK-3" /> <zone name="Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" /> <zone name="Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> <zone name="Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="GB" value="GMT0BST,M3.5.0/1,M10.5.0" /> + + <zone name="GB-Eire" value="GMT0BST,M3.5.0/1,M10.5.0" /> + + <zone name="GMT" value="GMT0" /> + + <zone name="GMT+0" value="GMT0" /> + + <zone name="GMT-0" value="GMT0" /> + + <zone name="GMT0" value="GMT0" /> + + <zone name="Greenwich" value="GMT0" /> + + <zone name="HST" value="HST10" /> + + <zone name="Hongkong" value="HKT-8" /> + + <zone name="Iceland" value="GMT0" /> + <zone name="Indian/Antananarivo" value="EAT-3" /> <zone name="Indian/Chagos" value="IOT-6" /> <zone name="Indian/Christmas" value="CXT-7" /> @@ -472,22 +529,48 @@ <zone name="Indian/Mayotte" value="EAT-3" /> <zone name="Indian/Reunion" value="RET-4" /> - <zone name="Mexico/BajaNorte" value="PST8PDT,M4.1.0,M10.5.0" /> + <zone name="Iran" value="IRDT" /> + + <zone name="Israel" value="IDDT" /> + + <zone name="Jamaica" value="EST5" /> + + <zone name="Japan" value="JST-9" /> + + <zone name="Kwajalein" value="MHT-12" /> + + <zone name="Libya" value="EET-2" /> + + <zone name="MET" value="MET-1MEST,M3.5.0,M10.5.0/3" /> + + <zone name="MST" value="MST7" /> + + <zone name="MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" /> + + <zone name="Mexico/BajaNorte" value="PST8PDT,M3.2.0,M11.1.0" /> <zone name="Mexico/BajaSur" value="MST7MDT,M4.1.0,M10.5.0" /> <zone name="Mexico/General" value="CST6CDT,M4.1.0,M10.5.0" /> - <zone name="Mideast/Riyadh87" value="zzz-3:07:04" /> - <zone name="Mideast/Riyadh88" value="zzz-3:07:04" /> - <zone name="Mideast/Riyadh89" value="zzz-3:07:04" /> + <zone name="NZ" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + + <zone name="NZ-CHAT" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" /> + + <zone name="Navajo" value="MST7MDT,M3.2.0,M11.1.0" /> - <zone name="Pacific/Apia" value="WST11" /> + <zone name="PRC" value="CST-8" /> + + <zone name="PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" /> + + <zone name="Pacific/Apia" value="WSST-13WSDT,M9.5.0/3,M4.1.0/4" /> <zone name="Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="Pacific/Bougainville" value="BST-11" /> <zone name="Pacific/Chatham" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" /> - <zone name="Pacific/Easter" value="EASST" /> + <zone name="Pacific/Chuuk" value="CHUT-10" /> + <zone name="Pacific/Easter" value="EAST5" /> <zone name="Pacific/Efate" value="VUT-11" /> <zone name="Pacific/Enderbury" value="PHOT-13" /> - <zone name="Pacific/Fakaofo" value="TKT10" /> - <zone name="Pacific/Fiji" value="FJT-12" /> + <zone name="Pacific/Fakaofo" value="TKT-13" /> + <zone name="Pacific/Fiji" value="FJT-12FJST,M11.1.0,M1.3.0/3" /> <zone name="Pacific/Funafuti" value="TVT-12" /> <zone name="Pacific/Galapagos" value="GALT6" /> <zone name="Pacific/Gambier" value="GAMT9" /> @@ -503,11 +586,12 @@ <zone name="Pacific/Midway" value="SST11" /> <zone name="Pacific/Nauru" value="NRT-12" /> <zone name="Pacific/Niue" value="NUT11" /> - <zone name="Pacific/Norfolk" value="NFT-11:30" /> + <zone name="Pacific/Norfolk" value="NFT-11" /> <zone name="Pacific/Noumea" value="NCT-11" /> <zone name="Pacific/Pago_Pago" value="SST11" /> <zone name="Pacific/Palau" value="PWT-9" /> <zone name="Pacific/Pitcairn" value="PST8" /> + <zone name="Pacific/Pohnpei" value="PONT-11" /> <zone name="Pacific/Ponape" value="PONT-11" /> <zone name="Pacific/Port_Moresby" value="PGT-10" /> <zone name="Pacific/Rarotonga" value="CKT10" /> @@ -516,36 +600,1217 @@ <zone name="Pacific/Tahiti" value="TAHT10" /> <zone name="Pacific/Tarawa" value="GILT-12" /> <zone name="Pacific/Tongatapu" value="TOT-13" /> - <zone name="Pacific/Truk" value="TRUT-10" /> + <zone name="Pacific/Truk" value="CHUT-10" /> <zone name="Pacific/Wake" value="WAKT-12" /> <zone name="Pacific/Wallis" value="WFT-12" /> - <zone name="Pacific/Yap" value="TRUT-10" /> - - <zone name="SystemV/AST4" value="AST4" /> - <zone name="SystemV/AST4ADT" value="AST4ADT,M3.2.0,M11.1.0" /> - <zone name="SystemV/CST6" value="CST6" /> - <zone name="SystemV/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" /> - <zone name="SystemV/EST5" value="EST5" /> - <zone name="SystemV/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" /> - <zone name="SystemV/HST10" value="HST10" /> - <zone name="SystemV/MST7" value="MST7" /> - <zone name="SystemV/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" /> - <zone name="SystemV/PST8" value="PST8" /> - <zone name="SystemV/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" /> - <zone name="SystemV/YST9" value="GAMT9" /> - <zone name="SystemV/YST9YDT" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="Pacific/Yap" value="CHUT-10" /> + + <zone name="Poland" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + + <zone name="Portugal" value="WET0WEST,M3.5.0/1,M10.5.0" /> + + <zone name="ROC" value="CST-8" /> + + <zone name="ROK" value="KST-9" /> + + <zone name="Singapore" value="SGT-8" /> + + <zone name="Turkey" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + + <zone name="UCT" value="UCT0" /> <zone name="US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" /> - <zone name="US/Aleutian" value="HAST10HADT,M3.2.0,M11.1.0" /> + <zone name="US/Aleutian" value="HST10HDT,M3.2.0,M11.1.0" /> <zone name="US/Arizona" value="MST7" /> <zone name="US/Central" value="CST6CDT,M3.2.0,M11.1.0" /> - <zone name="US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="US/Hawaii" value="HST10" /> <zone name="US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" /> <zone name="US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" /> <zone name="US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" /> <zone name="US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="US/Pacific-New" value="PST8PDT,M3.2.0,M11.1.0" /> <zone name="US/Samoa" value="SST11" /> + + <zone name="UTC" value="UTC0" /> + + <zone name="Universal" value="UTC0" /> + + <zone name="W-SU" value="MSK-3" /> + + <zone name="WET" value="WET0WEST,M3.5.0/1,M10.5.0" /> + + <zone name="Zulu" value="UTC0" /> + + <zone name="posix/Africa/Abidjan" value="GMT0" /> + <zone name="posix/Africa/Accra" value="GMT0" /> + <zone name="posix/Africa/Addis_Ababa" value="EAT-3" /> + <zone name="posix/Africa/Algiers" value="CET-1" /> + <zone name="posix/Africa/Asmara" value="EAT-3" /> + <zone name="posix/Africa/Asmera" value="EAT-3" /> + <zone name="posix/Africa/Bamako" value="GMT0" /> + <zone name="posix/Africa/Bangui" value="WAT-1" /> + <zone name="posix/Africa/Banjul" value="GMT0" /> + <zone name="posix/Africa/Bissau" value="GMT0" /> + <zone name="posix/Africa/Blantyre" value="CAT-2" /> + <zone name="posix/Africa/Brazzaville" value="WAT-1" /> + <zone name="posix/Africa/Bujumbura" value="CAT-2" /> + <zone name="posix/Africa/Cairo" value="EET-2" /> + <zone name="posix/Africa/Casablanca" value="WET0WEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Africa/Conakry" value="GMT0" /> + <zone name="posix/Africa/Dakar" value="GMT0" /> + <zone name="posix/Africa/Dar_es_Salaam" value="EAT-3" /> + <zone name="posix/Africa/Djibouti" value="EAT-3" /> + <zone name="posix/Africa/Douala" value="WAT-1" /> + <zone name="posix/Africa/El_Aaiun" value="WET0WEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Africa/Freetown" value="GMT0" /> + <zone name="posix/Africa/Gaborone" value="CAT-2" /> + <zone name="posix/Africa/Harare" value="CAT-2" /> + <zone name="posix/Africa/Johannesburg" value="SAST-2" /> + <zone name="posix/Africa/Juba" value="EAT-3" /> + <zone name="posix/Africa/Kampala" value="EAT-3" /> + <zone name="posix/Africa/Khartoum" value="EAT-3" /> + <zone name="posix/Africa/Kigali" value="CAT-2" /> + <zone name="posix/Africa/Kinshasa" value="WAT-1" /> + <zone name="posix/Africa/Lagos" value="WAT-1" /> + <zone name="posix/Africa/Libreville" value="WAT-1" /> + <zone name="posix/Africa/Lome" value="GMT0" /> + <zone name="posix/Africa/Luanda" value="WAT-1" /> + <zone name="posix/Africa/Lubumbashi" value="CAT-2" /> + <zone name="posix/Africa/Lusaka" value="CAT-2" /> + <zone name="posix/Africa/Malabo" value="WAT-1" /> + <zone name="posix/Africa/Maputo" value="CAT-2" /> + <zone name="posix/Africa/Maseru" value="SAST-2" /> + <zone name="posix/Africa/Mbabane" value="SAST-2" /> + <zone name="posix/Africa/Mogadishu" value="EAT-3" /> + <zone name="posix/Africa/Monrovia" value="GMT0" /> + <zone name="posix/Africa/Nairobi" value="EAT-3" /> + <zone name="posix/Africa/Ndjamena" value="WAT-1" /> + <zone name="posix/Africa/Niamey" value="WAT-1" /> + <zone name="posix/Africa/Nouakchott" value="GMT0" /> + <zone name="posix/Africa/Ouagadougou" value="GMT0" /> + <zone name="posix/Africa/Porto-Novo" value="WAT-1" /> + <zone name="posix/Africa/Sao_Tome" value="GMT0" /> + <zone name="posix/Africa/Timbuktu" value="GMT0" /> + <zone name="posix/Africa/Tripoli" value="EET-2" /> + <zone name="posix/Africa/Tunis" value="CET-1" /> + <zone name="posix/Africa/Windhoek" value="WAT-1WAST,M9.1.0,M4.1.0" /> + <zone name="posix/America/Adak" value="HST10HDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Anguilla" value="AST4" /> + <zone name="posix/America/Antigua" value="AST4" /> + <zone name="posix/America/Araguaina" value="BRT3" /> + <zone name="posix/America/Argentina/Buenos_Aires" value="ART3" /> + <zone name="posix/America/Argentina/Catamarca" value="ART3" /> + <zone name="posix/America/Argentina/ComodRivadavia" value="ART3" /> + <zone name="posix/America/Argentina/Cordoba" value="ART3" /> + <zone name="posix/America/Argentina/Jujuy" value="ART3" /> + <zone name="posix/America/Argentina/La_Rioja" value="ART3" /> + <zone name="posix/America/Argentina/Mendoza" value="ART3" /> + <zone name="posix/America/Argentina/Rio_Gallegos" value="ART3" /> + <zone name="posix/America/Argentina/Salta" value="ART3" /> + <zone name="posix/America/Argentina/San_Juan" value="ART3" /> + <zone name="posix/America/Argentina/San_Luis" value="ART3" /> + <zone name="posix/America/Argentina/Tucuman" value="ART3" /> + <zone name="posix/America/Argentina/Ushuaia" value="ART3" /> + <zone name="posix/America/Aruba" value="AST4" /> + <zone name="posix/America/Asuncion" value="PYT4PYST,M10.1.0/0,M3.4.0/0" /> + <zone name="posix/America/Atikokan" value="EST5" /> + <zone name="posix/America/Atka" value="HST10HDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Bahia" value="BRT3" /> + <zone name="posix/America/Bahia_Banderas" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="posix/America/Barbados" value="AST4" /> + <zone name="posix/America/Belem" value="BRT3" /> + <zone name="posix/America/Belize" value="CST6" /> + <zone name="posix/America/Blanc-Sablon" value="AST4" /> + <zone name="posix/America/Boa_Vista" value="AMT4" /> + <zone name="posix/America/Bogota" value="COT5" /> + <zone name="posix/America/Boise" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Buenos_Aires" value="ART3" /> + <zone name="posix/America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Campo_Grande" value="AMT4AMST,M10.3.0/0,M2.3.0/0" /> + <zone name="posix/America/Cancun" value="EST5" /> + <zone name="posix/America/Caracas" value="VET4:30" /> + <zone name="posix/America/Catamarca" value="ART3" /> + <zone name="posix/America/Cayenne" value="GFT3" /> + <zone name="posix/America/Cayman" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Chihuahua" value="MST7MDT,M4.1.0,M10.5.0" /> + <zone name="posix/America/Coral_Harbour" value="EST5" /> + <zone name="posix/America/Cordoba" value="ART3" /> + <zone name="posix/America/Costa_Rica" value="CST6" /> + <zone name="posix/America/Creston" value="MST7" /> + <zone name="posix/America/Cuiaba" value="AMT4AMST,M10.3.0/0,M2.3.0/0" /> + <zone name="posix/America/Curacao" value="AST4" /> + <zone name="posix/America/Danmarkshavn" value="GMT0" /> + <zone name="posix/America/Dawson" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Dawson_Creek" value="MST7" /> + <zone name="posix/America/Denver" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Detroit" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Dominica" value="AST4" /> + <zone name="posix/America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Eirunepe" value="ACT5" /> + <zone name="posix/America/El_Salvador" value="CST6" /> + <zone name="posix/America/Ensenada" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Fort_Nelson" value="MST7" /> + <zone name="posix/America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Fortaleza" value="BRT3" /> + <zone name="posix/America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Godthab" value="WGST" /> + <zone name="posix/America/Goose_Bay" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Grand_Turk" value="AST4" /> + <zone name="posix/America/Grenada" value="AST4" /> + <zone name="posix/America/Guadeloupe" value="AST4" /> + <zone name="posix/America/Guatemala" value="CST6" /> + <zone name="posix/America/Guayaquil" value="ECT5" /> + <zone name="posix/America/Guyana" value="GYT4" /> + <zone name="posix/America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Havana" value="CST5CDT,M3.2.0/0,M11.1.0/1" /> + <zone name="posix/America/Hermosillo" value="MST7" /> + <zone name="posix/America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Jamaica" value="EST5" /> + <zone name="posix/America/Jujuy" value="ART3" /> + <zone name="posix/America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Kralendijk" value="AST4" /> + <zone name="posix/America/La_Paz" value="BOT4" /> + <zone name="posix/America/Lima" value="PET5" /> + <zone name="posix/America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Lower_Princes" value="AST4" /> + <zone name="posix/America/Maceio" value="BRT3" /> + <zone name="posix/America/Managua" value="CST6" /> + <zone name="posix/America/Manaus" value="AMT4" /> + <zone name="posix/America/Marigot" value="AST4" /> + <zone name="posix/America/Martinique" value="AST4" /> + <zone name="posix/America/Matamoros" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Mazatlan" value="MST7MDT,M4.1.0,M10.5.0" /> + <zone name="posix/America/Mendoza" value="ART3" /> + <zone name="posix/America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Merida" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="posix/America/Metlakatla" value="PST8" /> + <zone name="posix/America/Mexico_City" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="posix/America/Miquelon" value="PMST3PMDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Monterrey" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="posix/America/Montevideo" value="UYT3" /> + <zone name="posix/America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Montserrat" value="AST4" /> + <zone name="posix/America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/New_York" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Noronha" value="FNT2" /> + <zone name="posix/America/North_Dakota/Beulah" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Ojinaga" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Panama" value="EST5" /> + <zone name="posix/America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Paramaribo" value="SRT3" /> + <zone name="posix/America/Phoenix" value="MST7" /> + <zone name="posix/America/Port-au-Prince" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Port_of_Spain" value="AST4" /> + <zone name="posix/America/Porto_Acre" value="ACT5" /> + <zone name="posix/America/Porto_Velho" value="AMT4" /> + <zone name="posix/America/Puerto_Rico" value="AST4" /> + <zone name="posix/America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Recife" value="BRT3" /> + <zone name="posix/America/Regina" value="CST6" /> + <zone name="posix/America/Resolute" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Rio_Branco" value="ACT5" /> + <zone name="posix/America/Rosario" value="ART3" /> + <zone name="posix/America/Santa_Isabel" value="PST8PDT,M4.1.0,M10.5.0" /> + <zone name="posix/America/Santarem" value="BRT3" /> + <zone name="posix/America/Santiago" value="CLT3" /> + <zone name="posix/America/Santo_Domingo" value="AST4" /> + <zone name="posix/America/Sao_Paulo" value="BRT3BRST,M10.3.0/0,M2.3.0/0" /> + <zone name="posix/America/Scoresbysund" value="EGT1EGST,M3.5.0/0,M10.5.0/1" /> + <zone name="posix/America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Sitka" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/St_Barthelemy" value="AST4" /> + <zone name="posix/America/St_Johns" value="NST3:30NDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/St_Kitts" value="AST4" /> + <zone name="posix/America/St_Lucia" value="AST4" /> + <zone name="posix/America/St_Thomas" value="AST4" /> + <zone name="posix/America/St_Vincent" value="AST4" /> + <zone name="posix/America/Swift_Current" value="CST6" /> + <zone name="posix/America/Tegucigalpa" value="CST6" /> + <zone name="posix/America/Thule" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Tijuana" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Tortola" value="AST4" /> + <zone name="posix/America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Virgin" value="AST4" /> + <zone name="posix/America/Whitehorse" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Winnipeg" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="posix/America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/Antarctica/Casey" value="AWST-8" /> + <zone name="posix/Antarctica/Davis" value="DAVT-7" /> + <zone name="posix/Antarctica/DumontDUrville" value="DDUT-10" /> + <zone name="posix/Antarctica/Macquarie" value="MIST-11" /> + <zone name="posix/Antarctica/Mawson" value="MAWT-5" /> + <zone name="posix/Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="posix/Antarctica/Palmer" value="CLT3" /> + <zone name="posix/Antarctica/Rothera" value="ROTT3" /> + <zone name="posix/Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="posix/Antarctica/Syowa" value="SYOT-3" /> + <zone name="posix/Antarctica/Troll" value="UTC0CEST-2,M3.5.0/1,M10.5.0/3" /> + <zone name="posix/Antarctica/Vostok" value="VOST-6" /> + <zone name="posix/Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Asia/Aden" value="AST-3" /> + <zone name="posix/Asia/Almaty" value="ALMT-6" /> + <zone name="posix/Asia/Amman" value="EEST" /> + <zone name="posix/Asia/Anadyr" value="ANAT-12" /> + <zone name="posix/Asia/Aqtau" value="AQTT-5" /> + <zone name="posix/Asia/Aqtobe" value="AQTT-5" /> + <zone name="posix/Asia/Ashgabat" value="TMT-5" /> + <zone name="posix/Asia/Ashkhabad" value="TMT-5" /> + <zone name="posix/Asia/Baghdad" value="AST-3" /> + <zone name="posix/Asia/Bahrain" value="AST-3" /> + <zone name="posix/Asia/Baku" value="AZT-4AZST,M3.5.0/4,M10.5.0/5" /> + <zone name="posix/Asia/Bangkok" value="ICT-7" /> + <zone name="posix/Asia/Beirut" value="EET-2EEST,M3.5.0/0,M10.5.0/0" /> + <zone name="posix/Asia/Bishkek" value="KGT-6" /> + <zone name="posix/Asia/Brunei" value="BNT-8" /> + <zone name="posix/Asia/Calcutta" value="IST-5:30" /> + <zone name="posix/Asia/Chita" value="IRKT-8" /> + <zone name="posix/Asia/Choibalsan" value="CHOT-8CHOST,M3.5.6,M9.5.6/0" /> + <zone name="posix/Asia/Chongqing" value="CST-8" /> + <zone name="posix/Asia/Chungking" value="CST-8" /> + <zone name="posix/Asia/Colombo" value="IST-5:30" /> + <zone name="posix/Asia/Dacca" value="BDT-6" /> + <zone name="posix/Asia/Damascus" value="EET-2EEST,M3.5.5/0,M10.5.5/0" /> + <zone name="posix/Asia/Dhaka" value="BDT-6" /> + <zone name="posix/Asia/Dili" value="TLT-9" /> + <zone name="posix/Asia/Dubai" value="GST-4" /> + <zone name="posix/Asia/Dushanbe" value="TJT-5" /> + <zone name="posix/Asia/Gaza" value="EEST" /> + <zone name="posix/Asia/Harbin" value="CST-8" /> + <zone name="posix/Asia/Hebron" value="EEST" /> + <zone name="posix/Asia/Ho_Chi_Minh" value="ICT-7" /> + <zone name="posix/Asia/Hong_Kong" value="HKT-8" /> + <zone name="posix/Asia/Hovd" value="HOVT-7HOVST,M3.5.6,M9.5.6/0" /> + <zone name="posix/Asia/Irkutsk" value="IRKT-8" /> + <zone name="posix/Asia/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Asia/Jakarta" value="WIB-7" /> + <zone name="posix/Asia/Jayapura" value="WIT-9" /> + <zone name="posix/Asia/Jerusalem" value="IDDT" /> + <zone name="posix/Asia/Kabul" value="AFT-4:30" /> + <zone name="posix/Asia/Kamchatka" value="PETT-12" /> + <zone name="posix/Asia/Karachi" value="PKT-5" /> + <zone name="posix/Asia/Kashgar" value="XJT-6" /> + <zone name="posix/Asia/Kathmandu" value="NPT-5:45" /> + <zone name="posix/Asia/Katmandu" value="NPT-5:45" /> + <zone name="posix/Asia/Khandyga" value="YAKT-9" /> + <zone name="posix/Asia/Kolkata" value="IST-5:30" /> + <zone name="posix/Asia/Krasnoyarsk" value="KRAT-7" /> + <zone name="posix/Asia/Kuala_Lumpur" value="MYT-8" /> + <zone name="posix/Asia/Kuching" value="MYT-8" /> + <zone name="posix/Asia/Kuwait" value="AST-3" /> + <zone name="posix/Asia/Macao" value="CST-8" /> + <zone name="posix/Asia/Macau" value="CST-8" /> + <zone name="posix/Asia/Magadan" value="MAGT-10" /> + <zone name="posix/Asia/Makassar" value="WITA-8" /> + <zone name="posix/Asia/Manila" value="PHT-8" /> + <zone name="posix/Asia/Muscat" value="GST-4" /> + <zone name="posix/Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Asia/Novokuznetsk" value="KRAT-7" /> + <zone name="posix/Asia/Novosibirsk" value="NOVT-6" /> + <zone name="posix/Asia/Omsk" value="OMST-6" /> + <zone name="posix/Asia/Oral" value="ORAT-5" /> + <zone name="posix/Asia/Phnom_Penh" value="ICT-7" /> + <zone name="posix/Asia/Pontianak" value="WIB-7" /> + <zone name="posix/Asia/Pyongyang" value="KST-8:30" /> + <zone name="posix/Asia/Qatar" value="AST-3" /> + <zone name="posix/Asia/Qyzylorda" value="QYZT-6" /> + <zone name="posix/Asia/Rangoon" value="MMT-6:30" /> + <zone name="posix/Asia/Riyadh" value="AST-3" /> + <zone name="posix/Asia/Saigon" value="ICT-7" /> + <zone name="posix/Asia/Sakhalin" value="SAKT-10" /> + <zone name="posix/Asia/Samarkand" value="UZT-5" /> + <zone name="posix/Asia/Seoul" value="KST-9" /> + <zone name="posix/Asia/Shanghai" value="CST-8" /> + <zone name="posix/Asia/Singapore" value="SGT-8" /> + <zone name="posix/Asia/Srednekolymsk" value="SRET-11" /> + <zone name="posix/Asia/Taipei" value="CST-8" /> + <zone name="posix/Asia/Tashkent" value="UZT-5" /> + <zone name="posix/Asia/Tbilisi" value="GET-4" /> + <zone name="posix/Asia/Tehran" value="IRDT" /> + <zone name="posix/Asia/Tel_Aviv" value="IDDT" /> + <zone name="posix/Asia/Thimbu" value="BTT-6" /> + <zone name="posix/Asia/Thimphu" value="BTT-6" /> + <zone name="posix/Asia/Tokyo" value="JST-9" /> + <zone name="posix/Asia/Ujung_Pandang" value="WITA-8" /> + <zone name="posix/Asia/Ulaanbaatar" value="ULAT-8ULAST,M3.5.6,M9.5.6/0" /> + <zone name="posix/Asia/Ulan_Bator" value="ULAT-8ULAST,M3.5.6,M9.5.6/0" /> + <zone name="posix/Asia/Urumqi" value="XJT-6" /> + <zone name="posix/Asia/Ust-Nera" value="VLAT-10" /> + <zone name="posix/Asia/Vientiane" value="ICT-7" /> + <zone name="posix/Asia/Vladivostok" value="VLAT-10" /> + <zone name="posix/Asia/Yakutsk" value="YAKT-9" /> + <zone name="posix/Asia/Yekaterinburg" value="YEKT-5" /> + <zone name="posix/Asia/Yerevan" value="AMT-4" /> + <zone name="posix/Atlantic/Azores" value="AZOT1AZOST,M3.5.0/0,M10.5.0/1" /> + <zone name="posix/Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="posix/Atlantic/Canary" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Atlantic/Cape_Verde" value="CVT1" /> + <zone name="posix/Atlantic/Faeroe" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Atlantic/Faroe" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Atlantic/Jan_Mayen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Atlantic/Reykjavik" value="GMT0" /> + <zone name="posix/Atlantic/South_Georgia" value="GST2" /> + <zone name="posix/Atlantic/St_Helena" value="GMT0" /> + <zone name="posix/Atlantic/Stanley" value="FKST3" /> + <zone name="posix/Australia/ACT" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Adelaide" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Brisbane" value="AEST-10" /> + <zone name="posix/Australia/Broken_Hill" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Canberra" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Currie" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Darwin" value="ACST-9:30" /> + <zone name="posix/Australia/Eucla" value="ACWST-8:45" /> + <zone name="posix/Australia/Hobart" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/LHI" value="LHST-10:30LHDT-11,M10.1.0,M4.1.0" /> + <zone name="posix/Australia/Lindeman" value="AEST-10" /> + <zone name="posix/Australia/Lord_Howe" value="LHST-10:30LHDT-11,M10.1.0,M4.1.0" /> + <zone name="posix/Australia/Melbourne" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/NSW" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/North" value="ACST-9:30" /> + <zone name="posix/Australia/Perth" value="AWST-8" /> + <zone name="posix/Australia/Queensland" value="AEST-10" /> + <zone name="posix/Australia/South" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Sydney" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Tasmania" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/Victoria" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Australia/West" value="AWST-8" /> + <zone name="posix/Australia/Yancowinna" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="posix/Brazil/Acre" value="ACT5" /> + <zone name="posix/Brazil/DeNoronha" value="FNT2" /> + <zone name="posix/Brazil/East" value="BRT3BRST,M10.3.0/0,M2.3.0/0" /> + <zone name="posix/Brazil/West" value="AMT4" /> + <zone name="posix/CET" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="posix/Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/Canada/East-Saskatchewan" value="CST6" /> + <zone name="posix/Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/Canada/Newfoundland" value="NST3:30NDT,M3.2.0,M11.1.0" /> + <zone name="posix/Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/Canada/Saskatchewan" value="CST6" /> + <zone name="posix/Canada/Yukon" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/Chile/Continental" value="CLT3" /> + <zone name="posix/Chile/EasterIsland" value="EAST5" /> + <zone name="posix/Cuba" value="CST5CDT,M3.2.0/0,M11.1.0/1" /> + <zone name="posix/EET" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/EST" value="EST5" /> + <zone name="posix/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/Egypt" value="EET-2" /> + <zone name="posix/Eire" value="GMT0IST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Etc/GMT" value="GMT0" /> + <zone name="posix/Etc/GMT+0" value="GMT0" /> + <zone name="posix/Etc/GMT+1" value="<GMT+1>1" /> + <zone name="posix/Etc/GMT+10" value="<GMT+10>10" /> + <zone name="posix/Etc/GMT+11" value="<GMT+11>11" /> + <zone name="posix/Etc/GMT+12" value="<GMT+12>12" /> + <zone name="posix/Etc/GMT+2" value="<GMT+2>2" /> + <zone name="posix/Etc/GMT+3" value="<GMT+3>3" /> + <zone name="posix/Etc/GMT+4" value="<GMT+4>4" /> + <zone name="posix/Etc/GMT+5" value="<GMT+5>5" /> + <zone name="posix/Etc/GMT+6" value="<GMT+6>6" /> + <zone name="posix/Etc/GMT+7" value="<GMT+7>7" /> + <zone name="posix/Etc/GMT+8" value="<GMT+8>8" /> + <zone name="posix/Etc/GMT+9" value="<GMT+9>9" /> + <zone name="posix/Etc/GMT-0" value="GMT0" /> + <zone name="posix/Etc/GMT-1" value="<GMT-1>-1" /> + <zone name="posix/Etc/GMT-10" value="<GMT-10>-10" /> + <zone name="posix/Etc/GMT-11" value="<GMT-11>-11" /> + <zone name="posix/Etc/GMT-12" value="<GMT-12>-12" /> + <zone name="posix/Etc/GMT-13" value="<GMT-13>-13" /> + <zone name="posix/Etc/GMT-14" value="<GMT-14>-14" /> + <zone name="posix/Etc/GMT-2" value="<GMT-2>-2" /> + <zone name="posix/Etc/GMT-3" value="<GMT-3>-3" /> + <zone name="posix/Etc/GMT-4" value="<GMT-4>-4" /> + <zone name="posix/Etc/GMT-5" value="<GMT-5>-5" /> + <zone name="posix/Etc/GMT-6" value="<GMT-6>-6" /> + <zone name="posix/Etc/GMT-7" value="<GMT-7>-7" /> + <zone name="posix/Etc/GMT-8" value="<GMT-8>-8" /> + <zone name="posix/Etc/GMT-9" value="<GMT-9>-9" /> + <zone name="posix/Etc/GMT0" value="GMT0" /> + <zone name="posix/Etc/Greenwich" value="GMT0" /> + <zone name="posix/Etc/UCT" value="UCT0" /> + <zone name="posix/Etc/UTC" value="UTC0" /> + <zone name="posix/Etc/Universal" value="UTC0" /> + <zone name="posix/Etc/Zulu" value="UTC0" /> + <zone name="posix/Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Andorra" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Athens" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Belfast" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Europe/Belgrade" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Berlin" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Bratislava" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Busingen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Chisinau" value="EET-2EEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Dublin" value="GMT0IST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Guernsey" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Europe/Helsinki" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Europe/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Europe/Kaliningrad" value="EET-2" /> + <zone name="posix/Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/London" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Europe/Luxembourg" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Minsk" value="MSK-3" /> + <zone name="posix/Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Moscow" value="MSK-3" /> + <zone name="posix/Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Podgorica" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Samara" value="SAMT-4" /> + <zone name="posix/Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Simferopol" value="MSK-3" /> + <zone name="posix/Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Tiraspol" value="EET-2EEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Volgograd" value="MSK-3" /> + <zone name="posix/Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/GB" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="posix/GB-Eire" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="posix/GMT" value="GMT0" /> + <zone name="posix/GMT+0" value="GMT0" /> + <zone name="posix/GMT-0" value="GMT0" /> + <zone name="posix/GMT0" value="GMT0" /> + <zone name="posix/Greenwich" value="GMT0" /> + <zone name="posix/HST" value="HST10" /> + <zone name="posix/Hongkong" value="HKT-8" /> + <zone name="posix/Iceland" value="GMT0" /> + <zone name="posix/Indian/Antananarivo" value="EAT-3" /> + <zone name="posix/Indian/Chagos" value="IOT-6" /> + <zone name="posix/Indian/Christmas" value="CXT-7" /> + <zone name="posix/Indian/Cocos" value="CCT-6:30" /> + <zone name="posix/Indian/Comoro" value="EAT-3" /> + <zone name="posix/Indian/Kerguelen" value="TFT-5" /> + <zone name="posix/Indian/Mahe" value="SCT-4" /> + <zone name="posix/Indian/Maldives" value="MVT-5" /> + <zone name="posix/Indian/Mauritius" value="MUT-4" /> + <zone name="posix/Indian/Mayotte" value="EAT-3" /> + <zone name="posix/Indian/Reunion" value="RET-4" /> + <zone name="posix/Iran" value="IRDT" /> + <zone name="posix/Israel" value="IDDT" /> + <zone name="posix/Jamaica" value="EST5" /> + <zone name="posix/Japan" value="JST-9" /> + <zone name="posix/Kwajalein" value="MHT-12" /> + <zone name="posix/Libya" value="EET-2" /> + <zone name="posix/MET" value="MET-1MEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/MST" value="MST7" /> + <zone name="posix/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/Mexico/BajaNorte" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/Mexico/BajaSur" value="MST7MDT,M4.1.0,M10.5.0" /> + <zone name="posix/Mexico/General" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="posix/NZ" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="posix/NZ-CHAT" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" /> + <zone name="posix/Navajo" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/PRC" value="CST-8" /> + <zone name="posix/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/Pacific/Apia" value="WSST-13WSDT,M9.5.0/3,M4.1.0/4" /> + <zone name="posix/Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="posix/Pacific/Bougainville" value="BST-11" /> + <zone name="posix/Pacific/Chatham" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" /> + <zone name="posix/Pacific/Chuuk" value="CHUT-10" /> + <zone name="posix/Pacific/Easter" value="EAST5" /> + <zone name="posix/Pacific/Efate" value="VUT-11" /> + <zone name="posix/Pacific/Enderbury" value="PHOT-13" /> + <zone name="posix/Pacific/Fakaofo" value="TKT-13" /> + <zone name="posix/Pacific/Fiji" value="FJT-12FJST,M11.1.0,M1.3.0/3" /> + <zone name="posix/Pacific/Funafuti" value="TVT-12" /> + <zone name="posix/Pacific/Galapagos" value="GALT6" /> + <zone name="posix/Pacific/Gambier" value="GAMT9" /> + <zone name="posix/Pacific/Guadalcanal" value="SBT-11" /> + <zone name="posix/Pacific/Guam" value="ChST-10" /> + <zone name="posix/Pacific/Honolulu" value="HST10" /> + <zone name="posix/Pacific/Johnston" value="HST10" /> + <zone name="posix/Pacific/Kiritimati" value="LINT-14" /> + <zone name="posix/Pacific/Kosrae" value="KOST-11" /> + <zone name="posix/Pacific/Kwajalein" value="MHT-12" /> + <zone name="posix/Pacific/Majuro" value="MHT-12" /> + <zone name="posix/Pacific/Marquesas" value="MART9:30" /> + <zone name="posix/Pacific/Midway" value="SST11" /> + <zone name="posix/Pacific/Nauru" value="NRT-12" /> + <zone name="posix/Pacific/Niue" value="NUT11" /> + <zone name="posix/Pacific/Norfolk" value="NFT-11" /> + <zone name="posix/Pacific/Noumea" value="NCT-11" /> + <zone name="posix/Pacific/Pago_Pago" value="SST11" /> + <zone name="posix/Pacific/Palau" value="PWT-9" /> + <zone name="posix/Pacific/Pitcairn" value="PST8" /> + <zone name="posix/Pacific/Pohnpei" value="PONT-11" /> + <zone name="posix/Pacific/Ponape" value="PONT-11" /> + <zone name="posix/Pacific/Port_Moresby" value="PGT-10" /> + <zone name="posix/Pacific/Rarotonga" value="CKT10" /> + <zone name="posix/Pacific/Saipan" value="ChST-10" /> + <zone name="posix/Pacific/Samoa" value="SST11" /> + <zone name="posix/Pacific/Tahiti" value="TAHT10" /> + <zone name="posix/Pacific/Tarawa" value="GILT-12" /> + <zone name="posix/Pacific/Tongatapu" value="TOT-13" /> + <zone name="posix/Pacific/Truk" value="CHUT-10" /> + <zone name="posix/Pacific/Wake" value="WAKT-12" /> + <zone name="posix/Pacific/Wallis" value="WFT-12" /> + <zone name="posix/Pacific/Yap" value="CHUT-10" /> + <zone name="posix/Poland" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="posix/Portugal" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="posix/ROC" value="CST-8" /> + <zone name="posix/ROK" value="KST-9" /> + <zone name="posix/Singapore" value="SGT-8" /> + <zone name="posix/Turkey" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="posix/UCT" value="UCT0" /> + <zone name="posix/US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Aleutian" value="HST10HDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Arizona" value="MST7" /> + <zone name="posix/US/Central" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Hawaii" value="HST10" /> + <zone name="posix/US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Pacific-New" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="posix/US/Samoa" value="SST11" /> + <zone name="posix/UTC" value="UTC0" /> + <zone name="posix/Universal" value="UTC0" /> + <zone name="posix/W-SU" value="MSK-3" /> + <zone name="posix/WET" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="posix/Zulu" value="UTC0" /> + + <zone name="posixrules" value="EST5EDT,M3.2.0,M11.1.0" /> + + <zone name="right/Africa/Abidjan" value="GMT0" /> + <zone name="right/Africa/Accra" value="GMT0" /> + <zone name="right/Africa/Addis_Ababa" value="EAT-3" /> + <zone name="right/Africa/Algiers" value="CET-1" /> + <zone name="right/Africa/Asmara" value="EAT-3" /> + <zone name="right/Africa/Asmera" value="EAT-3" /> + <zone name="right/Africa/Bamako" value="GMT0" /> + <zone name="right/Africa/Bangui" value="WAT-1" /> + <zone name="right/Africa/Banjul" value="GMT0" /> + <zone name="right/Africa/Bissau" value="GMT0" /> + <zone name="right/Africa/Blantyre" value="CAT-2" /> + <zone name="right/Africa/Brazzaville" value="WAT-1" /> + <zone name="right/Africa/Bujumbura" value="CAT-2" /> + <zone name="right/Africa/Cairo" value="EET-2" /> + <zone name="right/Africa/Casablanca" value="WET0WEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Africa/Ceuta" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Africa/Conakry" value="GMT0" /> + <zone name="right/Africa/Dakar" value="GMT0" /> + <zone name="right/Africa/Dar_es_Salaam" value="EAT-3" /> + <zone name="right/Africa/Djibouti" value="EAT-3" /> + <zone name="right/Africa/Douala" value="WAT-1" /> + <zone name="right/Africa/El_Aaiun" value="WET0WEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Africa/Freetown" value="GMT0" /> + <zone name="right/Africa/Gaborone" value="CAT-2" /> + <zone name="right/Africa/Harare" value="CAT-2" /> + <zone name="right/Africa/Johannesburg" value="SAST-2" /> + <zone name="right/Africa/Juba" value="EAT-3" /> + <zone name="right/Africa/Kampala" value="EAT-3" /> + <zone name="right/Africa/Khartoum" value="EAT-3" /> + <zone name="right/Africa/Kigali" value="CAT-2" /> + <zone name="right/Africa/Kinshasa" value="WAT-1" /> + <zone name="right/Africa/Lagos" value="WAT-1" /> + <zone name="right/Africa/Libreville" value="WAT-1" /> + <zone name="right/Africa/Lome" value="GMT0" /> + <zone name="right/Africa/Luanda" value="WAT-1" /> + <zone name="right/Africa/Lubumbashi" value="CAT-2" /> + <zone name="right/Africa/Lusaka" value="CAT-2" /> + <zone name="right/Africa/Malabo" value="WAT-1" /> + <zone name="right/Africa/Maputo" value="CAT-2" /> + <zone name="right/Africa/Maseru" value="SAST-2" /> + <zone name="right/Africa/Mbabane" value="SAST-2" /> + <zone name="right/Africa/Mogadishu" value="EAT-3" /> + <zone name="right/Africa/Monrovia" value="GMT0" /> + <zone name="right/Africa/Nairobi" value="EAT-3" /> + <zone name="right/Africa/Ndjamena" value="WAT-1" /> + <zone name="right/Africa/Niamey" value="WAT-1" /> + <zone name="right/Africa/Nouakchott" value="GMT0" /> + <zone name="right/Africa/Ouagadougou" value="GMT0" /> + <zone name="right/Africa/Porto-Novo" value="WAT-1" /> + <zone name="right/Africa/Sao_Tome" value="GMT0" /> + <zone name="right/Africa/Timbuktu" value="GMT0" /> + <zone name="right/Africa/Tripoli" value="EET-2" /> + <zone name="right/Africa/Tunis" value="CET-1" /> + <zone name="right/Africa/Windhoek" value="WAT-1WAST,M9.1.0,M4.1.0" /> + <zone name="right/America/Adak" value="HST10HDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Anchorage" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Anguilla" value="AST4" /> + <zone name="right/America/Antigua" value="AST4" /> + <zone name="right/America/Araguaina" value="BRT3" /> + <zone name="right/America/Argentina/Buenos_Aires" value="ART3" /> + <zone name="right/America/Argentina/Catamarca" value="ART3" /> + <zone name="right/America/Argentina/ComodRivadavia" value="ART3" /> + <zone name="right/America/Argentina/Cordoba" value="ART3" /> + <zone name="right/America/Argentina/Jujuy" value="ART3" /> + <zone name="right/America/Argentina/La_Rioja" value="ART3" /> + <zone name="right/America/Argentina/Mendoza" value="ART3" /> + <zone name="right/America/Argentina/Rio_Gallegos" value="ART3" /> + <zone name="right/America/Argentina/Salta" value="ART3" /> + <zone name="right/America/Argentina/San_Juan" value="ART3" /> + <zone name="right/America/Argentina/San_Luis" value="ART3" /> + <zone name="right/America/Argentina/Tucuman" value="ART3" /> + <zone name="right/America/Argentina/Ushuaia" value="ART3" /> + <zone name="right/America/Aruba" value="AST4" /> + <zone name="right/America/Asuncion" value="PYT4PYST,M10.1.0/0,M3.4.0/0" /> + <zone name="right/America/Atikokan" value="EST5" /> + <zone name="right/America/Atka" value="HST10HDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Bahia" value="BRT3" /> + <zone name="right/America/Bahia_Banderas" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="right/America/Barbados" value="AST4" /> + <zone name="right/America/Belem" value="BRT3" /> + <zone name="right/America/Belize" value="CST6" /> + <zone name="right/America/Blanc-Sablon" value="AST4" /> + <zone name="right/America/Boa_Vista" value="AMT4" /> + <zone name="right/America/Bogota" value="COT5" /> + <zone name="right/America/Boise" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Buenos_Aires" value="ART3" /> + <zone name="right/America/Cambridge_Bay" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Campo_Grande" value="AMT4AMST,M10.3.0/0,M2.3.0/0" /> + <zone name="right/America/Cancun" value="EST5" /> + <zone name="right/America/Caracas" value="VET4:30" /> + <zone name="right/America/Catamarca" value="ART3" /> + <zone name="right/America/Cayenne" value="GFT3" /> + <zone name="right/America/Cayman" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Chicago" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Chihuahua" value="MST7MDT,M4.1.0,M10.5.0" /> + <zone name="right/America/Coral_Harbour" value="EST5" /> + <zone name="right/America/Cordoba" value="ART3" /> + <zone name="right/America/Costa_Rica" value="CST6" /> + <zone name="right/America/Creston" value="MST7" /> + <zone name="right/America/Cuiaba" value="AMT4AMST,M10.3.0/0,M2.3.0/0" /> + <zone name="right/America/Curacao" value="AST4" /> + <zone name="right/America/Danmarkshavn" value="GMT0" /> + <zone name="right/America/Dawson" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Dawson_Creek" value="MST7" /> + <zone name="right/America/Denver" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Detroit" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Dominica" value="AST4" /> + <zone name="right/America/Edmonton" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Eirunepe" value="ACT5" /> + <zone name="right/America/El_Salvador" value="CST6" /> + <zone name="right/America/Ensenada" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Fort_Nelson" value="MST7" /> + <zone name="right/America/Fort_Wayne" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Fortaleza" value="BRT3" /> + <zone name="right/America/Glace_Bay" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="right/America/Godthab" value="WGST" /> + <zone name="right/America/Goose_Bay" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="right/America/Grand_Turk" value="AST4" /> + <zone name="right/America/Grenada" value="AST4" /> + <zone name="right/America/Guadeloupe" value="AST4" /> + <zone name="right/America/Guatemala" value="CST6" /> + <zone name="right/America/Guayaquil" value="ECT5" /> + <zone name="right/America/Guyana" value="GYT4" /> + <zone name="right/America/Halifax" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="right/America/Havana" value="CST5CDT,M3.2.0/0,M11.1.0/1" /> + <zone name="right/America/Hermosillo" value="MST7" /> + <zone name="right/America/Indiana/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indiana/Knox" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indiana/Marengo" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indiana/Petersburg" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indiana/Tell_City" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indiana/Vevay" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indiana/Vincennes" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indiana/Winamac" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Indianapolis" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Inuvik" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Iqaluit" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Jamaica" value="EST5" /> + <zone name="right/America/Jujuy" value="ART3" /> + <zone name="right/America/Juneau" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Kentucky/Louisville" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Kentucky/Monticello" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Knox_IN" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Kralendijk" value="AST4" /> + <zone name="right/America/La_Paz" value="BOT4" /> + <zone name="right/America/Lima" value="PET5" /> + <zone name="right/America/Los_Angeles" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Louisville" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Lower_Princes" value="AST4" /> + <zone name="right/America/Maceio" value="BRT3" /> + <zone name="right/America/Managua" value="CST6" /> + <zone name="right/America/Manaus" value="AMT4" /> + <zone name="right/America/Marigot" value="AST4" /> + <zone name="right/America/Martinique" value="AST4" /> + <zone name="right/America/Matamoros" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Mazatlan" value="MST7MDT,M4.1.0,M10.5.0" /> + <zone name="right/America/Mendoza" value="ART3" /> + <zone name="right/America/Menominee" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Merida" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="right/America/Metlakatla" value="PST8" /> + <zone name="right/America/Mexico_City" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="right/America/Miquelon" value="PMST3PMDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Moncton" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="right/America/Monterrey" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="right/America/Montevideo" value="UYT3" /> + <zone name="right/America/Montreal" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Montserrat" value="AST4" /> + <zone name="right/America/Nassau" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/New_York" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Nipigon" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Nome" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Noronha" value="FNT2" /> + <zone name="right/America/North_Dakota/Beulah" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/North_Dakota/Center" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/North_Dakota/New_Salem" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Ojinaga" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Panama" value="EST5" /> + <zone name="right/America/Pangnirtung" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Paramaribo" value="SRT3" /> + <zone name="right/America/Phoenix" value="MST7" /> + <zone name="right/America/Port-au-Prince" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Port_of_Spain" value="AST4" /> + <zone name="right/America/Porto_Acre" value="ACT5" /> + <zone name="right/America/Porto_Velho" value="AMT4" /> + <zone name="right/America/Puerto_Rico" value="AST4" /> + <zone name="right/America/Rainy_River" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Rankin_Inlet" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Recife" value="BRT3" /> + <zone name="right/America/Regina" value="CST6" /> + <zone name="right/America/Resolute" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Rio_Branco" value="ACT5" /> + <zone name="right/America/Rosario" value="ART3" /> + <zone name="right/America/Santa_Isabel" value="PST8PDT,M4.1.0,M10.5.0" /> + <zone name="right/America/Santarem" value="BRT3" /> + <zone name="right/America/Santiago" value="CLT3" /> + <zone name="right/America/Santo_Domingo" value="AST4" /> + <zone name="right/America/Sao_Paulo" value="BRT3BRST,M10.3.0/0,M2.3.0/0" /> + <zone name="right/America/Scoresbysund" value="EGT1EGST,M3.5.0/0,M10.5.0/1" /> + <zone name="right/America/Shiprock" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Sitka" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="right/America/St_Barthelemy" value="AST4" /> + <zone name="right/America/St_Johns" value="NST3:30NDT,M3.2.0,M11.1.0" /> + <zone name="right/America/St_Kitts" value="AST4" /> + <zone name="right/America/St_Lucia" value="AST4" /> + <zone name="right/America/St_Thomas" value="AST4" /> + <zone name="right/America/St_Vincent" value="AST4" /> + <zone name="right/America/Swift_Current" value="CST6" /> + <zone name="right/America/Tegucigalpa" value="CST6" /> + <zone name="right/America/Thule" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="right/America/Thunder_Bay" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Tijuana" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Toronto" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Tortola" value="AST4" /> + <zone name="right/America/Vancouver" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Virgin" value="AST4" /> + <zone name="right/America/Whitehorse" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Winnipeg" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Yakutat" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="right/America/Yellowknife" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/Antarctica/Casey" value="AWST-8" /> + <zone name="right/Antarctica/Davis" value="DAVT-7" /> + <zone name="right/Antarctica/DumontDUrville" value="DDUT-10" /> + <zone name="right/Antarctica/Macquarie" value="MIST-11" /> + <zone name="right/Antarctica/Mawson" value="MAWT-5" /> + <zone name="right/Antarctica/McMurdo" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="right/Antarctica/Palmer" value="CLT3" /> + <zone name="right/Antarctica/Rothera" value="ROTT3" /> + <zone name="right/Antarctica/South_Pole" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="right/Antarctica/Syowa" value="SYOT-3" /> + <zone name="right/Antarctica/Troll" value="UTC0CEST-2,M3.5.0/1,M10.5.0/3" /> + <zone name="right/Antarctica/Vostok" value="VOST-6" /> + <zone name="right/Arctic/Longyearbyen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Asia/Aden" value="AST-3" /> + <zone name="right/Asia/Almaty" value="ALMT-6" /> + <zone name="right/Asia/Amman" value="EEST" /> + <zone name="right/Asia/Anadyr" value="ANAT-12" /> + <zone name="right/Asia/Aqtau" value="AQTT-5" /> + <zone name="right/Asia/Aqtobe" value="AQTT-5" /> + <zone name="right/Asia/Ashgabat" value="TMT-5" /> + <zone name="right/Asia/Ashkhabad" value="TMT-5" /> + <zone name="right/Asia/Baghdad" value="AST-3" /> + <zone name="right/Asia/Bahrain" value="AST-3" /> + <zone name="right/Asia/Baku" value="AZT-4AZST,M3.5.0/4,M10.5.0/5" /> + <zone name="right/Asia/Bangkok" value="ICT-7" /> + <zone name="right/Asia/Beirut" value="EET-2EEST,M3.5.0/0,M10.5.0/0" /> + <zone name="right/Asia/Bishkek" value="KGT-6" /> + <zone name="right/Asia/Brunei" value="BNT-8" /> + <zone name="right/Asia/Calcutta" value="IST-5:30" /> + <zone name="right/Asia/Chita" value="IRKT-8" /> + <zone name="right/Asia/Choibalsan" value="CHOT-8CHOST,M3.5.6,M9.5.6/0" /> + <zone name="right/Asia/Chongqing" value="CST-8" /> + <zone name="right/Asia/Chungking" value="CST-8" /> + <zone name="right/Asia/Colombo" value="IST-5:30" /> + <zone name="right/Asia/Dacca" value="BDT-6" /> + <zone name="right/Asia/Damascus" value="EET-2EEST,M3.5.5/0,M10.5.5/0" /> + <zone name="right/Asia/Dhaka" value="BDT-6" /> + <zone name="right/Asia/Dili" value="TLT-9" /> + <zone name="right/Asia/Dubai" value="GST-4" /> + <zone name="right/Asia/Dushanbe" value="TJT-5" /> + <zone name="right/Asia/Gaza" value="EEST" /> + <zone name="right/Asia/Harbin" value="CST-8" /> + <zone name="right/Asia/Hebron" value="EEST" /> + <zone name="right/Asia/Ho_Chi_Minh" value="ICT-7" /> + <zone name="right/Asia/Hong_Kong" value="HKT-8" /> + <zone name="right/Asia/Hovd" value="HOVT-7HOVST,M3.5.6,M9.5.6/0" /> + <zone name="right/Asia/Irkutsk" value="IRKT-8" /> + <zone name="right/Asia/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Asia/Jakarta" value="WIB-7" /> + <zone name="right/Asia/Jayapura" value="WIT-9" /> + <zone name="right/Asia/Jerusalem" value="IDDT" /> + <zone name="right/Asia/Kabul" value="AFT-4:30" /> + <zone name="right/Asia/Kamchatka" value="PETT-12" /> + <zone name="right/Asia/Karachi" value="PKT-5" /> + <zone name="right/Asia/Kashgar" value="XJT-6" /> + <zone name="right/Asia/Kathmandu" value="NPT-5:45" /> + <zone name="right/Asia/Katmandu" value="NPT-5:45" /> + <zone name="right/Asia/Khandyga" value="YAKT-9" /> + <zone name="right/Asia/Kolkata" value="IST-5:30" /> + <zone name="right/Asia/Krasnoyarsk" value="KRAT-7" /> + <zone name="right/Asia/Kuala_Lumpur" value="MYT-8" /> + <zone name="right/Asia/Kuching" value="MYT-8" /> + <zone name="right/Asia/Kuwait" value="AST-3" /> + <zone name="right/Asia/Macao" value="CST-8" /> + <zone name="right/Asia/Macau" value="CST-8" /> + <zone name="right/Asia/Magadan" value="MAGT-10" /> + <zone name="right/Asia/Makassar" value="WITA-8" /> + <zone name="right/Asia/Manila" value="PHT-8" /> + <zone name="right/Asia/Muscat" value="GST-4" /> + <zone name="right/Asia/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Asia/Novokuznetsk" value="KRAT-7" /> + <zone name="right/Asia/Novosibirsk" value="NOVT-6" /> + <zone name="right/Asia/Omsk" value="OMST-6" /> + <zone name="right/Asia/Oral" value="ORAT-5" /> + <zone name="right/Asia/Phnom_Penh" value="ICT-7" /> + <zone name="right/Asia/Pontianak" value="WIB-7" /> + <zone name="right/Asia/Pyongyang" value="KST-8:30" /> + <zone name="right/Asia/Qatar" value="AST-3" /> + <zone name="right/Asia/Qyzylorda" value="QYZT-6" /> + <zone name="right/Asia/Rangoon" value="MMT-6:30" /> + <zone name="right/Asia/Riyadh" value="AST-3" /> + <zone name="right/Asia/Saigon" value="ICT-7" /> + <zone name="right/Asia/Sakhalin" value="SAKT-10" /> + <zone name="right/Asia/Samarkand" value="UZT-5" /> + <zone name="right/Asia/Seoul" value="KST-9" /> + <zone name="right/Asia/Shanghai" value="CST-8" /> + <zone name="right/Asia/Singapore" value="SGT-8" /> + <zone name="right/Asia/Srednekolymsk" value="SRET-11" /> + <zone name="right/Asia/Taipei" value="CST-8" /> + <zone name="right/Asia/Tashkent" value="UZT-5" /> + <zone name="right/Asia/Tbilisi" value="GET-4" /> + <zone name="right/Asia/Tehran" value="IRDT" /> + <zone name="right/Asia/Tel_Aviv" value="IDDT" /> + <zone name="right/Asia/Thimbu" value="BTT-6" /> + <zone name="right/Asia/Thimphu" value="BTT-6" /> + <zone name="right/Asia/Tokyo" value="JST-9" /> + <zone name="right/Asia/Ujung_Pandang" value="WITA-8" /> + <zone name="right/Asia/Ulaanbaatar" value="ULAT-8ULAST,M3.5.6,M9.5.6/0" /> + <zone name="right/Asia/Ulan_Bator" value="ULAT-8ULAST,M3.5.6,M9.5.6/0" /> + <zone name="right/Asia/Urumqi" value="XJT-6" /> + <zone name="right/Asia/Ust-Nera" value="VLAT-10" /> + <zone name="right/Asia/Vientiane" value="ICT-7" /> + <zone name="right/Asia/Vladivostok" value="VLAT-10" /> + <zone name="right/Asia/Yakutsk" value="YAKT-9" /> + <zone name="right/Asia/Yekaterinburg" value="YEKT-5" /> + <zone name="right/Asia/Yerevan" value="AMT-4" /> + <zone name="right/Atlantic/Azores" value="AZOT1AZOST,M3.5.0/0,M10.5.0/1" /> + <zone name="right/Atlantic/Bermuda" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="right/Atlantic/Canary" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="right/Atlantic/Cape_Verde" value="CVT1" /> + <zone name="right/Atlantic/Faeroe" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="right/Atlantic/Faroe" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="right/Atlantic/Jan_Mayen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Atlantic/Madeira" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="right/Atlantic/Reykjavik" value="GMT0" /> + <zone name="right/Atlantic/South_Georgia" value="GST2" /> + <zone name="right/Atlantic/St_Helena" value="GMT0" /> + <zone name="right/Atlantic/Stanley" value="FKST3" /> + <zone name="right/Australia/ACT" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Adelaide" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Brisbane" value="AEST-10" /> + <zone name="right/Australia/Broken_Hill" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Canberra" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Currie" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Darwin" value="ACST-9:30" /> + <zone name="right/Australia/Eucla" value="ACWST-8:45" /> + <zone name="right/Australia/Hobart" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/LHI" value="LHST-10:30LHDT-11,M10.1.0,M4.1.0" /> + <zone name="right/Australia/Lindeman" value="AEST-10" /> + <zone name="right/Australia/Lord_Howe" value="LHST-10:30LHDT-11,M10.1.0,M4.1.0" /> + <zone name="right/Australia/Melbourne" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/NSW" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/North" value="ACST-9:30" /> + <zone name="right/Australia/Perth" value="AWST-8" /> + <zone name="right/Australia/Queensland" value="AEST-10" /> + <zone name="right/Australia/South" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Sydney" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Tasmania" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/Victoria" value="AEST-10AEDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Australia/West" value="AWST-8" /> + <zone name="right/Australia/Yancowinna" value="ACST-9:30ACDT,M10.1.0,M4.1.0/3" /> + <zone name="right/Brazil/Acre" value="ACT5" /> + <zone name="right/Brazil/DeNoronha" value="FNT2" /> + <zone name="right/Brazil/East" value="BRT3BRST,M10.3.0/0,M2.3.0/0" /> + <zone name="right/Brazil/West" value="AMT4" /> + <zone name="right/CET" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/CST6CDT" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/Canada/Atlantic" value="AST4ADT,M3.2.0,M11.1.0" /> + <zone name="right/Canada/Central" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/Canada/East-Saskatchewan" value="CST6" /> + <zone name="right/Canada/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/Canada/Mountain" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/Canada/Newfoundland" value="NST3:30NDT,M3.2.0,M11.1.0" /> + <zone name="right/Canada/Pacific" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/Canada/Saskatchewan" value="CST6" /> + <zone name="right/Canada/Yukon" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/Chile/Continental" value="CLT3" /> + <zone name="right/Chile/EasterIsland" value="EAST5" /> + <zone name="right/Cuba" value="CST5CDT,M3.2.0/0,M11.1.0/1" /> + <zone name="right/EET" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/EST" value="EST5" /> + <zone name="right/EST5EDT" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/Egypt" value="EET-2" /> + <zone name="right/Eire" value="GMT0IST,M3.5.0/1,M10.5.0" /> + <zone name="right/Etc/GMT" value="GMT0" /> + <zone name="right/Etc/GMT+0" value="GMT0" /> + <zone name="right/Etc/GMT+1" value="<GMT+1>1" /> + <zone name="right/Etc/GMT+10" value="<GMT+10>10" /> + <zone name="right/Etc/GMT+11" value="<GMT+11>11" /> + <zone name="right/Etc/GMT+12" value="<GMT+12>12" /> + <zone name="right/Etc/GMT+2" value="<GMT+2>2" /> + <zone name="right/Etc/GMT+3" value="<GMT+3>3" /> + <zone name="right/Etc/GMT+4" value="<GMT+4>4" /> + <zone name="right/Etc/GMT+5" value="<GMT+5>5" /> + <zone name="right/Etc/GMT+6" value="<GMT+6>6" /> + <zone name="right/Etc/GMT+7" value="<GMT+7>7" /> + <zone name="right/Etc/GMT+8" value="<GMT+8>8" /> + <zone name="right/Etc/GMT+9" value="<GMT+9>9" /> + <zone name="right/Etc/GMT-0" value="GMT0" /> + <zone name="right/Etc/GMT-1" value="<GMT-1>-1" /> + <zone name="right/Etc/GMT-10" value="<GMT-10>-10" /> + <zone name="right/Etc/GMT-11" value="<GMT-11>-11" /> + <zone name="right/Etc/GMT-12" value="<GMT-12>-12" /> + <zone name="right/Etc/GMT-13" value="<GMT-13>-13" /> + <zone name="right/Etc/GMT-14" value="<GMT-14>-14" /> + <zone name="right/Etc/GMT-2" value="<GMT-2>-2" /> + <zone name="right/Etc/GMT-3" value="<GMT-3>-3" /> + <zone name="right/Etc/GMT-4" value="<GMT-4>-4" /> + <zone name="right/Etc/GMT-5" value="<GMT-5>-5" /> + <zone name="right/Etc/GMT-6" value="<GMT-6>-6" /> + <zone name="right/Etc/GMT-7" value="<GMT-7>-7" /> + <zone name="right/Etc/GMT-8" value="<GMT-8>-8" /> + <zone name="right/Etc/GMT-9" value="<GMT-9>-9" /> + <zone name="right/Etc/GMT0" value="GMT0" /> + <zone name="right/Etc/Greenwich" value="GMT0" /> + <zone name="right/Etc/UCT" value="UCT0" /> + <zone name="right/Etc/UTC" value="UTC0" /> + <zone name="right/Etc/Universal" value="UTC0" /> + <zone name="right/Etc/Zulu" value="UTC0" /> + <zone name="right/Europe/Amsterdam" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Andorra" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Athens" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Belfast" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="right/Europe/Belgrade" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Berlin" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Bratislava" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Brussels" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Bucharest" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Budapest" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Busingen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Chisinau" value="EET-2EEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Copenhagen" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Dublin" value="GMT0IST,M3.5.0/1,M10.5.0" /> + <zone name="right/Europe/Gibraltar" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Guernsey" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="right/Europe/Helsinki" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Isle_of_Man" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="right/Europe/Istanbul" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Jersey" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="right/Europe/Kaliningrad" value="EET-2" /> + <zone name="right/Europe/Kiev" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Lisbon" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="right/Europe/Ljubljana" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/London" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="right/Europe/Luxembourg" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Madrid" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Malta" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Mariehamn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Minsk" value="MSK-3" /> + <zone name="right/Europe/Monaco" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Moscow" value="MSK-3" /> + <zone name="right/Europe/Nicosia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Oslo" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Paris" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Podgorica" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Prague" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Riga" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Rome" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Samara" value="SAMT-4" /> + <zone name="right/Europe/San_Marino" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Sarajevo" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Simferopol" value="MSK-3" /> + <zone name="right/Europe/Skopje" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Sofia" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Stockholm" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Tallinn" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Tirane" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Tiraspol" value="EET-2EEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Uzhgorod" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Vaduz" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Vatican" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Vienna" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Vilnius" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Volgograd" value="MSK-3" /> + <zone name="right/Europe/Warsaw" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Zagreb" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Europe/Zaporozhye" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/Europe/Zurich" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/GB" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="right/GB-Eire" value="GMT0BST,M3.5.0/1,M10.5.0" /> + <zone name="right/GMT" value="GMT0" /> + <zone name="right/GMT+0" value="GMT0" /> + <zone name="right/GMT-0" value="GMT0" /> + <zone name="right/GMT0" value="GMT0" /> + <zone name="right/Greenwich" value="GMT0" /> + <zone name="right/HST" value="HST10" /> + <zone name="right/Hongkong" value="HKT-8" /> + <zone name="right/Iceland" value="GMT0" /> + <zone name="right/Indian/Antananarivo" value="EAT-3" /> + <zone name="right/Indian/Chagos" value="IOT-6" /> + <zone name="right/Indian/Christmas" value="CXT-7" /> + <zone name="right/Indian/Cocos" value="CCT-6:30" /> + <zone name="right/Indian/Comoro" value="EAT-3" /> + <zone name="right/Indian/Kerguelen" value="TFT-5" /> + <zone name="right/Indian/Mahe" value="SCT-4" /> + <zone name="right/Indian/Maldives" value="MVT-5" /> + <zone name="right/Indian/Mauritius" value="MUT-4" /> + <zone name="right/Indian/Mayotte" value="EAT-3" /> + <zone name="right/Indian/Reunion" value="RET-4" /> + <zone name="right/Iran" value="IRDT" /> + <zone name="right/Israel" value="IDDT" /> + <zone name="right/Jamaica" value="EST5" /> + <zone name="right/Japan" value="JST-9" /> + <zone name="right/Kwajalein" value="MHT-12" /> + <zone name="right/Libya" value="EET-2" /> + <zone name="right/MET" value="MET-1MEST,M3.5.0,M10.5.0/3" /> + <zone name="right/MST" value="MST7" /> + <zone name="right/MST7MDT" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/Mexico/BajaNorte" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/Mexico/BajaSur" value="MST7MDT,M4.1.0,M10.5.0" /> + <zone name="right/Mexico/General" value="CST6CDT,M4.1.0,M10.5.0" /> + <zone name="right/NZ" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="right/NZ-CHAT" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" /> + <zone name="right/Navajo" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/PRC" value="CST-8" /> + <zone name="right/PST8PDT" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/Pacific/Apia" value="WSST-13WSDT,M9.5.0/3,M4.1.0/4" /> + <zone name="right/Pacific/Auckland" value="NZST-12NZDT,M9.5.0,M4.1.0/3" /> + <zone name="right/Pacific/Bougainville" value="BST-11" /> + <zone name="right/Pacific/Chatham" value="CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45" /> + <zone name="right/Pacific/Chuuk" value="CHUT-10" /> + <zone name="right/Pacific/Easter" value="EAST5" /> + <zone name="right/Pacific/Efate" value="VUT-11" /> + <zone name="right/Pacific/Enderbury" value="PHOT-13" /> + <zone name="right/Pacific/Fakaofo" value="TKT-13" /> + <zone name="right/Pacific/Fiji" value="FJT-12FJST,M11.1.0,M1.3.0/3" /> + <zone name="right/Pacific/Funafuti" value="TVT-12" /> + <zone name="right/Pacific/Galapagos" value="GALT6" /> + <zone name="right/Pacific/Gambier" value="GAMT9" /> + <zone name="right/Pacific/Guadalcanal" value="SBT-11" /> + <zone name="right/Pacific/Guam" value="ChST-10" /> + <zone name="right/Pacific/Honolulu" value="HST10" /> + <zone name="right/Pacific/Johnston" value="HST10" /> + <zone name="right/Pacific/Kiritimati" value="LINT-14" /> + <zone name="right/Pacific/Kosrae" value="KOST-11" /> + <zone name="right/Pacific/Kwajalein" value="MHT-12" /> + <zone name="right/Pacific/Majuro" value="MHT-12" /> + <zone name="right/Pacific/Marquesas" value="MART9:30" /> + <zone name="right/Pacific/Midway" value="SST11" /> + <zone name="right/Pacific/Nauru" value="NRT-12" /> + <zone name="right/Pacific/Niue" value="NUT11" /> + <zone name="right/Pacific/Norfolk" value="NFT-11" /> + <zone name="right/Pacific/Noumea" value="NCT-11" /> + <zone name="right/Pacific/Pago_Pago" value="SST11" /> + <zone name="right/Pacific/Palau" value="PWT-9" /> + <zone name="right/Pacific/Pitcairn" value="PST8" /> + <zone name="right/Pacific/Pohnpei" value="PONT-11" /> + <zone name="right/Pacific/Ponape" value="PONT-11" /> + <zone name="right/Pacific/Port_Moresby" value="PGT-10" /> + <zone name="right/Pacific/Rarotonga" value="CKT10" /> + <zone name="right/Pacific/Saipan" value="ChST-10" /> + <zone name="right/Pacific/Samoa" value="SST11" /> + <zone name="right/Pacific/Tahiti" value="TAHT10" /> + <zone name="right/Pacific/Tarawa" value="GILT-12" /> + <zone name="right/Pacific/Tongatapu" value="TOT-13" /> + <zone name="right/Pacific/Truk" value="CHUT-10" /> + <zone name="right/Pacific/Wake" value="WAKT-12" /> + <zone name="right/Pacific/Wallis" value="WFT-12" /> + <zone name="right/Pacific/Yap" value="CHUT-10" /> + <zone name="right/Poland" value="CET-1CEST,M3.5.0,M10.5.0/3" /> + <zone name="right/Portugal" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="right/ROC" value="CST-8" /> + <zone name="right/ROK" value="KST-9" /> + <zone name="right/Singapore" value="SGT-8" /> + <zone name="right/Turkey" value="EET-2EEST,M3.5.0/3,M10.5.0/4" /> + <zone name="right/UCT" value="UCT0" /> + <zone name="right/US/Alaska" value="AKST9AKDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Aleutian" value="HST10HDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Arizona" value="MST7" /> + <zone name="right/US/Central" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/US/East-Indiana" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Eastern" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Hawaii" value="HST10" /> + <zone name="right/US/Indiana-Starke" value="CST6CDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Michigan" value="EST5EDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Mountain" value="MST7MDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Pacific" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Pacific-New" value="PST8PDT,M3.2.0,M11.1.0" /> + <zone name="right/US/Samoa" value="SST11" /> + <zone name="right/UTC" value="UTC0" /> + <zone name="right/Universal" value="UTC0" /> + <zone name="right/W-SU" value="MSK-3" /> + <zone name="right/WET" value="WET0WEST,M3.5.0/1,M10.5.0" /> + <zone name="right/Zulu" value="UTC0" /> </timezones> </configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/translate.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/translate.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..453ef3afbf996a6c66e39052053b0fa3e9ba4ad4 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/translate.conf.xml @@ -0,0 +1,28 @@ +<include> + <configuration name="translate.conf" description="Number Translation Rules"> + <profiles> + <profile name="US"> + <rule regex="^\+(\d+)$" replace="$1"/> + <rule regex="^(1[2-9]\d{2}[2-9]\d{6})$" replace="$1"/> + <rule regex="^([2-9]\d{2}[2-9]\d{6})$" replace="1$1"/> + <rule regex="^([2-9]\d{6})$" replace="1${areacode}$1"/> + <rule regex="^011(\d+)$" replace="$1"/> + </profile> + <profile name="GB"> + <rule regex="^\+(\d+)$" replace="$1"/> + <rule regex="^$" replace="$1"/> + </profile> + <profile name="HK"> + <rule regex="\+(\d+)$" replace="$1"/> + <rule regex="^(852\d{8})$" replace="$1"/> + <rule regex="^(\d{8})$" replace="852$1"/> + </profile> + </profiles> + <!-- + <profile name=""> + <rule regex="^\+(\d+)$" replace="$1"/> + <rule regex="^$" replace="$1"/> + </profile> + --> + </configuration> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/tts_commandline.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/tts_commandline.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5da4aba55ae602f835e9e2d4547ba2f8c685425 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/tts_commandline.conf.xml @@ -0,0 +1,15 @@ +<configuration name="tts_commandline.conf" description="TextToSpeech Commandline configuration"> + <settings> + <!-- + Some variables will be replaced : + ${text}: input text (quoted) + ${rate}: sample rate (example: 8000) + ${voice}: voice_name passed to TTS(quoted) + ${file}: output file (quoted, including .wav extension) + + Example commands can be found at: + https://freeswitch.org/confluence/display/FREESWITCH/mod_tts_commandline#mod_tts_commandline-Examplecommands + --> + <param name="command" value="echo ${text} | text2wave -f ${rate} > ${file}"/> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/unicall.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/unicall.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..eeaa0782f764af99e908c9afa9a7bfc075c375a0 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/unicall.conf.xml @@ -0,0 +1,25 @@ +<configuration name="unicall.conf" description="Unicall Configuration"> + <settings> + <param name="context" value="default"/> + <param name="dialplan" value="XML"/> + <param name="suppress-dtmf-tone" value="true"/> + </settings> + <spans> + <span id="1"> + <param name="protocol-class" value="mfcr2"/> + <param name="protocol-variant" value="ar"/> + <param name="protocol-end" value="peer"/> + <param name="outgoing-allowed" value="true"/> + <param name="dialplan" value="XML"/> + <param name="context" value="default"/> + </span> + <span id="2"> + <param name="protocol-class" value="mfcr2"/> + <param name="protocol-variant" value="ar"/> + <param name="protocol-end" value="peer"/> + <param name="outgoing-allowed" value="true"/> + <param name="dialplan" value="XML"/> + <param name="context" value="default"/> + </span> + </spans> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/unimrcp.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/unimrcp.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..45dda798a1f77b0221b8c64b0dd4aa1d2257b197 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/unimrcp.conf.xml @@ -0,0 +1,23 @@ +<configuration name="unimrcp.conf" description="UniMRCP Client"> + <settings> + <!-- UniMRCP profile to use for TTS --> + <param name="default-tts-profile" value="voxeo-prophecy8.0-mrcp1"/> + <!-- UniMRCP profile to use for ASR --> + <param name="default-asr-profile" value="voxeo-prophecy8.0-mrcp1"/> + <!-- UniMRCP logging level to appear in freeswitch.log. Options are: + EMERGENCY|ALERT|CRITICAL|ERROR|WARNING|NOTICE|INFO|DEBUG --> + <param name="log-level" value="DEBUG"/> + <!-- Enable events for profile creation, open, and close --> + <param name="enable-profile-events" value="false"/> + + <param name="max-connection-count" value="100"/> + <param name="offer-new-connection" value="1"/> + <param name="request-timeout" value="3000"/> + </settings> + + <profiles> + <X-PRE-PROCESS cmd="include" data="../mrcp_profiles/*.xml"/> + </profiles> + +</configuration> + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/v8.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/v8.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f57fff7419ac72d7e7e02d39d418c1830a11bd7 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/v8.conf.xml @@ -0,0 +1,15 @@ +<configuration name="v8.conf" description="Google V8 JavaScript Plug-Ins"> + <settings> + <!-- <param name="script-caching" value="enabled"/> --> + <!-- <param name="cache-expires-sec" value="3600"/> --> + <!-- <param name="startup-script" value="startup1.js"/> --> + <!-- <param name="startup-script" value="startup2.js"/> --> + <!-- <param name="xml-handler-script" value="directory.js"/> --> + <!-- <param name="xml-handler-bindings" value="directory"/> --> + <!-- <hook event="CUSTOM" subclass="sofia::register" script="catch-event.js"/> --> + <!-- <hook event="CHANNEL_HANGUP" script="hangup-event.js"/> --> + </settings> + <modules> + <!-- <load module="mod_v8_skel"/> --> + </modules> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/verto.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/verto.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..899aaeb6c2de50acdc722eeb40dc41bbe337f131 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/verto.conf.xml @@ -0,0 +1,62 @@ +<configuration name="verto.conf" description="HTML5 Verto Endpoint"> + + <settings> + <param name="debug" value="0"/> + <!-- seconds to wait before hanging up a disconnected channel --> + <!-- <param name="detach-timeout-sec" value="120"/> --> + <!-- enable broadcasting all FreeSWITCH events in Verto --> + <!-- <param name="enable-fs-events" value="false"/> --> + <!-- enable broadcasting FreeSWITCH presence events in Verto --> + <!-- <param name="enable-presence" value="true"/> --> + </settings> + + <profiles> + <profile name="default-v4"> + <param name="bind-local" value="$${local_ip_v4}:8081"/> + <param name="bind-local" value="$${local_ip_v4}: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_v4}"/> + <param name="ext-rtp-ip" value="$${external_rtp_ip}"/> + <param name="local-network" value="localnet.auto"/> + <param name="outbound-codec-string" value="opus,h264,vp8"/> + <param name="inbound-codec-string" value="opus,h264,vp8"/> + + <param name="apply-candidate-acl" value="localnet.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_v4.auto"/> + <param name="timer-name" value="soft"/> + + </profile> + + <profile name="default-v6"> + <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="rtp-ip" value="$${local_ip_v6}"/> + <!-- <param name="ext-rtp-ip" value=""/> --> + <param name="outbound-codec-string" value="opus,h264,vp8"/> + <param name="inbound-codec-string" value="opus,h264,vp8"/> + + <param name="apply-candidate-acl" value="wan_v6.auto"/> + <param name="apply-candidate-acl" value="rfc1918.auto"/> + <param name="apply-candidate-acl" value="any_v6.auto"/> + <param name="apply-candidate-acl" value="wan_v4.auto"/> + <param name="apply-candidate-acl" value="any_v4.auto"/> + <param name="timer-name" value="soft"/> + + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/voicemail.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/voicemail.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..33d5a977602c3bf198f6ea0e166dc374813a82e4 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/voicemail.conf.xml @@ -0,0 +1,74 @@ +<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> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/voicemail_ivr.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/voicemail_ivr.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..1cdf3c222ec7a1c3802ebc2aa3c8d2ef504c1e62 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/voicemail_ivr.conf.xml @@ -0,0 +1,211 @@ +<configuration name="voicemail_ivr.conf" description="Voicemail IVR"> +<profiles> + <profile name="default"> + <settings> + <param name="IVR-Maximum-Attempts" value="3" /> + <param name="IVR-Entry-Timeout" value="3000" /> + <param name="Record-Format" value="wav" /> + <!--<param name="Record-Sample-Rate" value="8000" />--> + <param name="Record-Silence-Hits" value="4" /> + <param name="Record-Silence-Threshold" value="200" /> + <param name="Record-Maximum-Length" value="30" /> + <!--<param name="Record-Minimum-Length" value="3" />--> + <param name="Exit-Purge" value="true" /> + <param name="Password-Mask" value="XXX." /> + <param name="User-Mask" value="X." /> + + </settings> + <apis> + <api name="auth_login" value="vm_fsdb_auth_login" /> + <api name="msg_list" value="vm_fsdb_msg_list" /> + <api name="msg_count" value="vm_fsdb_msg_count" /> + <api name="msg_delete" value="vm_fsdb_msg_delete" /> + <api name="msg_undelete" value="vm_fsdb_msg_undelete" /> + <api name="msg_save" value="vm_fsdb_msg_save" /> + <api name="msg_purge" value="vm_fsdb_msg_purge" /> + <api name="msg_get" value="vm_fsdb_msg_get" /> + <api name="msg_forward" value="vm_fsdb_msg_forward" /> + <api name="pref_greeting_set" value="vm_fsdb_pref_greeting_set" /> + <api name="pref_greeting_get" value="vm_fsdb_pref_greeting_get" /> + <api name="pref_recname_set" value="vm_fsdb_pref_recname_set" /> + <api name="pref_password_set" value="vm_fsdb_pref_password_set" /> + </apis> + <menus> + <menu name="std_authenticate"> + <phrases> + <phrase name="fail_auth" value="fail_auth@voicemail_ivr" /> + </phrases> + <keys> + </keys> + </menu> + + <menu name="std_authenticate_ask_user"> + <phrases> + <phrase name="instructions" value="enter_id@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" /> + </keys> + </menu> + + <menu name="std_authenticate_ask_password"> + <phrases> + <phrase name="instructions" value="enter_pass@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" /> + </keys> + </menu> + + <menu name="std_main_menu"> + <settings> + <param name="Action-On-New-Message" value="new_msg:std_navigator" /> + </settings> + <phrases> + <phrase name="msg_count" value="message_count@voicemail_ivr" /> + <phrase name="say_date" value="say_date_event@voicemail_ivr" /> + <phrase name="say_msg_number" value="say_message_number@voicemail_ivr" /> + <phrase name="menu_options" value="menu@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="1" action="new_msg:std_navigator" variable="VM-Key-Play-New-Messages" /> + <key dtmf="2" action="saved_msg:std_navigator" variable="VM-Key-Play-Saved-Messages" /> + <key dtmf="5" action="menu:std_preference" variable="VM-Key-Config-Menu"/> + <key dtmf="#" action="return" variable="VM-Key-Terminator" /> + </keys> + </menu> + + <menu name="std_navigator"> + <settings> + <!--<param name="Nav-Action-On-Delete" value="next_msg" />--> + </settings> + <phrases> + <phrase name="msg_count" value="message_count@voicemail_ivr" /> + <phrase name="say_date" value="say_date_event@voicemail_ivr" /> + <phrase name="say_msg_number" value="say_message_number@voicemail_ivr" /> + <phrase name="menu_options" value="listen_file_check@voicemail_ivr" /> + <phrase name="ack" value="ack@voicemail_ivr" /> + <phrase name="play_message" value="play_message@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="1" action="skip_intro" variable="VM-Key-Main-Listen-File" /> + <key dtmf="6" action="next_msg" variable="VM-Key-Main-Next-Msg" /> + <key dtmf="4" action="prev_msg" /> + <key dtmf="7" action="delete_msg" variable="VM-Key-Main-Delete-File" /> <!-- Same key for undelete if it already deleted --> + <key dtmf="8" action="menu:std_forward" variable="VM-Key-Main-Forward" /> + <key dtmf="2" action="save_msg" variable="VM-Key-Main-Save-File" /> + <key dtmf="5" action="callback" variable="VM-Key-Main-Callback" /> + <key dtmf="#" action="return" /> <!-- TODO Might Conflict with future fast-forward --> + </keys> + </menu> + + <menu name="std_preference"> + <phrases> + <phrase name="menu_options" value="config_menu@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="1" action="menu:std_record_greeting_with_slot" variable="VM-Key-Record-Greeting" /> + <key dtmf="2" action="menu:std_select_greeting_slot" variable="VM-Key-Choose-Greeting" /> + <key dtmf="3" action="menu:std_record_name" variable="VM-Key-Record-Name" /> + <key dtmf="6" action="menu:std_set_password" variable="VM-Key-Change-Password" /> + <key dtmf="0" action="return" variable="VM-Key-Main-Menu" /> + </keys> + </menu> + + <menu name="std_record_greeting"> + <phrases> + <phrase name="instructions" value="record_greeting@voicemail_ivr" /> + <phrase name="play_recording" value="play_recording@voicemail_ivr" /> + <phrase name="menu_options" value="record_file_check@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="1" action="listen" variable="VM-Key-Listen-File" /> + <key dtmf="2" action="save" variable="VM-Key-Save-File" /> + <key dtmf="4" action="rerecord" variable="VM-Key-ReRecord-File" /> + <key dtmf="#" action="skip_instruction" /> + </keys> + </menu> + + + <menu name="std_record_name"> + <phrases> + <phrase name="instructions" value="record_name@voicemail_ivr" /> + <phrase name="play_recording" value="play_recording@voicemail_ivr" /> + <phrase name="menu_options" value="record_file_check@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="1" action="listen" variable="VM-Key-Listen-File" /> + <key dtmf="2" action="save" variable="VM-Key-Save-File" /> + <key dtmf="4" action="rerecord" variable="VM-Key-ReRecord-File" /> + <key dtmf="#" action="skip_instruction" /> + </keys> + </menu> + + <menu name="std_record_message"> + <phrases> + <phrase name="instructions" value="record_message@voicemail_ivr" /> + <phrase name="play_recording" value="play_recording@voicemail_ivr" /> + <phrase name="menu_options" value="record_file_check@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="1" action="listen" variable="VM-Key-Listen-File" /> + <key dtmf="2" action="save" variable="VM-Key-Save-File" /> + <key dtmf="4" action="rerecord" variable="VM-Key-ReRecord-File" /> + <key dtmf="#" action="skip_instruction" /> + </keys> + </menu> + + <menu name="std_forward_ask_prepend"> + <phrases> + <phrase name="menu_options" value="forward_ask_prepend@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="1" action="prepend" variable="VM-Key-Prepend" /> + <key dtmf="8" action="forward" variable="VM-Key-Forward" /> + <key dtmf="#" action="return" variable="VM-Key-Return" /> + </keys> + </menu> + + <menu name="std_forward_ask_extension"> + <phrases> + <phrase name="instructions" value="forward_ask_extension@voicemail_ivr" /> + <phrase name="ack" value="ack@voicemail_ivr" /> + <phrase name="invalid_extension" value="invalid_extension@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" /> + </keys> + </menu> + + <menu name="std_select_greeting_slot"> + <phrases> + <phrase name="instructions" value="choose_greeting@voicemail_ivr" /> + <phrase name="invalid_slot" value="choose_greeting_fail@voicemail_ivr" /> + <phrase name="selected_slot" value="greeting_selected@voicemail_ivr" /> + </phrases> + <keys> + </keys> + </menu> + + <menu name="std_record_greeting_with_slot"> + <phrases> + <phrase name="instructions" value="choose_greeting@voicemail_ivr" /> + </phrases> + <keys> + </keys> + </menu> + + <menu name="std_set_password"> + <phrases> + <phrase name="instructions" value="enter_pass@voicemail_ivr" /> + </phrases> + <keys> + <key dtmf="#" action="ivrengine:terminate_entry" variable="VM-Key-Terminator" /> + </keys> + </menu> + </menus> + </profile> +</profiles> +</configuration> + + diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/vpx.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/vpx.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee7549025da72219e283839a871be6778b36ec4e --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/vpx.conf.xml @@ -0,0 +1,237 @@ +<configuration name="vpx.conf" description="VPX Config"> + <settings> + <!-- <param name="debug" value="1"/> --> + + <!-- max bitrate the system support, truncate if over limit: bps string --> + <!-- <param name="max-bitrate" value="5mb"/> --> + + <!-- maximum rtp payload size before encryption: 500..1440 --> + <!-- <param name="rtp-slice-size" value="1200"/> --> + + <!-- minimum time to generate a new key frame in ms: 10..3000 /> --> + <!-- <param name="key-frame-min-freq" value="250"/> --> + + <!-- integer, or 'auto', or 'cpu[/<divisor>[/<max>]]' --> + <!-- <param name="dec-threads" value="cpu/2/4"/> --> + <!-- <param name="enc-threads" value="1"/> --> + </settings> + + <profiles> + <profile name="vp8"> + <!-- integer, or 'auto', or 'cpu[/<divisor>[/<max>]]' --> + <!-- <param name="dec-threads" value="cpu/2/4"/> --> + <!-- <param name="enc-threads" value="1"/> --> + + <!-- 0..3 --> + <!-- <param name="g-profile" value="2"/> --> + <!-- DEFAULT | PARTITIONS --> + <!-- <param name="g-error-resilient" value="PARTITIONS"/> --> + <!-- ONE_PASS, FIRST_PASS, LAST_PASS"/> --> + <!-- <param name="g-pass" value="ONE_PASS"/> --> + <!-- 0..25 --> + <!-- <param name="g-lag-in-frames" value="0"/> --> + <!-- 0..100 --> + <!-- <param name="rc-dropframe-thresh" value="0"/> --> + <!-- 0, 1 --> + <!-- <param name="rc-resize-allowed" value="1"/> --> + <!-- 0.. --> + <!-- <param name="rc-scaled-width" value="1"/> --> + <!-- 0.. --> + <!-- <param name="rc-scaled-height" value="1"/> --> + <!-- 0..100 --> + <!-- <param name="rc-resize-up-thresh" value="60"/> --> + <!-- 0..100 --> + <!-- <param name="rc-resize-down-thresh" value="30"/> --> + <!-- VBR, CBR, CQ, Q --> + <!-- <param name="rc-end-usage" value="CBR"/> --> + <!-- bps string --> + <!-- <param name="rc-target-bitrate" value="1mb"/> --> + <!-- 0..63 --> + <!-- <param name="rc-min-quantizer" value="0"/> --> + <!-- 0..63 --> + <!-- <param name="rc-max-quantizer" value="63"/> --> + <!-- 0..1000 --> + <!-- <param name="rc-undershoot-pct" value="100"/> --> + <!-- 0..1000 --> + <!-- <param name="rc-overshoot-pct" value="15"/> --> + <!-- 1.. --> + <!-- <param name="rc-buf-sz" value="5000"/> --> + <!-- 1.. --> + <!-- <param name="rc-buf-initial-sz" value="1000"/> --> + <!-- 1.. --> + <!-- <param name="rc-buf-optimal-sz" value="1000"/> --> + <!-- 0..100 --> + <!-- <param name="rc-2pass-vbr-bias-pct" value="50"/> --> + <!-- 1.. --> + <!-- <param name="rc-2pass-vbr-minsection-pct" value="0"/> --> + <!-- 1.. --> + <!-- <param name="rc-2pass-vbr-maxsection-pct" value="400"/> --> + <!-- AUTO, DISABLED --> + <!-- <param name="kf-mode" value="AUTO"/> --> + <!-- 0.. --> + <!-- <param name="kf-min-dist" value="0"/> --> + <!-- 0.. --> + <!-- <param name="kf-max-dist" value="360"/> --> + <!-- 0..5 --> + <!-- <param name="ss-number-layers" value="1"/> --> + <!-- 0..5 --> + <!-- <param name="ts-number-layers" value="1"/> --> + <!-- 0..16 --> + <!-- <param name="ts-periodicity" value="0"/> --> + <!-- 0..3 --> + <!-- <param name="temporal-layering-mode" value="0"/> --> + + <!-- params SET by codec_control --> + <!-- -16..16 --> + <!-- <param name="cpuused" value="-6"/> --> + <!-- 0..3, if cpu==1 then 0 else 3 --> + <!-- <param name="token-parts" value="3"/> --> + <!-- 0.. --> + <!-- <param name="static-thresh" value="100"/> --> + <!-- 0..6 --> + <!-- <param name="noise-sensitivity" value="1"/> --> + </profile> + + <profile name="vp9"> + <!-- integer, or 'auto', or 'cpu[/<divisor>[/<max>]]' --> + <!-- <param name="dec-threads" value="cpu/2/4"/> --> + <!-- <param name="enc-threads" value="1"/> --> + + <param name="g-profile" value="0"/> + <!-- DEFAULT | PARTITIONS --> + <!-- <param name="g-error-resilient" value="PARTITIONS"/> --> + <!-- ONE_PASS, FIRST_PASS, LAST_PASS"/> --> + <!-- <param name="g-pass" value="ONE_PASS"/> --> + <!-- 0..25 --> + <!-- <param name="g-lag-in-frames" value="0"/> --> + <!-- 0..100 --> + <!-- <param name="rc-dropframe-thresh" value="0"/> --> + <!-- 0, 1 --> + <!-- <param name="rc-resize-allowed" value="1"/> --> + + <!-- 0.. --> + <!-- <param name="rc-scaled-width" value="0"/> --> + <!-- 0.. --> + <!-- <param name="rc-scaled-height" value="0"/> --> + <!-- 0..100 --> + <!-- <param name="rc-resize-up-thresh" value="0"/> --> + <!-- 0..100 --> + <!-- <param name="rc-resize-down-thresh" value="0"/> --> + <!-- VBR, CBR, CQ, Q --> + <!-- <param name="rc-end-usage" value="CBR"/> --> + <!-- bps string --> + <!-- <param name="rc-target-bitrate" value="1mb"/> --> + <!-- 0..63 --> + <!-- <param name="rc-min-quantizer" value="0"/> --> + <!-- 0..63 --> + <!-- <param name="rc-max-quantizer" value="63"/> --> + <!-- 0..100 --> + <!-- <param name="rc-undershoot-pct" value="100"/> --> + <!-- 0..100 --> + <!-- <param name="rc-overshoot-pct" value="15"/> --> + <!-- 1.. --> + <!-- <param name="rc-buf-sz" value="5000"/> --> + <!-- 1.. --> + <!-- <param name="rc-buf-initial-sz" value="1000"/> --> + <!-- 1.. --> + <!-- <param name="rc-buf-optimal-sz" value="1000"/> --> + <!-- 0..100 --> + <!-- <param name="rc-2pass-vbr-bias-pct" value="50"/> --> + <!-- 1.. --> + <!-- <param name="rc-2pass-vbr-minsection-pct" value="0"/> --> + <!-- 1.. --> + <!-- <param name="rc-2pass-vbr-maxsection-pct" value="2000"/> --> + <!-- AUTO, DISABLED --> + <!-- <param name="kf-mode" value="AUTO"/> --> + <!-- 0.. --> + <!-- <param name="kf-min-dist" value="0"/> --> + <!-- 0.. --> + <!-- <param name="kf-max-dist" value="360"/> --> + <!-- 0..5 --> + <!-- <param name="ss-number-layers" value="1"/> --> + <!-- 0..5 --> + <!-- <param name="ts-number-layers" value="1"/> --> + <!-- 0..16 --> + <!-- <param name="ts-periodicity" value="1"/> --> + <!-- 0..3 --> + <!-- <param name="temporal-layering-mode" value="0"/> --> + + <!-- params SET by codec_control --> + <!-- 0, 1 --> + <!-- <param name="lossless" value="0"/> --> + <!-- -8..8 --> + <!-- <param name="cpuused" value="-8"/> --> + <!-- 0..3, if cpu==1 then 0 else 3 --> + <!-- <param name="token-parts" value="3"/> --> + <!-- 0.. --> + <!-- <param name="static-thresh" value="1000"/> --> + <!-- 0..6 --> + <!-- <param name="noise-sensitivity" value="0"/> --> + <!-- 0.. --> + <!-- <param name="max-intra-bitrate-pct" value="0"/> --> + <!-- DEFAULT, SCREEN --> + <!-- <param name="vp9e-tune-content" value="SCREEN"/> --> + </profile> + + <profile name="conference"> + <param name="dec-threads" value="cpu/2/4"/> + <param name="enc-threads" value="1"/> + <codecs> + <!-- profiles will be parsed at runtime + to overwrite this profile params if codec matches --> + <codec name="vp8" profile="vp8"/> + <!-- <codec name="vp8" profile="conference-vp8"/> --> + <codec name="vp9" profile="vp9"/> + </codecs> + </profile> + + <profile name="conference-vp8"> + <param name="dec-threads" value="cpu/2/4"/> + <param name="enc-threads" value="cpu/2/4"/> + <param name="g-profile" value="2"/> + <!-- DEFULT | PARTITIONS --> + <param name="g-error-resilient" value="PARTITIONS"/> + <!-- ONE_PASS, FIRST_PASS, LAST_PASS"/> --> + <!-- <param name="g-pass" value="ONE_PASS"/> --> + <!-- <param name="g-lag-in-frames" value="0"/> --> + <!-- <param name="rc-dropframe-thresh" value="0"/> --> + <!-- <param name="rc-resize-allowed" value="1"/> --> + <!-- <param name="rc-scaled-width" value="0"/> --> + <!-- <param name="rc-scaled-height" value="0"/> --> + <!-- <param name="rc-resize-up-thresh" value="0"/> --> + <!-- <param name="rc-resize-down-thresh" value="0"/> --> + <!-- VBR, CBR, CQ, Q --> + <param name="rc-end-usage" value="CBR"/> + <!-- bps --> + <param name="rc-target-bitrate" value="1mb"/> + <param name="rc-min-quantizer" value="0"/> + <param name="rc-max-quantizer" value="63"/> + <param name="rc-undershoot-pct" value="100"/> + <param name="rc-overshoot-pct" value="50"/> + <param name="rc-buf-sz" value="5000"/> + <param name="rc-buf-initial-sz" value="1000"/> + <param name="rc-buf-optimal-sz" value="1000"/> + <!-- <param name="rc-2pass-vbr-bias-pct" value="0"/> --> + <!-- <param name="rc-2pass-vbr-minsection-pct" value="0"/> --> + <!-- <param name="rc-2pass-vbr-maxsection-pct" value="0"/> --> + <!-- AUTO, DISABLED --> + <param name="kf-mode" value="AUTO"/> + <param name="kf-min-dist" value="0"/> + <param name="kf-max-dist" value="240"/> + <!-- <param name="ss-number-layers" value="0"/> --> + <!-- <param name="ts-number-layers" value="0"/> --> + <!-- <param name="ts-periodicity" value="0"/> --> + <!-- <param name="temporal-layering-mode" value="0"/> --> + + <!-- params SET by codec_control --> + <param name="lossless" value="0"/> + <!-- cpuused -16..16 --> + <param name="cpuused" value="-6"/> + <!-- cpu string or integer --> + <param name="token-parts" value="cpu/2/3"/> + <param name="static-thresh" value="100"/> + <param name="noise-sensitivity" value="1"/> + <!-- <param name="max-intra-bitrate-pct" value="0"/> --> + </profile> + </profiles> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_cdr.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_cdr.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..bdb20e63e0caa608fe80e210ecc9fa479f596b0e --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_cdr.conf.xml @@ -0,0 +1,71 @@ +<configuration name="xml_cdr.conf" description="XML CDR CURL logger"> + <settings> + <!-- the url to post to if blank web posting is disabled --> + <!-- <param name="url" value="http://localhost/cdr_curl/post.php"/> --> + + <!-- optional: credentials to send to web server --> + <!-- <param name="cred" value="user:pass"/> --> + + <!-- the total number of retries (not counting the first 'try') to post to webserver incase of failure --> + <!-- <param name="retries" value="2"/> --> + + <!-- delay between retries in seconds, default is 5 seconds --> + <!-- <param name="delay" value="1"/> --> + + <!-- Log via http and on disk, default is false --> + <!-- <param name="log-http-and-disk" value="true"/> --> + + <!-- optional: if not present we do not log every record to disk --> + <!-- either an absolute path, a relative path assuming ${prefix}/logs or a blank value will default to ${prefix}/logs/xml_cdr --> + <param name="log-dir" value=""/> + + <!-- optional: if not present we do log the b leg --> + <!-- true or false if we should create a cdr for the b leg of a call--> + <param name="log-b-leg" value="false"/> + + <!-- optional: if not present, all filenames are the uuid of the call --> + <!-- true or false if a leg files are prefixed "a_" --> + <param name="prefix-a-leg" value="true"/> + + <!-- encode the post data may be 'true' for url encoding, 'false' for no encoding, 'base64' for base64 encoding or 'textxml' for text/xml --> + <param name="encode" value="true"/> + + <!-- optional: set to true to disable Expect: 100-continue lighttpd requires this setting --> + <!--<param name="disable-100-continue" value="true"/>--> + + <!-- optional: full path to the error log dir for failed web posts if not specified its the same as log-dir --> + <!-- either an absolute path, a relative path assuming ${prefix}/logs or a blank or omitted value will default to ${prefix}/logs/xml_cdr --> + <!-- <param name="err-log-dir" value="$${temp_dir}"/> --> + + <!-- which auhtentification scheme to use. Supported values are: basic, digest, NTLM, GSS-NEGOTIATE or "any" for automatic detection --> + <!--<param name="auth-scheme" value="basic"/>--> + + <!-- optional: this will enable the CA root certificate check by libcurl to + verify that the certificate was issued by a major Certificate Authority. + note: default value is disabled. only enable if you want this! --> + <!--<param name="enable-cacert-check" value="true"/>--> + <!-- optional: verify that the server is actually the one listed in the cert --> + <!-- <param name="enable-ssl-verifyhost" value="true"/> --> + + <!-- optional: these options can be used to specify custom SSL certificates + to use for HTTPS communications. Either use both options or neither. + Specify your public key with 'ssl-cert-path' and the private key with + 'ssl-key-path'. If your private key has a password, specify it with + 'ssl-key-password'. --> + <!-- <param name="ssl-cert-path" value="$${certs_dir}/public_key.pem"/> --> + <!-- <param name="ssl-key-path" value="$${certs_dir}/private_key.pem"/> --> + <!-- <param name="ssl-key-password" value="MyPrivateKeyPassword"/> --> + + <!-- optional: use a custom CA certificate in PEM format to verify the peer + with. This is useful if you are acting as your own certificate authority. + note: only makes sense if used in combination with "enable-cacert-check." --> + <!-- <param name="ssl-cacert-file" value="$${certs_dir}/cacert.pem"/> --> + + <!-- optional: specify the SSL version to force HTTPS to use. Valid options are + "SSLv3" and "TLSv1". Otherwise libcurl will auto-negotiate the version. --> + <!-- <param name="ssl-version" value="TLSv1"/> --> + + <!-- optional: enables cookies and stores them in the specified file. --> + <!-- <param name="cookie-file" value="$${run_dir}/mod_xml_cdr-cookie.txt"/> --> + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_curl.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_curl.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..19214ee0652b5281a721029298c4ff3f4222694c --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_curl.conf.xml @@ -0,0 +1,49 @@ +<configuration name="xml_curl.conf" description="cURL XML Gateway"> + <bindings> + <binding name="example"> + <!-- Allow to bind on a particular IP for requests sent --> + <!--<param name="bind-local" value="$${local_ip_v4}" />--> + <!-- The url to a gateway cgi that can generate xml similar to + what's in this file only on-the-fly (leave it commented if you dont + need it) --> + <!-- one or more |-delim of configuration|directory|dialplan --> + <!-- <param name="gateway-url" value="http://www.freeswitch.org/gateway.xml" bindings="dialplan"/> --> + <!-- set this to provide authentication credentials to the server --> + <!--<param name="gateway-credentials" value="muser:mypass"/>--> + <!--<param name="auth-scheme" value="basic"/>--> + + <!-- optional: this will enable the CA root certificate check by libcurl to + verify that the certificate was issued by a major Certificate Authority. + note: default value is disabled. only enable if you want this! --> + <!--<param name="enable-cacert-check" value="true"/>--> + <!-- optional: verify that the server is actually the one listed in the cert --> + <!-- <param name="enable-ssl-verifyhost" value="true"/> --> + + <!-- optional: these options can be used to specify custom SSL certificates + to use for HTTPS communications. Either use both options or neither. + Specify your public key with 'ssl-cert-path' and the private key with + 'ssl-key-path'. If your private key has a password, specify it with + 'ssl-key-password'. --> + <!-- <param name="ssl-cert-path" value="$${certs_dir}/public_key.pem"/> --> + <!-- <param name="ssl-key-path" value="$${certs_dir}/private_key.pem"/> --> + <!-- <param name="ssl-key-password" value="MyPrivateKeyPassword"/> --> + <!-- optional timeout --> + <!-- <param name="timeout" value="10"/> --> + + <!-- optional: use a custom CA certificate in PEM format to verify the peer + with. This is useful if you are acting as your own certificate authority. + note: only makes sense if used in combination with "enable-cacert-check." --> + <!-- <param name="ssl-cacert-file" value="$${certs_dir}/cacert.pem"/> --> + + <!-- optional: specify the SSL version to force HTTPS to use. Valid options are + "SSLv3" and "TLSv1". Otherwise libcurl will auto-negotiate the version. --> + <!-- <param name="ssl-version" value="TLSv1"/> --> + + <!-- optional: enables cookies and stores them in the specified file. --> + <!-- <param name="cookie-file" value="$${temp_dir}/cookie-mod_xml_curl.txt"/> --> + + <!-- one or more of these imply you want to pick the exact variables that are transmitted --> + <!--<param name="enable-post-var" value="Unique-ID"/>--> + </binding> + </bindings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_rpc.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_rpc.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..c5c335429358907c1e495a861c173a6436e978c6 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_rpc.conf.xml @@ -0,0 +1,16 @@ +<configuration name="xml_rpc.conf" description="XML RPC"> + <settings> + <!-- The port where you want to run the http service (default 8080) --> + <param name="http-port" value="8080"/> + <!-- if all 3 of the following params exist all http traffic will require auth --> + <param name="auth-realm" value="freeswitch"/> + <param name="auth-user" value="freeswitch"/> + <param name="auth-pass" value="works"/> + + + <!-- regex pattern to match against commands called against this service. + If a command with arguments matches, it will be logged at INFO level --> + <!--<param name="commands-to-log" value=""/> --> + + </settings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_scgi.conf.xml b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_scgi.conf.xml new file mode 100644 index 0000000000000000000000000000000000000000..b9662d163815cfea1fb4b90638765abd46df4043 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/autoload_configs/xml_scgi.conf.xml @@ -0,0 +1,12 @@ +<configuration name="xml_scgi.conf" description="SCGI XML Gateway"> + <bindings> + <binding name="example"> + <!-- one or more |-delim of configuration|directory|dialplan --> + <!-- <param name="host" value="127.0.0.1" bindings="dialplan"/> --> + <!-- <param name="port" value="8080"/> --> + <!-- <param name="timeout" value="10"/> --> + <!-- one or more of these imply you want to pick the exact variables that are transmitted --> + <!--<param name="enable-post-var" value="Unique-ID"/>--> + </binding> + </bindings> +</configuration> diff --git a/bbb-voice-conference/config/freeswitch/conf/chatplan/default.xml b/bbb-voice-conference/config/freeswitch/conf/chatplan/default.xml new file mode 100644 index 0000000000000000000000000000000000000000..22d34da552d52334b53ee83032d535bf4c0203c5 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/chatplan/default.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<include> + <context name="default"> + + <extension name="demo"> + <condition field="to" expression="^(.*)$"> + <!-- <action application="lua" data="test.lua"/> --> + + <action application="reply" data="Hello, you said: ${body}"/> + </condition> + </extension> + + </context> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/default.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/default.xml index bd9556ace31585c2c50d0a9b609dcce70a38aee0..65bedaa1bc5a107e9f820213b172328f825feb8d 100644 --- a/bbb-voice-conference/config/freeswitch/conf/dialplan/default.xml +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/default.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <!-- NOTICE: - - This context is usually accessed via authenticated callers on the sip profile on port 5060 + + This context is usually accessed via authenticated callers on the sip profile on port 5060 or transfered callers from the public context which arrived via the sip profile on port 5080. - + Authenticated users will use the user_context variable on the user to determine what context they can access. You can also add a user in the directory with the cidr= attribute acl.conf.xml will build the domains ACL using this value. @@ -16,106 +16,15 @@ <extension name="unloop"> <condition field="${unroll_loops}" expression="^true$"/> <condition field="${sip_looped_call}" expression="^true$"> - <action application="deflect" data="${destination_number}"/> - </condition> - </extension> - - <condition field="${sip_has_crypto}" expression="^(AES_CM_128_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_80)$" break="never"> - <action application="set" data="sip_secure_media=true"/> - <!-- Offer SRTP on outbound legs if we have it on inbound. --> - <!-- <action application="export" data="sip_secure_media=true"/> --> - </condition> - -<!-- - <condition> - <action application="hash" data="insert/${domain_name}-spymap/${caller_id_number}/${uuid}"/> - <action application="hash" data="insert/${domain_name}-last_dial/${caller_id_number}/${destination_number}"/> - <action application="hash" data="insert/${domain_name}-last_dial/global/${uuid}"/> - </condition> - </extension> - - <extension name="eavesdrop"> - <condition field="destination_number" expression="^88(\d{4})$|^\*0(.*)$"> - <action application="answer"/> - <action application="eavesdrop" data="${hash(select/${domain_name}-spymap/$1)}"/> - </condition> - </extension> - - <extension name="eavesdrop"> - <condition field="destination_number" expression="^779$"> - <action application="answer"/> - <action application="set" data="eavesdrop_indicate_failed=tone_stream://%(500, 0, 320)"/> - <action application="set" data="eavesdrop_indicate_new=tone_stream://%(500, 0, 620)"/> - <action application="set" data="eavesdrop_indicate_idle=tone_stream://%(250, 0, 920)"/> - <action application="eavesdrop" data="all"/> - </condition> - </extension> ---> - - <!-- BBB testing --> - - <!--extension name="bbb_conferences"> - <condition field="destination_number" expression="^(7\d{4})$"> - <action application="answer"/> - <action application="conference" data="$1@wideband"/> - </condition> - </extension>--> - - <extension name="echo"> - <condition field="destination_number" expression="^9196$"> - <action application="answer"/> - <action application="echo"/> - </condition> - </extension> - - <extension name="milliwatt"> - <condition field="destination_number" expression="^9197$"> - <action application="answer"/> - <action application="playback" data="tone_stream://%(251,0,1004);loops=-1"/> - </condition> - </extension> - - <extension name="tone_stream"> - <condition field="destination_number" expression="^9198$"> - <action application="answer"/> - <action application="playback" data="tone_stream://path=${base_dir}/conf/tetris.ttml;loops=10"/> + <action application="deflect" data="${destination_number}"/> </condition> </extension> <!-- - You will no longer hear the bong tone. The wav file is playing stating the call is secure. - The file will not play unless you have both TLS and SRTP active. - --> - - <extension name="hold_music"> - <condition field="destination_number" expression="^9664$"/> - <condition field="${sip_has_crypto}" expression="^(AES_CM_128_HMAC_SHA1_32|AES_CM_128_HMAC_SHA1_80)$"> - <action application="answer"/> - <action application="execute_extension" data="is_secure XML features"/> - <action application="playback" data="$${hold_music}"/> - <anti-action application="set" data="zrtp_secure_media=true"/> - <anti-action application="answer"/> - <anti-action application="playback" data="silence_stream://2000"/> - <anti-action application="execute_extension" data="is_zrtp_secure XML features"/> - <anti-action application="playback" data="$${hold_music}"/> - </condition> - </extension> - - <!-- - You can place files in the default directory to get included. + You can place files in the default directory to get included. --> <X-PRE-PROCESS cmd="include" data="default/*.xml"/> - - <!-- - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - - Anything you put below this line will usually get ignored due to the file in - default/99999_enum.xml as it will transfer the call to the enum dialplan. - - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - --> - - <!-- SEE WARNING ABOVE IF YOU ARE TRYING TO ADD EXTENSIONS HERE! --> </context> </include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/default/99999_enum.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/default/99999_enum.xml deleted file mode 100644 index 6fd21518591634fab111a3184d356d4cc6021b71..0000000000000000000000000000000000000000 --- a/bbb-voice-conference/config/freeswitch/conf/dialplan/default/99999_enum.xml +++ /dev/null @@ -1,8 +0,0 @@ -<include> - <extension name="enum"> - <condition field="${module_exists(mod_enum)}" expression="true"/> - <condition field="destination_number" expression="^(.*)$"> - <action application="transfer" data="$1 enum"/> - </condition> - </extension> -</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_conference.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_conference.xml new file mode 100644 index 0000000000000000000000000000000000000000..719ecb3e8ca3d0d53fab9ae143bf7966d0100882 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_conference.xml @@ -0,0 +1,19 @@ +<include> + <extension name="bbb_conferences_ws"> + <condition field="${bbb_authorized}" expression="true" break="on-false"/> + <condition field="${sip_via_protocol}" expression="^wss?$"/> + <condition field="destination_number" expression="^(\d{5,11})$"> + <action application="jitterbuffer" data="60:120"/> + <action application="answer"/> + <action application="conference" data="$1@cdquality"/> + </condition> + </extension> + <extension name="bbb_conferences"> + <condition field="${bbb_authorized}" expression="true" break="on-false"/> + <condition field="destination_number" expression="^(\d{5,11})$"> + <action application="jitterbuffer" data="60:120"/> + <action application="answer"/> + <action application="conference" data="$1@cdquality"/> + </condition> + </extension> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_echo_test.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_echo_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..b91896e163bb3d781ae6e08d7eac9f57266a1227 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_echo_test.xml @@ -0,0 +1,13 @@ +<include> + <extension name="bbb_echo_test_direct"> + <condition field="${bbb_authorized}" expression="true" break="on-false"/> + <condition field="destination_number" expression="^echo(\d{5,11})$"> + <action application="set" data="vbridge=$1"/> + <action application="answer"/> + <action application="set" data="bbb_from_echo=true"/> + <action application="bind_digit_action" data="direct_from_echo,1,exec:execute_extension,ECHO_TO_CONFERENCE XML default"/> + <action application="sleep" data="500"/> + <action application="echo"/> + </condition> + </extension> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_echo_to_conference.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_echo_to_conference.xml new file mode 100644 index 0000000000000000000000000000000000000000..6711ba309eb710773a19e2b9e883ff2fd897d590 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/default/bbb_echo_to_conference.xml @@ -0,0 +1,10 @@ +<include> + <extension name="ECHO_TO_CONFERENCE"> + <condition field="${bbb_from_echo}" expression="true" break="on-false"/> + <condition field="destination_number" expression="^(ECHO_TO_CONFERENCE)$"> + <action application="jitterbuffer" data="60:120"/> + <action application="answer"/> + <action application="conference" data="${vbridge}@cdquality"/> + </condition> + </extension> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/features.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/features.xml index 901b3091b7c137cb11dbbfff342acc026e6ede86..665925f964c9a09bc8ab0179a7345bb8ff09e977 100644 --- a/bbb-voice-conference/config/freeswitch/conf/dialplan/features.xml +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/features.xml @@ -11,6 +11,14 @@ </condition> </extension> + <extension name="att_xfer"> + <condition field="destination_number" expression="^att_xfer$"> + <action application="read" data="3 4 'tone_stream://%(10000,0,350,440)' digits 30000 #"/> + <action application="set" data="origination_cancel_key=#"/> + <action application="att_xfer" data="user/${digits}@$${domain}"/> + </condition> + </extension> + <extension name="is_transfer"> <condition field="destination_number" expression="^is_transfer$"/> <condition field="${digits}" expression="^(\d+)$"> @@ -48,7 +56,7 @@ <extension name="is_secure" continue="true"> <!-- Only Truly consider it secure if its TLS and SRTP --> <condition field="${sip_via_protocol}" expression="tls"/> - <condition field="${sip_secure_media_confirmed}" expression="^true$"> + <condition field="${rtp_secure_media_confirmed}" expression="^true$"> <action application="sleep" data="1000"/> <action application="playback" data="misc/call_secured.wav"/> <anti-action application="eval" data="not_secure"/> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/public.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/public.xml index d869401e4dfcc8a2da0ec4f8c004b3333b4c9e5f..faf9b1f301cb8aadb7cbab2bd559d447f6c262ab 100644 --- a/bbb-voice-conference/config/freeswitch/conf/dialplan/public.xml +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/public.xml @@ -27,52 +27,17 @@ <extension name="outside_call" continue="true"> <condition> <action application="set" data="outside_call=true"/> - </condition> - </extension> - - <extension name="call_debug" continue="true"> - <condition field="${call_debug}" expression="^true$" break="never"> - <action application="info"/> - </condition> - </extension> - - <extension name="public_extensions"> - <condition field="destination_number" expression="^(10[01][0-9])$"> - <action application="transfer" data="$1 XML default"/> - </condition> - </extension> - - - <!-- BBB testing --> - - <extension name="bbb_conferences"> - <condition field="destination_number" expression="^(\d{5})$"> - <action application="answer"/> - <action application="conference" data="$1@wideband"/> - <!-- <action application="conference" data="$1@wideband"/> --> + <action application="export" data="RFC2822_DATE=${strftime(%a, %d %b %Y %T %z)}"/> </condition> </extension> <!-- - You can place files in the public directory to get included. + You can place files in the public directory to get included. --> <X-PRE-PROCESS cmd="include" data="public/*.xml"/> - <!-- - If you have made it this far lets challenge the caller and if they authenticate - lets try what they dialed in the default context. (commented out by default) - --> - <!-- - <extension name="check_auth" continue="true"> - <condition field="${sip_authorized}" expression="^true$" break="never"> - <anti-action application="respond" data="407"/> - </condition> - </extension> - - <extension name="transfer_to_default"> - <condition> - <action application="transfer" data="${destination_number} XML default"/> - </condition> - </extension> - --> + + </context> + </include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/public/00_inbound_did.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/public/00_inbound_did.xml deleted file mode 100644 index d40b3ab2c902cd8a9f274130aebc49f1459b3843..0000000000000000000000000000000000000000 --- a/bbb-voice-conference/config/freeswitch/conf/dialplan/public/00_inbound_did.xml +++ /dev/null @@ -1,18 +0,0 @@ -<include> - <extension name="public_did"> - <condition field="destination_number" expression="^(5551212)$"> - <!-- - If you're hosting multiple domains you will want to set the - target_domain on these calls so they hit the proper domain after you - transfer the caller into the default context. - - $${domain} is the default domain set from vars.xml but you can set it - to any domain you have setup in your user directory. - - --> - <action application="set" data="domain_name=$${domain}"/> - <!-- This example maps the DID 5551212 to ring 1000 in the default context --> - <action application="transfer" data="1000 XML default"/> - </condition> - </extension> -</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/public/bbb_sip.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/public/bbb_sip.xml new file mode 100644 index 0000000000000000000000000000000000000000..367914f11a0ae6624c9a92f26744cb48d97148af --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/public/bbb_sip.xml @@ -0,0 +1,9 @@ +<include> + <extension name="bbb_sp_call" continue="true"> + <condition field="network_addr" expression="${domain}" break="on-false"> + <action application="set" data="bbb_authorized=true"/> + <action application="transfer" data="${destination_number} XML default"/> + </condition> + </extension> +</include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/public/bbb_webrtc.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/public/bbb_webrtc.xml new file mode 100644 index 0000000000000000000000000000000000000000..0582cceec681bfaead12c69187ab89c3b3366341 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/public/bbb_webrtc.xml @@ -0,0 +1,12 @@ +<include> + + <extension name="bbb_webrtc_call" continue="true"> + <condition field="${sip_via_protocol}" expression="^wss?$" break="on-false"> + <action application="set" data="bbb_authorized=true"/> + <action application="set" data="jb_use_timestamps=true"/> + <action application="transfer" data="${destination_number} XML default"/> + </condition> + </extension> + +</include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns.xml new file mode 100644 index 0000000000000000000000000000000000000000..55f261fd5ba0240544cccc78f3352f647d3102eb --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + NOTICE: + + This context is used for skinny to match dialed number + + The special applications: + - skinny-process tells skinny to process the call (route, set call forwarding, ...) + - skinny-drop tells skinny to drop the call + - skinny-wait tells skinny to wait 'data' seconds for more numbers before drop +--> +<!-- http://wiki.freeswitch.org/wiki/Mod_skinny --> +<include> + <context name="skinny-patterns"> + <!-- + Wait 10 seconds for another digit by default, if data not specified, uses profile default + --> + <extension name="Default"> + <condition> + <action application="skinny-wait" data="10"/> + </condition> + </extension> + + <!-- + You can place files in the skinny-patterns directory to get included. + --> + <X-PRE-PROCESS cmd="include" data="skinny-patterns/*.xml"/> + + </context> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/20-Demo.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/20-Demo.xml new file mode 100644 index 0000000000000000000000000000000000000000..f69658128fa52eab16d37dbc9f0ca6a4184bd587 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/20-Demo.xml @@ -0,0 +1,8 @@ +<include> + <extension name="Demo"> + <condition field="destination_number" expression="^(9[0-9]{3})$"> + <action application="skinny-process"/> + </condition> + </extension> +</include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/20-Local_extension.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/20-Local_extension.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ad5651328a17a141e328873d04110b2577e3122 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/20-Local_extension.xml @@ -0,0 +1,13 @@ +<include> + <extension name="Local_Extension"> + <condition field="destination_number" expression="^(10[01][0-9])$"> + <action application="skinny-process"/> + </condition> + </extension> + <extension name="Local_Extension_Skinny"> + <condition field="destination_number" expression="^(11[01][0-9])$"> + <action application="skinny-process"/> + </condition> + </extension> +</include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/90-External.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/90-External.xml new file mode 100644 index 0000000000000000000000000000000000000000..50d6c37f246cb69aa58f0ad82e31b7ed1d984353 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/90-External.xml @@ -0,0 +1,8 @@ +<include> + <extension name="External"> + <condition field="destination_number" expression="^(0[0-9]{10,})$"> + <action application="skinny-process"/> + </condition> + </extension> +</include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/99-Default_Drop.xml b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/99-Default_Drop.xml new file mode 100644 index 0000000000000000000000000000000000000000..897fd8fb946ffba69a28ded6276e978a27ac9062 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/dialplan/skinny-patterns/99-Default_Drop.xml @@ -0,0 +1,9 @@ +<include> + <!-- drop long dialed number --> + <extension name="Default_Drop"> + <condition field="destination_number" expression="^(.{14,})$"> + <action application="skinny-drop"/> + </condition> + </extension> +</include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/directory/default.xml b/bbb-voice-conference/config/freeswitch/conf/directory/default.xml index 6b4d787523aa766d61c27e2c155143408d4ad682..54100b95dd840be18a45ab4a456c1752c4b82bb6 100644 --- a/bbb-voice-conference/config/freeswitch/conf/directory/default.xml +++ b/bbb-voice-conference/config/freeswitch/conf/directory/default.xml @@ -1,9 +1,9 @@ <!-- - NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE - + NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE + FreeSWITCH works off the concept of users and domains just like email. You have users that are in domains for example 1000@domain.com. - + When freeswitch gets a register packet it looks for the user in the directory based on the from or to domain in the packet depending on how your sofia profile is configured. Out of the box the default domain will be the IP address of the @@ -11,17 +11,20 @@ CLI. You will register your phones to the IP and not the hostname by default. If you wish to register using the domain please open vars.xml in the root conf directory and set the default domain to the hostname you desire. Then you would - use the domain name in the client instead of the IP address to register + use the domain name in the client instead of the IP address to register with FreeSWITCH. - - NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE + + NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE --> <include> <!--the domain or ip (the right hand side of the @ in the addr--> <domain name="$${domain}"> <params> - <param name="dial-string" value="{presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/> + <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})}"/> + <!-- These are required for Verto to function properly --> + <param name="jsonrpc-allowed-methods" value="verto"/> + <!-- <param name="jsonrpc-allowed-event-channels" value="demo,conference,presence"/> --> </params> <variables> @@ -38,6 +41,40 @@ </users> </group> + <group name="sales"> + <users> + <!-- + type="pointer" is a pointer so you can have the + same user in multiple groups. It basically means + to keep searching for the user in the directory. + --> + <user id="1000" type="pointer"/> + <user id="1001" type="pointer"/> + <user id="1002" type="pointer"/> + <user id="1003" type="pointer"/> + <user id="1004" type="pointer"/> + </users> + </group> + + <group name="billing"> + <users> + <user id="1005" type="pointer"/> + <user id="1006" type="pointer"/> + <user id="1007" type="pointer"/> + <user id="1008" type="pointer"/> + <user id="1009" type="pointer"/> + </users> + </group> + + <group name="support"> + <users> + <user id="1010" type="pointer"/> + <user id="1011" type="pointer"/> + <user id="1012" type="pointer"/> + <user id="1013" type="pointer"/> + <user id="1014" type="pointer"/> + </users> + </group> </groups> </domain> diff --git a/bbb-voice-conference/config/freeswitch/conf/directory/default/bbbuser.xml b/bbb-voice-conference/config/freeswitch/conf/directory/default/bbbuser.xml index 1d9b6188ef91b3ba8d04793e0597422751d8bd83..2c6afc72fe01203e11042b35f33c36ab43402a95 100644 --- a/bbb-voice-conference/config/freeswitch/conf/directory/default/bbbuser.xml +++ b/bbb-voice-conference/config/freeswitch/conf/directory/default/bbbuser.xml @@ -1,13 +1,13 @@ <include> <!-- - ipauth if you have an cidr= in the user attributes ie cidr="1.2.3.4/32" - see <node type="allow" domain="$${domain}"/> in default acl.conf.xml + ipauth if you have an cidr= in the user attributes ie cidr="1.2.3.4/32" + see <node type="allow" domain="$${domain}"/> in default acl.conf.xml --> <user id="bbbuser"> <params> <!-- omit password for authless registration --> <param name="password" value="secret"/> - <!-- What this user is allowed to acces --> + <!-- What this user is allowed to acces --> <!--<param name="http-allowed-api" value="jsapi,voicemail,status"/> --> </params> <variables> @@ -18,7 +18,7 @@ <!-- Don't write a CDR if this is false valid values are: true, false, a_leg and b_leg --> <variable name="process_cdr" value="true"/> <!-- sip_secure_media will offer mandatory SRTP on invite AES_CM_128_HMAC_SHA1_32, AES_CM_128_HMAC_SHA1_80 or true--> - <variable name="sip_secure_media" value="false"/> + <variable name="rtp_secure_media" value="false"/> </variables> <vcard> @@ -26,3 +26,4 @@ </vcard> </user> </include> + diff --git a/bbb-voice-conference/config/freeswitch/conf/extensions.conf b/bbb-voice-conference/config/freeswitch/conf/extensions.conf index 184e3758eb934719682f7b48398320d783679268..c2f02f62db2c774aa6701809184c6c2e393f9eff 100644 --- a/bbb-voice-conference/config/freeswitch/conf/extensions.conf +++ b/bbb-voice-conference/config/freeswitch/conf/extensions.conf @@ -1,21 +1,21 @@ [default] ; Things you're used to.... -;exten => music,n,Dial(SIP/1234@conference.freeswitch.org|120) +exten => music,n,Dial(SIP/1234@conference.freeswitch.org|120) -;exten => _1XXXXX,n,set(cool=${EXTEN}) -;exten => _1XXXXX,n,set(myvar=true) -;exten => _1XXXXX,n,Goto(default|music) -;exten => 2137991400/1000,n,Goto(default|music) +exten => _1XXXXX,n,set(cool=${EXTEN}) +exten => _1XXXXX,n,set(myvar=true) +exten => _1XXXXX,n,Goto(default|music) +exten => 2137991400/1000,n,Goto(default|music) ; Some new magic you can do.... -;exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,enum($1) -;exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,bridge(${enum_auto_route}) +exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,enum($1) +exten => ~^(18(0{2}|8{2}|7{2}|6{2})\d{7})$,n,bridge(${enum_auto_route}) ; instead of exten, put anything about the call you would rather match on. ; either the names of a field in caller_profile or a string of variables to expand. -;caller_id_number => 2137991400,n,Goto(default|music) -;${sip_from_user} => bill,n,Goto(default|music) +caller_id_number => 2137991400,n,Goto(default|music) +${sip_from_user} => bill,n,Goto(default|music) diff --git a/bbb-voice-conference/config/freeswitch/conf/freeswitch.serial b/bbb-voice-conference/config/freeswitch/conf/freeswitch.serial deleted file mode 100644 index d72590a059566000bd7d5f646582fe46f9b3c2f5..0000000000000000000000000000000000000000 Binary files a/bbb-voice-conference/config/freeswitch/conf/freeswitch.serial and /dev/null differ diff --git a/bbb-voice-conference/config/freeswitch/conf/freeswitch.xml b/bbb-voice-conference/config/freeswitch/conf/freeswitch.xml index 80e7728e0d471794b50d4819a8c672996c18cc5f..dc66fca170aae5ded8c9c2cb48fd49d8f4f89b5c 100644 --- a/bbb-voice-conference/config/freeswitch/conf/freeswitch.xml +++ b/bbb-voice-conference/config/freeswitch/conf/freeswitch.xml @@ -1,24 +1,24 @@ <?xml version="1.0"?> <!-- - NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE - - This is the FreeSWITCH default config. Everything you see before you now traverses + NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE + + This is the FreeSWITCH default config. Everything you see before you now traverses down into all the directories including files which include more files. The default config comes out of the box already working in most situations as a PBX. This will allow you to get started testing and playing with various things in FreeSWITCH. - + Before you start to modify this default please visit this wiki page: - + http://wiki.freeswitch.org/wiki/Getting_Started_Guide#Some_stuff_to_try_out.21 - + If all else fails you can read our FAQ located at: - + http://wiki.freeswitch.org/wiki/FreeSwitch_FAQ - - NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE + + NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE --> <document type="freeswitch/xml"> - <!--#comment + <!--#comment All comments starting with #command will be preprocessed and never sent to the xml parser Valid instructions: #include ==> Include another file to this exact point @@ -26,10 +26,10 @@ #set ==> Set a global variable (can be expanded during preprocessing with $$ variables) (note the double $$ which denotes preprocessor variables) #comment ==> A general comment such as this - + The preprocessor will compile the full xml document to ${prefix}/log/freeswitch.xml.fsxml Don't modify it while freeswitch is running cos it is mem mapped in most cases =D - + The same can be achieved with the <X-PRE-PROCESS> tag where the attrs 'cmd' and 'data' are parsed in the same way. --> @@ -41,27 +41,32 @@ <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> + <!-- mod_dingaling is reliant on the vcard data in the "directory" section. --> - <!-- mod_sofia is reliant on the user data for authorization --> + <!-- mod_sofia is reliant on the user data for authorization --> <section name="directory" description="User Directory"> <X-PRE-PROCESS cmd="include" data="directory/*.xml"/> </section> - <!-- phrases section (under development still) --> - <section name="phrases" description="Speech Phrase Management"> - <macros> - <X-PRE-PROCESS cmd="include" data="lang/de/*.xml"/> - <X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/> - <X-PRE-PROCESS cmd="include" data="lang/fr/*.xml"/> - <X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/> - </macros> + <!-- languages section (under development still) --> + <section name="languages" description="Language Management"> + <X-PRE-PROCESS cmd="include" data="lang/de/*.xml"/> + <X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/> + <X-PRE-PROCESS cmd="include" data="lang/fr/*.xml"/> + <X-PRE-PROCESS cmd="include" data="lang/ru/*.xml"/> + <X-PRE-PROCESS cmd="include" data="lang/he/*.xml"/> + <X-PRE-PROCESS cmd="include" data="lang/es/es_ES.xml"/> + <X-NO-PRE-PROCESS cmd="include" data="lang/es/es_MX.xml"/> + <X-PRE-PROCESS cmd="include" data="lang/pt/pt_BR.xml"/> + <X-NO-PRE-PROCESS cmd="include" data="lang/pt/pt_PT.xml"/> + <X-NO-PRE-PROCESS cmd="include" data="lang/sv/*.xml"/> </section> - </document> - - diff --git a/bbb-voice-conference/config/freeswitch/conf/ivr_menus/demo_ivr.xml b/bbb-voice-conference/config/freeswitch/conf/ivr_menus/demo_ivr.xml new file mode 100644 index 0000000000000000000000000000000000000000..8059d57ccfdf0ac2d4fae626ee3c83c69f28b251 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/ivr_menus/demo_ivr.xml @@ -0,0 +1,64 @@ +<include> + <!-- demo IVR setup --> + <!-- demo IVR, Main Menu --> + <menu name="demo_ivr" + greet-long="phrase:demo_ivr_main_menu" + greet-short="phrase:demo_ivr_main_menu_short" + invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav" + exit-sound="voicemail/vm-goodbye.wav" + confirm-macro="" + confirm-key="" + tts-engine="flite" + tts-voice="rms" + confirm-attempts="3" + timeout="10000" + inter-digit-timeout="2000" + max-failures="3" + max-timeouts="3" + digit-len="4"> + + <!-- The following are the definitions for the digits the user dials --> + <!-- Digit 1 transfer caller to the public FreeSWITCH conference --> + <entry action="menu-exec-app" digits="1" param="bridge sofia/$${domain}/888@conference.freeswitch.org"/> + <entry action="menu-exec-app" digits="2" param="transfer 9196 XML default"/> <!-- FS echo --> + <entry action="menu-exec-app" digits="3" param="transfer 9664 XML default"/> <!-- MOH --> + <entry action="menu-exec-app" digits="4" param="transfer 9191 XML default"/> <!-- ClueCon --> + <entry action="menu-exec-app" digits="5" param="transfer 1234*256 enum"/> <!-- Screaming monkeys --> + <entry action="menu-sub" digits="6" param="demo_ivr_submenu"/> <!-- demo sub menu --> + <!-- Using a regex in the digits tag lets you define a dial pattern for the caller + You may define multiple regexes if you need a different pattern for some reason --> + <entry action="menu-exec-app" digits="/^(10[01][0-9])$/" param="transfer $1 XML features"/> + <entry action="menu-top" digits="9"/> <!-- Repeat this menu --> + </menu> + + <!-- Demo IVR, Sub Menu --> + <menu name="demo_ivr_submenu" + greet-long="phrase:demo_ivr_sub_menu" + greet-short="phrase:demo_ivr_sub_menu_short" + invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav" + exit-sound="voicemail/vm-goodbye.wav" + timeout="15000" + max-failures="3" + max-timeouts="3"> + + <!-- The demo IVR sub menu prompt basically just says, "press star to return to previous menu..." --> + <entry action="menu-top" digits="*"/> + </menu> + + +<!-- TTS sample; non-functional but it demonstrates say: and TTS --> +<!-- + <menu name="demo3" + greet-long="say:Press 1 to join the conference, Press 2 to join the other conference" + greet-short="say:Press 1 to join the conference, Press 2 to join the other conference" + invalid-sound="say:invalid extension" + exit-sound="say:exit sound" + timeout ="15000" + max-failures="3"> + <entry action="menu-exit" digits="*"/> + <entry action="menu-play-sound" digits="1" param="say:You pressed 1"/> + <entry action="menu-exec-app" digits="2" param="transfert 1000 XML default"/> + <entry action="menu-exec-app" digits="3" param="transfert 1001 XML default"/> + </menu> +--> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/ivr_menus/new_demo_ivr.xml b/bbb-voice-conference/config/freeswitch/conf/ivr_menus/new_demo_ivr.xml new file mode 100644 index 0000000000000000000000000000000000000000..f2ca7dc68e19ca1ea7882d6df4be4fac2faacdec --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/ivr_menus/new_demo_ivr.xml @@ -0,0 +1,69 @@ +<include> + <!-- new demo IVR, Main Menu --> + <menu name="new_demo_ivr" + greet-long="phrase:new_demo_ivr_main_menu" + greet-short="phrase:new_demo_ivr_main_menu_short" + invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav" + exit-sound="voicemail/vm-goodbye.wav" + confirm-macro="" + confirm-key="" + tts-engine="flite" + tts-voice="rms" + confirm-attempts="3" + timeout="10000" + inter-digit-timeout="2000" + max-failures="3" + max-timeouts="3" + digit-len="4"> + + <entry action="menu-sub" digits="1" param="freeswitch_ivr_submenu"/> <!-- FreeSWITCH sub menu --> + <entry action="menu-sub" digits="2" param="freeswitch_solutions_ivr_submenu"/> <!-- FreeSWITCH Solutions sub menu --> + <entry action="menu-sub" digits="3" param="cluecon_ivr_submenu"/> <!-- ClueCon sub menu --> + <entry action="menu-exec-app" digits="4" param="5000 XML default"/> <!-- original demo IVR --> + <entry action="menu-top" digits="9"/> <!-- Repeat this menu --> + </menu> + + <!-- FreeSWITCH IVR Sub Menu --> + <menu name="freeswitch_ivr_submenu" + greet-long="phrase:learn_about_freeswitch_sub_menu" + greet-short="phrase:learn_about_freeswitch_sub_menu" + invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav" + exit-sound="voicemail/vm-goodbye.wav" + timeout="15000" + max-failures="3" + max-timeouts="3"> + + <entry action="menu-sub" digits="9" param="freeswitch_ivr_submenu"/> + <entry action="menu-top" digits="*"/> + </menu> + + <!-- FreeSWITCH Solutions IVR Sub Menu --> + <menu name="freeswitch_solutions_ivr_submenu" + greet-long="phrase:learn_about_freeswitch_solutions_sub_menu" + greet-short="phrase:learn_about_freeswitch_solutions_sub_menu" + invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav" + exit-sound="voicemail/vm-goodbye.wav" + timeout="15000" + max-failures="3" + max-timeouts="3"> + + <entry action="menu-sub" digits="9" param="freeswitch_solutions_ivr_submenu"/> + <entry action="menu-top" digits="*"/> + </menu> + + <!-- ClueCon IVR Sub Menu --> + <menu name="cluecon_ivr_submenu" + greet-long="phrase:learn_about_cluecon_sub_menu" + greet-short="phrase:learn_about_cluecon_sub_menu" + invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav" + exit-sound="voicemail/vm-goodbye.wav" + timeout="15000" + max-failures="3" + max-timeouts="3"> + + <entry action="menu-sub" digits="9" param="cluecon_ivr_submenu"/> + <entry action="menu-top" digits="*"/> + </menu> + + +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/jingle_profiles/client.xml b/bbb-voice-conference/config/freeswitch/conf/jingle_profiles/client.xml new file mode 100644 index 0000000000000000000000000000000000000000..20a8dd809d1778ad3641d076147ec211839f6ecc --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/jingle_profiles/client.xml @@ -0,0 +1,36 @@ +<include> + <!-- Client Profile (Original mode) --> + <!-- to use this profile take the x- away from the open and close tags so its <profile> and </profile> --> + <x-profile type="client"> + <param name="name" value="$${xmpp_client_profile}"/> + <param name="login" value="myjid@myserver.com/talk"/> + <param name="password" value="mypass"/> + <param name="dialplan" value="XML"/> + <param name="context" value="public"/> + <param name="message" value="Jingle all the way"/> + <param name="rtp-ip" value="$${bind_server_ip}"/> + <!-- <param name="ext-rtp-ip" value="auto-nat"/> --> + <param name="auto-login" value="true"/> + <!-- SASL "plain" or "md5" --> + <param name="sasl" value="plain"/> + <!-- if the server where the jabber is hosted is not the same as the one in the jid --> + <!--<param name="server" value="alternate.server.com"/>--> + <!-- Enable TLS or not --> + <param name="tls" value="true"/> + <!-- disable to trade async for more calls --> + <param name="use-rtp-timer" value="true"/> + <!-- default extension (if one cannot be determined) --> + <param name="exten" value="888"/> + <!-- VAD choose one --> + <!-- <param name="vad" value="in"/> --> + <!-- <param name="vad" value="out"/> --> + <!--<param name="vad" value="both"/>--> + <!--<param name="avatar" value="/path/to/tiny.jpg"/>--> + <!--<param name="candidate-acl" value="wan.auto"/>--> + <param name="local-network-acl" value="localnet.auto"/> + + <!-- google voice does not work on this yet ....ikr... --> + <!--<param name="use-jingle" value="true"/>--> + + </x-profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/jingle_profiles/server.xml b/bbb-voice-conference/config/freeswitch/conf/jingle_profiles/server.xml new file mode 100644 index 0000000000000000000000000000000000000000..b60dc27ea6d9eeec37bc5a28faecd2ee437114e8 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/jingle_profiles/server.xml @@ -0,0 +1,21 @@ +<include> + <!-- Component (Server to Server Login) --> + <!-- to use this profile take the x- away from the open and close tags so its <profile> and </profile> --> + <x-profile type="component"> + <param name="name" value="$${xmpp_server_profile}"/> + <param name="password" value="secret"/> + <param name="dialplan" value="XML"/> + <param name="context" value="public"/> + <param name="rtp-ip" value="$${bind_server_ip}"/> + <param name="server" value="jabber.server.org:5347"/> + <!-- disable to trade async for more calls --> + <param name="use-rtp-timer" value="true"/> + <!-- "_auto_" means the extension will be automaticly set to the called jid --> + <param name="exten" value="_auto_"/> + <!--<param name="vad" value="both"/>--> + <!--<param name="avatar" value="/path/to/tiny.jpg"/>--> + <!--If you have ODBC support and a working dsn you can use it instead of SQLite--> + <!--<param name="odbc-dsn" value="dsn:user:pass"/>--> + <!--<param name="candidate-acl" value="wan.auto"/>--> + </x-profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/de/de.xml b/bbb-voice-conference/config/freeswitch/conf/lang/de/de.xml index 5239489f75720207cec1d373abf6aa0e1a4af3b1..a7dbab0c0c8859afb5f84a1cef6182f2963c80c3 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/de/de.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/de/de.xml @@ -1,7 +1,22 @@ <include> - <language name="de" sound-path="/snds" tts-engine="cepstral" tts-voice="david"> - <X-PRE-PROCESS cmd="include" data="demo/demo.xml"/> - <!--voicemail_de_tts is purely implemented with tts, we need a files based implementation too --> - <X-PRE-PROCESS cmd="include" data="vm/tts.xml"/> + <language name="de" sound-prefix="/snds" tts-engine="cepstral" tts-voice="david"> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="demo/demo.xml"/> + <!--voicemail_de_tts is purely implemented with tts, we need a files based implementation too --> + <X-PRE-PROCESS cmd="include" data="vm/tts.xml"/> + </macros> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/de/demo/demo.xml b/bbb-voice-conference/config/freeswitch/conf/lang/de/demo/demo.xml index 61582b2052ba4d9ea1a4bf75251a993db2095ade..fa77948b65c47217c5634be78ee6249665d0b34a 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/de/demo/demo.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/de/demo/demo.xml @@ -1,71 +1,82 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> - <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="Sie haben $1 Nachrichten"/>--> - </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="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/> - <action function="break"/> - </match> - <nomatch> - <action function="speak-text" data="Die Eingabe war ungültig."/> - </nomatch> - </input> - <input pattern="(\d+) min (\d+) sek"> - <match> - <action function="speak-text" data="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/> - </match> - <nomatch> - <action function="speak-text" data="Die Eingabe war ungültig."/> - </nomatch> - </input> - </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> +<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="Sie haben $1 Nachrichten"/>--> + </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="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/> + <action function="break"/> + </match> + <nomatch> + <action function="speak-text" data="Die Eingabe war ungültig."/> + </nomatch> + </input> + <input pattern="(\d+) min (\d+) sek"> + <match> + <action function="speak-text" data="Sie haben $1 Minuten, $2 Sekunden übrig $strftime(%Y-%m-%d)"/> + </match> + <nomatch> + <action function="speak-text" data="Die Eingabe war ungültig."/> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/de/vm/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/de/vm/sounds.xml new file mode 100644 index 0000000000000000000000000000000000000000..10643d9ddf5b6801312b2e042c0ee9d143b337ba --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/de/vm/sounds.xml @@ -0,0 +1,413 @@ +<include> + + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-abort.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^(1):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action application="log" data="INFO $1 $2"/> + <action function="say" data="$1" method="pronounced" type="items" gender="feminine"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="say" data="$1" method="pronounced" type="items" gender="feminine"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + <action function="play-file" data="voicemail/vm-messages.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-listen_new.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-listen_saved.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + <!-- To exit --> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + </match> + </input> + </macro> + + <macro name="voicemail_config_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + <!-- To change password --> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail_forward_prepend"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + </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="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_message.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_message_number"> + <input pattern="^([a-z]+):(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action application="log" data="INFO $1 $2"/> + <action function="say" data="$2" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="voicemail_ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-too-small.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_date"> + <input pattern="^(.*)$"> + <match> + <action application="log" data="INFO $1"/> + <action function="say" data="$1" method="counted" type="current_date_time"/> + </match> + </input> + </macro> + + <macro name="voicemail_disk_quota_exceeded"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> + </input> + </macro> + + <macro name="valet_announce_ext"> + <input pattern="^([^\:]+):(.*)$"> + <match> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="valet_lot_full"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> + + <macro name="valet_lot_empty"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/de/vm/tts.xml b/bbb-voice-conference/config/freeswitch/conf/lang/de/vm/tts.xml index 7a8f18cf5042a8af6840736e6281dc493c120a6e..f91cae1b997cfc21520e0fdeffe9a354884bf356 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/de/vm/tts.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/de/vm/tts.xml @@ -1,8 +1,9 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="voicemail_enter_id"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Bitte geben Sie Ihren Benutzernamen ein, gefolgt von $1."/> + <action function="speak-text" data="Bitte geben Sie Ihren Benutzernamen ein, gefolgt von $1."/> </match> </input> </macro> @@ -10,7 +11,7 @@ <macro name="voicemail_enter_pass"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Bitte geben Sie Ihr Passwort ein, gefolgt von $1."/> + <action function="speak-text" data="Bitte geben Sie Ihr Passwort ein, gefolgt von $1."/> </match> </input> </macro> @@ -18,7 +19,7 @@ <macro name="voicemail_fail_auth"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Falsche Benutzerdaten."/> + <action function="speak-text" data="Falsche Benutzerdaten."/> </match> </input> </macro> @@ -26,7 +27,7 @@ <macro name="voicemail_hello"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Willkommen in Ihrem Postfach."/> + <action function="speak-text" data="Willkommen in Ihrem Postfach."/> </match> </input> </macro> @@ -34,7 +35,7 @@ <macro name="voicemail_goodbye"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Auf Wiedersehen."/> + <action function="speak-text" data="Auf Wiedersehen."/> </match> </input> </macro> @@ -42,7 +43,7 @@ <macro name="voicemail_abort"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Zu viele Fehlversuche."/> + <action function="speak-text" data="Zu viele Fehlversuche."/> </match> </input> </macro> @@ -50,12 +51,12 @@ <macro name="voicemail_message_count"> <input pattern="^1:(.*)$"> <match> - <action function="speak-text" data="Sie haben 1 $2 Nachricht im Ordner ${voicemail_current_folder}."/> + <action function="speak-text" data="Sie haben 1 $2 Nachricht im Ordner ${voicemail_current_folder}."/> </match> </input> <input pattern="^([0,2-9]+):(.*)$"> <match> - <action function="speak-text" data="Sie haben $1 $2 Nachrichten im Ordner ${voicemail_current_folder}."/> + <action function="speak-text" data="Sie haben $1 $2 Nachrichten im Ordner ${voicemail_current_folder}."/> </match> </input> </macro> @@ -63,27 +64,25 @@ <macro name="voicemail_menu"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Um neue Nachrichten zu hören, drücken Sie $1. Um gespeicherte Nachrichten zu hören, drücken Sie $2, Für erweiterte Optionen, drücken Sie $3. Zum beenden drücken Sie $4."/> + <action function="speak-text" + data="Um neue Nachrichten zu hören, drücken Sie $1. Um gespeicherte Nachrichten zu hören, drücken Sie $2, Für erweiterte Optionen, drücken Sie $3. Zum beenden drücken Sie $4."/> </match> </input> </macro> - <macro name="voicemail_config_menu"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Um eine Ansage aufzunehmen, drücken Sie $1. Um eine Ansage auszuwählen, drücken Sie $2. Um ihren Namen aufzunehmen, drücken Sie $3. Um zum Hauptmenü zurückzukehren, drücken Sie $4."/> + <action function="speak-text" + data="Um eine Ansage aufzunehmen, drücken Sie $1. Um eine Ansage auszuwählen, drücken Sie $2. Um ihren Namen aufzunehmen, drücken Sie $3. Um zum Hauptmenü zurückzukehren, drücken Sie $4."/> </match> </input> </macro> - <macro name="voicemail_record_name"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="Sprechen Sie Ihren Namen nach dem Ton, drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/> + <action function="speak-text" data="Sprechen Sie Ihren Namen nach dem Ton, drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/> </match> </input> </macro> @@ -91,8 +90,8 @@ <macro name="voicemail_record_file_check"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Um die Aufzeichnung anzuhören, drücken Sie $1. Um die Aufzeichnung zu speichern, drücken Sie $2. Für eine erneute Aufnahme drücken Sie $3."/> + <action function="speak-text" + data="Um die Aufzeichnung anzuhören, drücken Sie $1. Um die Aufzeichnung zu speichern, drücken Sie $2. Für eine erneute Aufnahme drücken Sie $3."/> </match> </input> </macro> @@ -100,8 +99,8 @@ <macro name="voicemail_record_urgent_check"> <input pattern="^([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Drücken Sie $1 um diese Nachricht als wichtig zu markieren. Um fortzufahren drücken Sie $2."/> + <action function="speak-text" + data="Drücken Sie $1 um diese Nachricht als wichtig zu markieren. Um fortzufahren drücken Sie $2."/> </match> </input> </macro> @@ -109,8 +108,8 @@ <macro name="voicemail_listen_file_check"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Drücken Sie $1 um die Nachricht erneut zu hören. Um die Nachricht zu speichern, drücken Sie $2. Zum löschen der Nachricht drücken Sie $3. Für die Weiterleitung als Email, drücken Sie $4."/> + <action function="speak-text" + data="Drücken Sie $1 um die Nachricht erneut zu hören. Um die Nachricht zu speichern, drücken Sie $2. Zum löschen der Nachricht drücken Sie $3. Für die Weiterleitung als Email, drücken Sie $4."/> </match> </input> </macro> @@ -118,7 +117,7 @@ <macro name="voicemail_choose_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="Wählen Sie eine Ansage zwischen 1 und 3."/> + <action function="speak-text" data="Wählen Sie eine Ansage zwischen 1 und 3."/> </match> </input> </macro> @@ -126,7 +125,7 @@ <macro name="voicemail_choose_greeting_fail"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="Ungültige Eingabe."/> + <action function="speak-text" data="Ungültige Eingabe."/> </match> </input> </macro> @@ -134,7 +133,7 @@ <macro name="voicemail_record_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="Zeichnen Sie Ihre Ansage nach dem Ton auf. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/> + <action function="speak-text" data="Zeichnen Sie Ihre Ansage nach dem Ton auf. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/> </match> </input> </macro> @@ -142,7 +141,7 @@ <macro name="voicemail_record_message"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="Sprechen Sie nach dem Ton. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/> + <action function="speak-text" data="Sprechen Sie nach dem Ton. Drücken Sie eine beliebige Taste oder hören Sie auf zu sprechen um die Aufnahme zu beenden."/> </match> </input> </macro> @@ -150,7 +149,7 @@ <macro name="voicemail_greeting_selected"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="Ansage $1 ausgewählt."/> + <action function="speak-text" data="Ansage $1 ausgewählt."/> </match> </input> </macro> @@ -158,7 +157,7 @@ <macro name="voicemail_play_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1 ist nicht verfügbar."/> + <action function="speak-text" data="$1 ist nicht verfügbar."/> </match> </input> </macro> @@ -166,7 +165,7 @@ <macro name="voicemail_say_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1"/> + <action function="speak-text" data="$1"/> </match> </input> </macro> @@ -174,7 +173,7 @@ <macro name="voicemail_say_message_number"> <input pattern="^([a-z]+):(.*)$"> <match> - <action function="speak-text" data="$1 Nachricht Nummer $2."/> + <action function="speak-text" data="$1 Nachricht Nummer $2."/> </match> </input> </macro> @@ -182,7 +181,7 @@ <macro name="voicemail_say_phone_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -190,7 +189,7 @@ <macro name="voicemail_say_name"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -198,7 +197,7 @@ <macro name="voicemail_ack"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="Nachricht $1"/> + <action function="speak-text" data="Nachricht $1"/> </match> </input> </macro> @@ -206,9 +205,20 @@ <macro name="voicemail_say_date"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$strftime($1|%A, %B %d %Y, %I %M %p)"/> + <action function="speak-text" data="$strftime($1|%A, %B %d %Y, %I %M %p)"/> </match> </input> </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo-ivr.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo-ivr.xml index ec7d7bccd21aac77b6bb1bab1b6e37931c0cea7c..98f155a26564081f04e339f2681b0d5799006375 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo-ivr.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo-ivr.xml @@ -1,6 +1,4 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<include><!--This line will be ignored it's here to validate the xml and is optional --> - +<include> <macro name="demo_ivr_count"> <input pattern="^(\d+)$"> @@ -69,7 +67,7 @@ <!-- 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"> + <macro name="demo_ivr_main_menu_short" pause="100"> <input pattern="(.*)"> <match> <!-- Menu option 1: Call FreeSWITCH conference--> @@ -132,7 +130,7 @@ <!-- 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"> + <macro name="demo_ivr_sub_menu_short"> <input pattern="(.*)"> <match> <!-- Menu option *: Return to top menu --> @@ -140,9 +138,19 @@ <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> +<!-- +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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo.xml index e3e6f0214205ec84274fbec5b77eb0f405f179b2..bcfe6a822760be8c0c5ef31a61783c33489d4d34 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/demo.xml @@ -1,71 +1,82 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> - <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><!--This line will be ignored it's here to validate the xml and is optional --> +<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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/funnies.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/funnies.xml new file mode 100644 index 0000000000000000000000000000000000000000..e901c5ad9ca3b63828d1718bd97718939caf241e --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/funnies.xml @@ -0,0 +1,35 @@ +<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 diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/new-demo-ivr.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/new-demo-ivr.xml new file mode 100644 index 0000000000000000000000000000000000000000..619d9921e90104d6b3a31b37a67b692920867ed7 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/demo/new-demo-ivr.xml @@ -0,0 +1,171 @@ +<?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 --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/sounds.xml index 02d6b3671f98d61b9dd21acb8ea0b7d764ed039b..b715a7f825da83983682898fa40f3b0ec0d710d8 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/sounds.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/sounds.xml @@ -1,121 +1,130 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> - <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="directory/dir-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="directory/dir-press.wav"/> - <action function="say" data="$2" method="pronounced" type="name_spelled"/> - </match> - </input> - </macro> +<include> - <macro name="directory_min_search_digits"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-specify_mininum_first.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_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_result_count"> - <input pattern="^0$" break_on_match="true"> - <match> - <action function="play-file" data="directory/dir-no_match_entry.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_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_too_large"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-to_many_result.wav"/> - </match> - </input> + <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> + <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_result.wav"/> - </match> - </input> + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="directory/dir-no_more_results.wav"/> + </match> + </input> + </macro> - </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_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_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_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="directory/dir-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="directory/dir-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="directory/dir-press.wav"/> - <action function="say" data="$3" method="pronounced" type="name_spelled"/> - <action function="play-file" data="directory/dir-to_make_new_search.wav"/> - <action function="play-file" data="directory/dir-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> - </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><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/tts.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/tts.xml index 67ae5ab2656d1c8d7e25ef6c81a4eae3585984a3..d5f112dcda8a3aafafd5c2e05a53c664503bc8a6 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/tts.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/dir/tts.xml @@ -1,96 +1,106 @@ -<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="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_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_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"> + <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 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> + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="No more result"/> + </match> + </input> + </macro> - <macro name="directory_result_last"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="No more result"/> - </match> - </input> + <macro name="directory_result_item"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Result number $1"/> + </match> + </input> + </macro> - </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_item"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="Result number $1"/> - </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_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_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1"/> + </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><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/en.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/en.xml index 6bd5a7d5fbde5ac4dabe3a2ab07b5a93e66eab38..24bee311c9bd92873d8b58b0d80eb4a2392ab634 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/en/en.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/en.xml @@ -1,8 +1,25 @@ <include> - <language name="en" sound-path="$${sounds_dir}/en/us/callie" tts-engine="cepstral" tts-voice="callie"> - <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 --> + <language name="en" say-module="en" sound-prefix="$${sound_prefix}" 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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/ivr/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/ivr/sounds.xml new file mode 100644 index 0000000000000000000000000000000000000000..9de7fa4eb76dcc43af8caa9c0a466f6e6ecd8e21 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/ivr/sounds.xml @@ -0,0 +1,163 @@ +<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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/sounds.xml index 5a090411d74f954ec874e5fec56f2991114606ef..9545d817452d9a0cab44ed796636e6b84ad47447 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/sounds.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/sounds.xml @@ -1,9 +1,10 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="voicemail_enter_id"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-enter_id.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -11,8 +12,8 @@ <macro name="voicemail_enter_pass"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-enter_pass.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -20,7 +21,23 @@ <macro name="voicemail_fail_auth"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_change_pass_success"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-password_has_been_changed.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_change_pass_fail"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-password_not_valid.wav"/> </match> </input> </macro> @@ -28,7 +45,7 @@ <macro name="voicemail_hello"> <input pattern="(.*)"> <match> - <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> </match> </input> </macro> @@ -36,7 +53,7 @@ <macro name="voicemail_goodbye"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-goodbye.wav"/> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> </match> </input> </macro> @@ -44,7 +61,7 @@ <macro name="voicemail_abort"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-abort.wav"/> + <action function="play-file" data="voicemail/vm-abort.wav"/> </match> </input> </macro> @@ -52,18 +69,18 @@ <macro name="voicemail_message_count"> <input pattern="^(1):(.*)$" break_on_match="true"> <match> - <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-$2.wav"/> - <action function="play-file" data="voicemail/vm-message.wav"/> + <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-$2.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> </match> </input> <input pattern="^(\d+):(.*)$"> <match> - <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-$2.wav"/> - <action function="play-file" data="voicemail/vm-messages.wav"/> + <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-$2.wav"/> + <action function="play-file" data="voicemail/vm-messages.wav"/> </match> </input> </macro> @@ -71,28 +88,28 @@ <macro name="voicemail_menu"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <!-- To listen to new messages --> - <action function="play-file" data="voicemail/vm-listen_new.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="execute" data="sleep(100)"/> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-listen_new.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> - <!-- To listen to saved messages --> - <action function="play-file" data="voicemail/vm-listen_saved.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$2" method="pronounced" type="name_spelled"/> - <action function="execute" data="sleep(100)"/> + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-listen_saved.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> - <!-- For advanced options --> - <action function="play-file" data="voicemail/vm-advanced.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$3" method="pronounced" type="name_spelled"/> - <action function="execute" data="sleep(100)"/> + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> - <!-- To exit --> - <action function="play-file" data="voicemail/vm-to_exit.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + <!-- To exit --> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> </match> </input> </macro> @@ -100,34 +117,34 @@ <macro name="voicemail_config_menu"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <!-- To record a greeting --> - <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="execute" data="sleep(100)"/> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> - <!-- To choose greeting --> - <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$2" method="pronounced" type="name_spelled"/> - <action function="execute" data="sleep(100)"/> + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> - <!-- To record your name --> - <action function="play-file" data="voicemail/vm-record_name2.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$3" method="pronounced" type="name_spelled"/> - <action function="execute" data="sleep(100)"/> + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> - <!-- To change password --> - <action function="play-file" data="voicemail/vm-change_password.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_spelled"/> - <action function="execute" data="sleep(100)"/> + <!-- To change password --> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> - <!-- To return to main menu --> - <action function="play-file" data="voicemail/vm-main_menu.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -135,7 +152,7 @@ <macro name="voicemail_record_name"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-record_name1.wav"/> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> </match> </input> </macro> @@ -143,15 +160,15 @@ <macro name="voicemail_record_file_check"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -159,12 +176,12 @@ <macro name="voicemail_record_urgent_check"> <input pattern="^([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail/vm-mark-urgent.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="voicemail/vm-continue.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -172,12 +189,12 @@ <macro name="voicemail_forward_prepend"> <input pattern="^([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -185,9 +202,9 @@ <macro name="voicemail_forward_message_enter_extension"> <input pattern="^([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> - <action function="play-file" data="voicemail/vm-followed_by.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -195,7 +212,7 @@ <macro name="voicemail_invalid_extension"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> </match> </input> </macro> @@ -203,43 +220,43 @@ <macro name="voicemail_listen_file_check"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):(.*)$"> <match> - <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-return_call.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$5" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-to_forward.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$6" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> </match> </input> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$5" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-to_forward.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$6" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -247,7 +264,7 @@ <macro name="voicemail_choose_greeting"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> </match> </input> </macro> @@ -255,7 +272,7 @@ <macro name="voicemail_choose_greeting_fail"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> </match> </input> </macro> @@ -263,7 +280,7 @@ <macro name="voicemail_record_greeting"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> </match> </input> </macro> @@ -271,7 +288,7 @@ <macro name="voicemail_record_message"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-record_message.wav"/> + <action function="play-file" data="voicemail/vm-record_message.wav"/> </match> </input> </macro> @@ -279,9 +296,9 @@ <macro name="voicemail_greeting_selected"> <input pattern="^(\d+)$"> <match> - <action function="play-file" data="voicemail/vm-greeting.wav"/> - <action function="say" data="$1" method="pronounced" type="items"/> - <action function="play-file" data="voicemail/vm-selected.wav"/> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> </match> </input> </macro> @@ -289,9 +306,9 @@ <macro name="voicemail_play_greeting"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-person.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-not_available.wav"/> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> </match> </input> </macro> @@ -299,7 +316,7 @@ <macro name="voicemail_say_number"> <input pattern="^(\d+)$"> <match> - <action function="say" data="$1" method="pronounced" type="items"/> + <action function="say" data="$1" method="pronounced" type="items"/> </match> </input> </macro> @@ -307,17 +324,28 @@ <macro name="voicemail_say_message_number"> <input pattern="^([a-z]+):(\d+)$"> <match> - <action function="play-file" data="voicemail/vm-$1.wav"/> - <action function="play-file" data="voicemail/vm-message_number.wav"/> - <action function="say" data="$2" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> </match> </input> </macro> <macro name="voicemail_say_phone_number"> + <input pattern="^000|^$|^[Aa]non|^[Pp]rivate" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-message_from.wav"/> + <action function="execute" data="sleep(100)"/> + <action function="play-file" data="ivr/ivr-anonymous_caller.wav"/> + <action function="execute" data="sleep(500)"/> + </match> + </input> <input pattern="^(.*)$"> <match> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-message_from.wav"/> + <action function="execute" data="sleep(100)"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(500)"/> </match> </input> </macro> @@ -325,39 +353,39 @@ <macro name="voicemail_say_name"> <input pattern="^(.*)$"> <match> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> </match> </input> </macro> <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> - <macro name="voicemail_ack"> + <macro name="voicemail_ack"> <input pattern="^(too-small)$"> <match> - <action function="play-file" data="voicemail/vm-too-small.wav"/> + <action function="play-file" data="voicemail/vm-too-small.wav"/> </match> </input> <input pattern="^(deleted)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> <input pattern="^(saved)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> <input pattern="^(emailed)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> <input pattern="^(marked-urgent)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> </macro> @@ -365,16 +393,16 @@ <macro name="voicemail_say_date"> <input pattern="^(.*)$"> <match> - <action function="say" data="$1" method="pronounced" type="current_date_time"/> + <action function="say" data="$1" method="pronounced" type="short_date_time"/> </match> </input> </macro> <macro name="voicemail_disk_quota_exceeded"> <input pattern="^(.*)$"> - <match> - <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> - </match> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> </input> </macro> @@ -401,4 +429,16 @@ </match> </input> </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> + +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/tts.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/tts.xml index 1fc877d50ea95b040d2b0b0452b4de1cf33f94f3..2de4b3781ea900889c0b7b7ef05693538a1eb017 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/tts.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/tts.xml @@ -1,8 +1,9 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="voicemail_enter_id"> <input pattern="(.*)"> <match> - <action function="speak-text" data="please enter your i d, followed by $1."/> + <action function="speak-text" data="please enter your i d, followed by $1."/> </match> </input> </macro> @@ -10,7 +11,7 @@ <macro name="voicemail_enter_pass"> <input pattern="(.*)"> <match> - <action function="speak-text" data="please enter your password, followed by $1."/> + <action function="speak-text" data="please enter your password, followed by $1."/> </match> </input> </macro> @@ -18,7 +19,7 @@ <macro name="voicemail_fail_auth"> <input pattern="(.*)"> <match> - <action function="speak-text" data="login incorrect."/> + <action function="speak-text" data="login incorrect."/> </match> </input> </macro> @@ -26,7 +27,7 @@ <macro name="voicemail_hello"> <input pattern="(.*)"> <match> - <action function="speak-text" data="welcome to your voicemail."/> + <action function="speak-text" data="welcome to your voicemail."/> </match> </input> </macro> @@ -34,7 +35,7 @@ <macro name="voicemail_goodbye"> <input pattern="(.*)"> <match> - <action function="speak-text" data="goodbye."/> + <action function="speak-text" data="goodbye."/> </match> </input> </macro> @@ -42,7 +43,7 @@ <macro name="voicemail_abort"> <input pattern="(.*)"> <match> - <action function="speak-text" data="too many failed attempts."/> + <action function="speak-text" data="too many failed attempts."/> </match> </input> </macro> @@ -50,12 +51,12 @@ <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}."/> + <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}."/> + <action function="speak-text" data="you have $1 $2 messages in folder ${voicemail_current_folder}."/> </match> </input> </macro> @@ -63,27 +64,25 @@ <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."/> + <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."/> + <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."/> + <action function="speak-text" data="at the tone, please record your name, press any key or stop talking to end the recording."/> </match> </input> @@ -92,8 +91,8 @@ <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."/> + <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> @@ -101,8 +100,8 @@ <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."/> + <action function="speak-text" + data="To mark this message urgent, press $1, To continue, press $2."/> </match> </input> </macro> @@ -110,7 +109,7 @@ <macro name="voicemail_invalid_extension"> <input pattern="^([0-9#*])$"> <match> - <action function="speak-text" data="$1 is not a valid extension."/> + <action function="speak-text" data="$1 is not a valid extension."/> </match> </input> </macro> @@ -118,7 +117,7 @@ <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"/> + <action function="speak-text" data="enter the extension you wish to forward to, then press $1"/> </match> </input> </macro> @@ -126,7 +125,7 @@ <macro name="voicemail_forward_prepend"> <input pattern="^([0-9#*])$"> <match> - <action function="speak-text" data="To record an announcement, press $1."/> + <action function="speak-text" data="To record an announcement, press $1."/> </match> </input> </macro> @@ -134,8 +133,8 @@ <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."/> + <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> @@ -143,7 +142,7 @@ <macro name="voicemail_choose_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="choose a greeting between 1 and 3."/> + <action function="speak-text" data="choose a greeting between 1 and 3."/> </match> </input> </macro> @@ -151,7 +150,7 @@ <macro name="voicemail_choose_greeting_fail"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="invalid value."/> + <action function="speak-text" data="invalid value."/> </match> </input> </macro> @@ -159,7 +158,7 @@ <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."/> + <action function="speak-text" data="record your greeting at the tone, press any key or stop talking to end the recording."/> </match> </input> </macro> @@ -167,7 +166,7 @@ <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."/> + <action function="speak-text" data="record your message at the tone, press any key or stop talking to end the recording."/> </match> </input> </macro> @@ -175,7 +174,7 @@ <macro name="voicemail_greeting_selected"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="greeting $1 selected."/> + <action function="speak-text" data="greeting $1 selected."/> </match> </input> </macro> @@ -183,7 +182,7 @@ <macro name="voicemail_play_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1 is not available."/> + <action function="speak-text" data="$1 is not available."/> </match> </input> </macro> @@ -191,7 +190,7 @@ <macro name="voicemail_say_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1"/> + <action function="speak-text" data="$1"/> </match> </input> </macro> @@ -199,7 +198,7 @@ <macro name="voicemail_say_message_number"> <input pattern="^([a-z]+):(.*)$"> <match> - <action function="speak-text" data="$1 message number $2."/> + <action function="speak-text" data="$1 message number $2."/> </match> </input> </macro> @@ -207,7 +206,7 @@ <macro name="voicemail_say_phone_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -215,7 +214,7 @@ <macro name="voicemail_say_name"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -223,7 +222,7 @@ <macro name="voicemail_ack"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="message $1"/> + <action function="speak-text" data="message $1"/> </match> </input> </macro> @@ -231,9 +230,20 @@ <macro name="voicemail_say_date"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/> + <action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/> </match> </input> </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/voicemail_ivr.xml b/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/voicemail_ivr.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c48299430d59726ab3ffd0884b48f6a328c76cf --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/en/vm/voicemail_ivr.xml @@ -0,0 +1,417 @@ +<include> + + <macros name="voicemail_ivr"> + <macro name="press_key"> + <input pattern="^(.*):(.*)$"> + <match> + <action function="play-file" data="$2"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="plural_msg"> + <input pattern="^[1]:(.*):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="$1"/> + </match> + </input> + <input pattern="^.*:(.*):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="$2"/> + </match> + </input> + </macro> + + <macro name="enter_id"> + <input pattern="(.+)"> + <match> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + <nomatch> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="${VM-Key-Terminator}" method="pronounced" type="name_spelled"/> + </nomatch> + </input> + </macro> + + <macro name="enter_pass"> + <input pattern="(.+)"> + <match> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + <nomatch> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="${VM-Key-Terminator}" method="pronounced" type="name_spelled"/> + </nomatch> + + </input> + </macro> + + <macro name="fail_auth"> + <input> + <match> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="hello"> + <input> + <match> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + </match> + </input> + </macro> + + <macro name="goodbye"> + <input> + <match> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> + </match> + </input> + </macro> + + <macro name="abort"> + <input> + <match> + <action function="play-file" data="voicemail/vm-abort.wav"/> + </match> + </input> + </macro> + + <macro name="message_count"> + <input field="${VM-Total-New-Urgent-Messages}" pattern="^(0)$"> + <nomatch> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="say" data="${VM-Total-New-Urgent-Messages}" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-urgent-new.wav"/> + <action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-New-Urgent-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/> + </nomatch> + </input> + <input field="${VM-Total-New-Messages}" pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="say" data="${VM-Total-New-Messages}" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-new.wav"/> + <action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-New-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/> + </match> + </input> + <input field="${VM-Total-Saved-Messages}" pattern="^(0)$"> + <nomatch> + <action function="play-file" data="currency/and.wav"/> + <action function="say" data="${VM-Total-Saved-Messages}" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-saved.wav"/> + <action function="phrase" phrase="plural_msg@voicemail_ivr" data="${VM-Total-Saved-Messages}:voicemail/vm-message.wav:voicemail/vm-messages.wav"/> + </nomatch> + </input> + </macro> + + <macro name="menu"> + <input field="${VM-Total-New-Messages}" pattern="^(0)$"> + <nomatch> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Play-New-Messages}:voicemail/vm-listen_new.wav"/> + </nomatch> + </input> + <input field="${VM-Total-Saved-Messages}" pattern="^(0)$"> + <nomatch> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Play-Saved-Messages}:voicemail/vm-listen_saved.wav"/> + </nomatch> + </input> + <input> + <match> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Config-Menu}:voicemail/vm-advanced.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Terminator}:voicemail/vm-to_exit.wav"/> + </match> + </input> + </macro> + + <macro name="config_menu"> + <input> + <match> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-Greeting}:voicemail/vm-to_record_greeting.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Choose-Greeting}:voicemail/vm-choose_greeting.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-Name}:voicemail/vm-record_name2.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Change-Password}:voicemail/vm-change_password.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Menu}:voicemail/vm-main_menu.wav"/> + </match> + </input> + </macro> + + <macro name="record_name"> + <input> + <match> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> + </match> + </input> + </macro> + + <macro name="forward_ask_prepend"> + <input> + <match> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Prepend}:voicemail/vm-forward_add_intro.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Forward}:voicemail/vm-send_message_now.wav"/> + </match> + </input> + </macro> + + <macro name="forward_ask_extension"> + <input> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <!--<action function="phrase" phrase="play-file" data="voicemail/vm-followed_by.wav"/>--> + <!--<action function="say" data="${VM-Key-Terminate}" method="pronounced" type="name_spelled"/>--> + </match> + </input> + </macro> + + <macro name="record_file_check"> + <input> + <match> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Listen-File}:voicemail/vm-listen_to_recording.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Save-File}:voicemail/vm-save_recording.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Record-File}:voicemail/vm-rerecord.wav"/> + </match> + </input> + </macro> + + <macro name="record_urgent_check"> + <input> + <match> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Urgent}:voicemail/vm-mark-urgent.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Terminator}:voicemail/vm-continue.wav"/> + </match> + </input> + </macro> + + <macro name="forward_prepend"> + <input> + <match> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Prepend}:voicemail/vm-forward_add_intro.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Forward}:voicemail/vm-send_message_now.wav"/> + </match> + </input> + </macro> + + <macro name="forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="invalid_extension"> + <input> + <match> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + </match> + </input> + </macro> + + <macro name="listen_file_check"> + <input> + <match> + <!--<action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Next-Msg}:voicemail/vm-for_next_msg.wav"/>--> <!-- Not existant in callie recordings --> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Listen-File}:voicemail/vm-listen_to_recording.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Save-File}:voicemail/vm-save_recording.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Delete-File}:voicemail/vm-delete_recording.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Forward}:voicemail/vm-to_forward.wav"/> + </match> + </input> + <input field="${VM-Message-Email}" pattern="^$"> + <nomatch> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Email}:voicemail/vm-forward_to_email.wav"/> + </nomatch> + </input> + <input> + <match> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Callback}:voicemail/vm-return_call.wav"/> + <action function="phrase" phrase="press_key@voicemail_ivr" data="${VM-Key-Main-Forward}:voicemail/vm-to_forward.wav"/> + </match> + </input> + </macro> + + <macro name="choose_greeting"> + <input> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + </match> + </input> + </macro> + + <macro name="choose_greeting_fail"> + <input> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + </match> + </input> + </macro> + + <macro name="record_greeting"> + <input> + <match> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + </match> + </input> + </macro> + + <macro name="record_message"> + <input> + <match> + <action function="play-file" data="voicemail/vm-record_message.wav"/> + </match> + </input> + </macro> + + <macro name="greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="${VM-Preference-Greeting-File-Path}"/> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> + </match> + </input> + </macro> + + <macro name="play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> + </match> + </input> + </macro> + + <macro name="say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="say_message_number"> + <input> + <match> + <action function="play-file" data="voicemail/vm-${VM-Message-Type}.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="${VM-Message-Number}" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-too-small.wav"/> + </match> + </input> + <input pattern="^(undeleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + </macro> + + <macro name="say_date"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="short_date_time"/> + </match> + </input> + </macro> + + <macro name="say_date_event"> + <input> + <match> + <action function="say" data="${VM-Message-Received-Epoch}" method="pronounced" type="short_date_time"/> + </match> + </input> + </macro> + + <macro name="play_message"> + <input> + <match> + <action function="play-file" data="${VM-Message-File-Path}"/> + </match> + </input> + </macro> + + <macro name="play_recording"> + <input> + <match> + <action function="play-file" data="${VM-Record-File-Path}"/> + </match> + </input> + </macro> + + <macro name="disk_quota_exceeded"> + <input> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> + </input> + </macro> + </macros> + +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-es-ES.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-es-ES.xml new file mode 100644 index 0000000000000000000000000000000000000000..4c6919dd0eb32c90766725677e6a5555b41f3144 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-es-ES.xml @@ -0,0 +1,71 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="Usted tiene $1 mensajes"/>--> + </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="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/> + <action function="break"/> + </match> + <nomatch> + <action function="speak-text" data="Esa fue una entrada inválida."/> + </nomatch> + </input> + <input pattern="(\d+) min (\d+) sec"> + <match> + <action function="speak-text" data="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/> + </match> + <nomatch> + <action function="speak-text" data="Esa fue una entrada inválida."/> + </nomatch> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-es-MX.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-es-MX.xml new file mode 100644 index 0000000000000000000000000000000000000000..4c6919dd0eb32c90766725677e6a5555b41f3144 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-es-MX.xml @@ -0,0 +1,71 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="Usted tiene $1 mensajes"/>--> + </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="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/> + <action function="break"/> + </match> + <nomatch> + <action function="speak-text" data="Esa fue una entrada inválida."/> + </nomatch> + </input> + <input pattern="(\d+) min (\d+) sec"> + <match> + <action function="speak-text" data="Quedan $1 minutos y $2 segundos $strftime(%Y-%m-%d)"/> + </match> + <nomatch> + <action function="speak-text" data="Esa fue una entrada inválida."/> + </nomatch> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-ivr-es-ES.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-ivr-es-ES.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec7d7bccd21aac77b6bb1bab1b6e37931c0cea7c --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-ivr-es-ES.xml @@ -0,0 +1,148 @@ +<?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="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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-ivr-es-MX.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-ivr-es-MX.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec7d7bccd21aac77b6bb1bab1b6e37931c0cea7c --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/demo/demo-ivr-es-MX.xml @@ -0,0 +1,148 @@ +<?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="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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/sounds-es-ES.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/sounds-es-ES.xml new file mode 100644 index 0000000000000000000000000000000000000000..2bdc1492ec487b4876916e49096e0d20ac250c51 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/sounds-es-ES.xml @@ -0,0 +1,121 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/sounds-es-MX.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/sounds-es-MX.xml new file mode 100644 index 0000000000000000000000000000000000000000..2bdc1492ec487b4876916e49096e0d20ac250c51 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/sounds-es-MX.xml @@ -0,0 +1,121 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/tts-es-ES.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/tts-es-ES.xml new file mode 100644 index 0000000000000000000000000000000000000000..fbdeca703caf027ec5e8e008105e02e1b1658527 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/tts-es-ES.xml @@ -0,0 +1,96 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + + <macro name="directory_intro"> + <input pattern="^(last_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Introduzca las primeras letras del apellido de la persona."/> + </match> + </input> + <input pattern="^(first_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Introduzca las primeras letras del nombre de la persona."/> + </match> + </input> + <input pattern="^(last_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para buscar por apellido, pulse $2"/> + </match> + </input> + <input pattern="^(first_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para buscar por nombre, pulse $2"/> + </match> + </input> + </macro> + + <macro name="directory_min_search_digits"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Necesita especificar un mÃnimo de $1 letras del nombre buscado. Por favor intente de nuevo."/> + </match> + </input> + </macro> + + <macro name="directory_result_count"> + <input pattern="^0$" break_on_match="true"> + <match> + <action function="speak-text" data="No hay resultados que coincidan con su busqueda. Por favor intente de nuevo."/> + </match> + </input> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 resultados coinciden con su busqueda."/> + </match> + </input> + </macro> + + <macro name="directory_result_count_too_large"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Su busqueda genera demasiados resultados. Por favor intente de nuevo."/> + </match> + </input> + + </macro> + + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="No hay más resultados."/> + </match> + </input> + + </macro> + + <macro name="directory_result_item"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Resultado número $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="Para seleccionar este resultado pulse $1, para el resultado siguiente pulse $2, para el resultado previo pulse $3, para empezar una nueva busqueda pulse $4"/> + </match> + </input> + </macro> + + <macro name="directory_result_at"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="en la extensión $1"/> + </match> + </input> + </macro> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1"/> + </match> + </input> + </macro> + +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/tts-es-MX.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/tts-es-MX.xml new file mode 100644 index 0000000000000000000000000000000000000000..ddf15d0a5031f44762fbe4e920c72e951daf1b92 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/dir/tts-es-MX.xml @@ -0,0 +1,96 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + + <macro name="directory_intro"> + <input pattern="^(last_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Ingrese las primeras letras del apellido de la persona."/> + </match> + </input> + <input pattern="^(first_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Ingrese las primeras letras del nombre de la persona."/> + </match> + </input> + <input pattern="^(last_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para buscar por apellido, pulse $2"/> + </match> + </input> + <input pattern="^(first_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para buscar por nombre, pulse $2"/> + </match> + </input> + </macro> + + <macro name="directory_min_search_digits"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Necesita especificar un mÃnimo de $1 letras del nombre buscado. Por favor intente de nuevo."/> + </match> + </input> + </macro> + + <macro name="directory_result_count"> + <input pattern="^0$" break_on_match="true"> + <match> + <action function="speak-text" data="No hay resultados que coincidan con su busqueda. Por favor intente de nuevo."/> + </match> + </input> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 resultados coinciden con su busqueda."/> + </match> + </input> + </macro> + + <macro name="directory_result_count_too_large"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Su busqueda genera demasiados resultados. Por favor intente de nuevo."/> + </match> + </input> + + </macro> + + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="No hay más resultados."/> + </match> + </input> + + </macro> + + <macro name="directory_result_item"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Resultado número $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="Para seleccionar este resultado pulse $1, para el resultado siguiente pulse $2, para el resultado previo pulse $3, para empezar una nueva busqueda pulse $4"/> + </match> + </input> + </macro> + + <macro name="directory_result_at"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="en la extensión $1"/> + </match> + </input> + </macro> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1"/> + </match> + </input> + </macro> + +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/es_ES.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/es_ES.xml new file mode 100644 index 0000000000000000000000000000000000000000..3467bed1b0c85afe97949a5d2a822f76253a5ab5 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/es_ES.xml @@ -0,0 +1,12 @@ +<include> + <language name="es" sound-path="$${sounds_dir}/es/ES/cristina" tts-engine="cepstral" tts-voice="marta"> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="demo/*-es-ES.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml --> + <!--voicemail_es_ES_tts is purely implemented with tts, we have the files based one that is the default. --> + <X-PRE-PROCESS cmd="include" data="vm/sounds-es-ES.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral --> + <X-PRE-PROCESS cmd="include" data="dir/sounds-es-ES.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral --> + </macros> + </phrases> + </language> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/es_MX.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/es_MX.xml new file mode 100644 index 0000000000000000000000000000000000000000..e44f81944365ff92f726ec1439d96ab7ae42677e --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/es_MX.xml @@ -0,0 +1,12 @@ +<include> + <language name="es" sound-path="$${sounds_dir}/es/mx/maria" tts-engine="cepstral" tts-voice="marta"> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="demo/*-es-MX.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml --> + <!--voicemail_es_MX_tts is purely implemented with tts, we have the files based one that is the default. --> + <X-PRE-PROCESS cmd="include" data="vm/sounds-es-MX.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral --> + <X-PRE-PROCESS cmd="include" data="dir/sounds-es-MX.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral --> + </macros> + </phrases> + </language> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/sounds-es-ES.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/sounds-es-ES.xml new file mode 100644 index 0000000000000000000000000000000000000000..dcc9d9f76f576f114fc3118304b36d1e74b556ab --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/sounds-es-ES.xml @@ -0,0 +1,404 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-abort.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^(1):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="play-file" data="digits/un.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <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"/> + <action function="play-file" data="voicemail/vm-$2_s.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-listen_new.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-listen_saved.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To exit --> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + </match> + </input> + </macro> + + <macro name="voicemail_config_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To change password --> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail_forward_prepend"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + </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="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_message.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_message_number"> + <input pattern="^([a-z]+):(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="voicemail_ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-too-small.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_date"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="current_date_time"/> + </match> + </input> + </macro> + + <macro name="voicemail_disk_quota_exceeded"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> + </input> + </macro> + + <macro name="valet_announce_ext"> + <input pattern="^([^\:]+):(.*)$"> + <match> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="valet_lot_full"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> + + <macro name="valet_lot_empty"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/sounds-es-MX.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/sounds-es-MX.xml new file mode 100644 index 0000000000000000000000000000000000000000..1f22c43bdc5e4799d57c96ce9df948d755a0bf6b --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/sounds-es-MX.xml @@ -0,0 +1,404 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-abort.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^(1):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="play-file" data="digits/un.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <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"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-listen_new.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-listen_saved.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To exit --> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + </match> + </input> + </macro> + + <macro name="voicemail_config_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To change password --> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail_forward_prepend"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + </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="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_message.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_message_number"> + <input pattern="^([a-z]+):(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="voicemail_ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-too-small.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_date"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="current_date_time"/> + </match> + </input> + </macro> + + <macro name="voicemail_disk_quota_exceeded"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> + </input> + </macro> + + <macro name="valet_announce_ext"> + <input pattern="^([^\:]+):(.*)$"> + <match> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="valet_lot_full"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> + + <macro name="valet_lot_empty"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/tts-es-ES.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/tts-es-ES.xml new file mode 100644 index 0000000000000000000000000000000000000000..6dab48ca60ec8add5ab84d0dc0e02f5d6a7adcc8 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/tts-es-ES.xml @@ -0,0 +1,238 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor introduzca su número de usuario, seguido por $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor introduzca su contraseña, seguido por $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Inicio de sesión incorrecto."/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Bienvenido a su buzón de voz."/> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Adiós."/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Demasiados intentos fallidos."/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^1:(.*)$" break_on_match="true"> + <match> + <action function="speak-text" data="Usted tiene 1 $1 mensaje en la bandeja de entrada ${voicemail_current_folder}."/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <action function="speak-text" data="Usted tiene $1 $2 mensajes en la bandeja de entrada ${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="Para escuchar mensajes nuevos, pulse $1. Para escuchar mensajes guardados, pulse $2. Para opciones avanzadas, pulse $3. Para salir, pulse $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="Para grabar un saludo, pulse $1. Para elegir un saludo, pulse $2. Para grabar su nombre, pulse $3. Para cambiar su contraseña, pulse $5. Para el menú principal, pulse $5."/> + </match> + </input> + </macro> + + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Por favor grabe su nombre después de la señal, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para regrabar, pulse $3."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para marcar este mensaje como urgente, pulse $1. Para continuar, pulse $2."/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="$1 no es una extensión válida."/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Introduzca la extensión a la cual quiere enviar este mensaje, seguido de $1"/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_prepend"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Para grabar un saludo, pulse $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="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para eliminar la grabación, pulse $3. Para enviar la grabación a su e-mail, pulse $4. Para devolver la llamada, pulse $5. Para enviar este mensaje a otra extensión, pulse $6."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Elija un saludo entre 1 y 9."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Valor inválido."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Grabe su saludo después de la señal, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Grabe su mensaje después de la señal, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Saludo $1 seleccionado."/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 no está disponible."/> + </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 mensaje número $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="mensaje $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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/tts-es-MX.xml b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/tts-es-MX.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce5722e9348a598c28ada57d25970aa4279b8b34 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/es/vm/tts-es-MX.xml @@ -0,0 +1,238 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor ingrese su número de usuario, seguido por $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor ingrese su contraseña, seguido por $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Inicio de sesión incorrecto."/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Bienvenido a su buzón de voz."/> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Adiós."/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Demasiados intentos fallidos."/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^1:(.*)$" break_on_match="true"> + <match> + <action function="speak-text" data="Usted tiene 1 $1 mensaje en la bandeja de entrada ${voicemail_current_folder}."/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <action function="speak-text" data="Usted tiene $1 $2 mensajes en la bandeja de entrada ${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="Para escuchar mensajes nuevos, pulse $1. Para escuchar mensajes guardados, pulse $2. Para opciones avanzadas, pulse $3. Para salir, pulse $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="Para grabar un saludo, pulse $1. Para elegir un saludo, pulse $2. Para grabar su nombre, pulse $3. Para cambiar su contraseña, pulse $5. Para el menú principal, pulse $5."/> + </match> + </input> + </macro> + + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Después del tono, por favor anote su nombre, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para regrabar, pulse $3."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para marcar este mensaje como urgente, pulse $1. Para continuar, pulse $2."/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="$1 no es una extensión válida."/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Introduzca la extensión a la cual quiere enviar este mensaje, seguido de $1"/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_prepend"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Para grabar un saludo, pulse $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="Para escuchar la grabación, pulse $1. Para guardar la grabación, pulse $2. Para eliminar la grabación, pulse $3. Para enviar la grabación a su e-mail, pulse $4. Para devolver la llamada, pulse $5. Para enviar este mensaje a otra extensión, pulse $6."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Elija un saludo entre 1 y 9."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Valor inválido."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Grabe su saludo después del tono, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Grabe su mensaje después del tono, pulse cualquier tecla o deje de hablar para poner fin a la grabación."/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Saludo $1 seleccionado."/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 no está disponible."/> + </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 mensaje número $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="mensaje $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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/fr/demo/demo.xml b/bbb-voice-conference/config/freeswitch/conf/lang/fr/demo/demo.xml index 80660203a3b28d3dd9f8850930363f7ee45659bc..0d0de592acc22fcadb9aaead331889e1a80e8c66 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/fr/demo/demo.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/fr/demo/demo.xml @@ -1,18 +1,29 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> -<macro name="msgcount"> - <input pattern="(.*)"> - <match> - <action function="play-file" data="tuas.wav"/> - <action function="say" data="$1" method="pronounced" type="items"/> - <action function="play-file" data="messages.wav"/> - </match> - </input> -</macro> -<macro name="timeleft"> - <input pattern="(\d+):(\d+)"> - <match> - <action function="speak-text" data="il reste $1 minutes et $2 secondes"/> - </match> - </input> -</macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="msgcount"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="tuas.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="messages.wav"/> + </match> + </input> + </macro> + <macro name="timeleft"> + <input pattern="(\d+):(\d+)"> + <match> + <action function="speak-text" data="il reste $1 minutes et $2 secondes"/> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/sounds.xml index 02d6b3671f98d61b9dd21acb8ea0b7d764ed039b..a0dcb2c0e9a4523f44e730f41d39abac99823bda 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/sounds.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/sounds.xml @@ -1,121 +1,130 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> - <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="directory/dir-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="directory/dir-press.wav"/> - <action function="say" data="$2" method="pronounced" type="name_spelled"/> - </match> - </input> - </macro> +<include> - <macro name="directory_min_search_digits"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-specify_mininum_first.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_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="directory/dir-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="directory/dir-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> - <macro name="directory_result_count"> - <input pattern="^0$" break_on_match="true"> - <match> - <action function="play-file" data="directory/dir-no_match_entry.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_min_search_digits"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="directory/dir-specify_mininum_first.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_too_large"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-to_many_result.wav"/> - </match> - </input> + <macro name="directory_result_count"> + <input pattern="^0$" break_on_match="true"> + <match> + <action function="play-file" data="directory/dir-no_match_entry.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> + <macro name="directory_result_count_too_large"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="directory/dir-to_many_result.wav"/> + </match> + </input> + </macro> - <macro name="directory_result_last"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-no_more_result.wav"/> - </match> - </input> + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="directory/dir-no_more_result.wav"/> + </match> + </input> + </macro> - </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_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_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="directory/dir-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="directory/dir-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="directory/dir-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="play-file" data="directory/dir-to_make_new_search.wav"/> + <action function="play-file" data="directory/dir-press.wav"/> + <action function="say" data="$4" 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="directory/dir-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="directory/dir-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="directory/dir-press.wav"/> - <action function="say" data="$3" method="pronounced" type="name_spelled"/> - <action function="play-file" data="directory/dir-to_make_new_search.wav"/> - <action function="play-file" data="directory/dir-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> - </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><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/tts.xml b/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/tts.xml index 1f5b0caa63d21836514efb3614ff3fcd7c1f0fa9..7d3e5e309022c86b5bed190410ca0f4baec96d1a 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/tts.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/fr/dir/tts.xml @@ -1,101 +1,110 @@ -<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="speak-text" data="Veuillez entrer les premières lettres du nom de famille"/> - </match> - </input> - <input pattern="^(first_name)" break_on_match="false"> - <match> - <action function="speak-text" data="Veuillez entrer les premières lettres du prénom"/> - </match> - </input> - <input pattern="^(last_name):([0-9#*])$" break_on_match="false"> - <match> - <action function="speak-text" data="pour chercher par prénom, tapez $2"/> - </match> - </input> - <input pattern="^(first_name):([0-9#*])$" break_on_match="false"> - <match> - <action function="speak-text" data="pour chercher par nom de famille, tapez $2"/> - </match> - </input> - </macro> + <macro name="directory_intro"> + <input pattern="^(last_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Veuillez entrer les premières lettres du nom de famille"/> + </match> + </input> + <input pattern="^(first_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Veuillez entrer les premières lettres du prénom"/> + </match> + </input> + <input pattern="^(last_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="pour chercher par prénom, tapez $2"/> + </match> + </input> + <input pattern="^(first_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="pour chercher par nom de famille, tapez $2"/> + </match> + </input> + </macro> - <macro name="directory_min_search_digits"> - <input pattern="^(1)$"> - <match> - <action function="speak-text" data="Vous devez entrer au minimum une lettre du nom de la personne, essayez encore"/> - </match> - </input> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="Vous devez entrer au minimum $1 lettres du nom de la personne, essayer encore"/> - </match> - </input> - </macro> + <macro name="directory_min_search_digits"> + <input pattern="^(1)$"> + <match> + <action function="speak-text" data="Vous devez entrer au minimum une lettre du nom de la personne, essayez encore"/> + </match> + </input> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Vous devez entrer au minimum $1 lettres du nom de la personne, essayer encore"/> + </match> + </input> + </macro> - <macro name="directory_result_count"> - <input pattern="^0$" break_on_match="true"> - <match> - <action function="speak-text" data="Votre recherche n'a retournée aucun résultat, essayez encore"/> - </match> - </input> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="$1 résultats correspondent à votre recherche"/> - </match> - </input> - </macro> + <macro name="directory_result_count"> + <input pattern="^0$" break_on_match="true"> + <match> + <action function="speak-text" data="Votre recherche n'a retournée aucun résultat, essayez encore"/> + </match> + </input> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 résultats correspondent à votre recherche"/> + </match> + </input> + </macro> - <macro name="directory_result_count_too_large"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="Votre recherche retourne trop de résultats, essayer encore"/> - </match> - </input> + <macro name="directory_result_count_too_large"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Votre recherche retourne trop de résultats, essayer encore"/> + </match> + </input> + </macro> - </macro> + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Fin des résultats."/> + </match> + </input> + </macro> - <macro name="directory_result_last"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="Fin des résultats."/> - </match> - </input> + <macro name="directory_result_item"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Résultat numéro $1"/> + </match> + </input> + </macro> - </macro> + <macro name="directory_result_menu"> + <input pattern="^([0-9#*]),([0-9#*]),([0-9#*]),([0-9#*])$"> + <match> + <action function="speak-text" data="Pour sélectionner ce nom, tapez $1, pour le nom suivant tapez $2, pour le nom précédent, tapez $3, pour faire une nouvelle recherche, tapez $4"/> + </match> + </input> + </macro> - <macro name="directory_result_item"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="Résultat numéro $1"/> - </match> - </input> - </macro> + <macro name="directory_result_at"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="au poste $1"/> + </match> + </input> + </macro> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$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="Pour sélectionner ce nom, tapez $1, pour le nom suivant tapez $2, pour le nom précédent, tapez $3, pour faire une nouvelle recherche, tapez $4"/> - </match> - </input> - </macro> - - <macro name="directory_result_at"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="au poste $1"/> - </match> - </input> - </macro> - <macro name="directory_result_say_name"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="$1"/> - </match> - </input> - </macro> - -</include><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/fr/fr.xml b/bbb-voice-conference/config/freeswitch/conf/lang/fr/fr.xml index 12bec06f20cebdf844ad2657136673a1698e8a7f..124ca02415eca0de89cf001fa1b03456c0a4930c 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/fr/fr.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/fr/fr.xml @@ -1,8 +1,23 @@ <include> - <language name="fr" sound-path="/snds" tts-engine="cepstral" tts-voice="david"> - <X-PRE-PROCESS cmd="include" data="demo/demo.xml"/> - <!--voicemail_fr_tts is purely implemented with tts, we need a files based implementation too --> - <X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> - <X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral --> + <language name="fr" say-module="fr" sound-prefix="$${sounds_dir}/fr/ca/june" tts-engine="cepstral" tts-voice="david"> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="demo/demo.xml"/> + <!-- voicemail_fr_tts is purely implemented with tts, we need a files based implementation too --> + <X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> + <X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral --> + </macros> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/fr/vm/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/fr/vm/sounds.xml index 55190a6bac7f393fc4574aebe5115f2ae3291c69..9cd209eab13832df9704b25f3b343f2c87375ae6 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/fr/vm/sounds.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/fr/vm/sounds.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8"?> -<include><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="voicemail_enter_id"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Entrez votre Identification, suivi par $1."/> + <action function="speak-text" data="Entrez votre Identification, suivi par $1."/> </match> </input> </macro> @@ -11,7 +11,7 @@ <macro name="voicemail_enter_pass"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Entrez votre code, suivi par $1."/> + <action function="speak-text" data="Entrez votre code, suivi par $1."/> </match> </input> </macro> @@ -19,7 +19,7 @@ <macro name="voicemail_fail_auth"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Identification incorrecte."/> + <action function="speak-text" data="Identification incorrecte."/> </match> </input> </macro> @@ -27,7 +27,7 @@ <macro name="voicemail_hello"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Bienvenue sur votre répondeur."/> + <action function="speak-text" data="Bienvenue sur votre répondeur."/> </match> </input> </macro> @@ -35,7 +35,7 @@ <macro name="voicemail_goodbye"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Au revoir."/> + <action function="speak-text" data="Au revoir."/> </match> </input> </macro> @@ -43,7 +43,7 @@ <macro name="voicemail_abort"> <input pattern="(.*)"> <match> - <action function="speak-text" data="Trop de tentatives ont échouées."/> + <action function="speak-text" data="Trop de tentatives ont échouées."/> </match> </input> </macro> @@ -51,17 +51,17 @@ <macro name="voicemail_message_count"> <input pattern="^([^:]+):urgent-new"> <match> - <action function="speak-text" data="Vous avez $1 nouveaux messages urgents dans le répertoire ${voicemail_current_folder}."/> + <action function="speak-text" data="Vous avez $1 nouveaux messages urgents dans le répertoire ${voicemail_current_folder}."/> </match> </input> <input pattern="^([^:]+):new"> <match> - <action function="speak-text" data="Vous avez $1 nouveaux messages dans le répertoire ${voicemail_current_folder}."/> + <action function="speak-text" data="Vous avez $1 nouveaux messages dans le répertoire ${voicemail_current_folder}."/> </match> </input> <input pattern="^([^:]+):saved"> <match> - <action function="speak-text" data="Vous avez $1 messages sauvegardés dans le répertoire ${voicemail_current_folder}."/> + <action function="speak-text" data="Vous avez $1 messages sauvegardés dans le répertoire ${voicemail_current_folder}."/> </match> </input> </macro> @@ -69,27 +69,25 @@ <macro name="voicemail_menu"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Pour écouter les nouveaux messages, tapez $1, Pour écouter les messages enregistrés, tapez $2, Pour les options avancées, tapez $3, pour sortir, tapez $4."/> + <action function="speak-text" + data="Pour écouter les nouveaux messages, tapez $1, Pour écouter les messages enregistrés, tapez $2, Pour les options avancées, tapez $3, pour sortir, tapez $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="pour enregistrer un message d'accueil, tapez $1, Pour choisir votre message d'accueil, tapez $2, Pour enregistrer votre nom, tapez $3, Pour changer votre mot de passe, tapez $4, Pour retourner au menu principal, tapez $5."/> + <action function="speak-text" + data="pour enregistrer un message d'accueil, tapez $1, Pour choisir votre message d'accueil, tapez $2, Pour enregistrer votre nom, tapez $3, Pour changer votre mot de passe, tapez $4, Pour retourner au menu principal, tapez $5."/> </match> </input> </macro> - <macro name="voicemail_record_name"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="enregistrez votre nom après le bip, puis tapez une touche, ou arrêtez de parler pour arrêter l'enregistrement."/> + <action function="speak-text" data="enregistrez votre nom après le bip, puis tapez une touche, ou arrêtez de parler pour arrêter l'enregistrement."/> </match> </input> @@ -98,8 +96,8 @@ <macro name="voicemail_record_file_check"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Pour écouter l'enregistrement, tapez $1, pour sauvegarder l'enregistrement, tapez $2, Pour réenregistrer, tapez $3."/> + <action function="speak-text" + data="Pour écouter l'enregistrement, tapez $1, pour sauvegarder l'enregistrement, tapez $2, Pour réenregistrer, tapez $3."/> </match> </input> </macro> @@ -107,8 +105,8 @@ <macro name="voicemail_record_urgent_check"> <input pattern="^([0-9#*]):([0-9#*])$"> <match> - <action function="speak-text" - data="Pour indiquer que ce message est urgent, tapez $1, Pour continuer, tapez $2."/> + <action function="speak-text" + data="Pour indiquer que ce message est urgent, tapez $1, Pour continuer, tapez $2."/> </match> </input> </macro> @@ -116,8 +114,8 @@ <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="Pour réécouter l'enregistrement à nouveau, tapez $1, Pour sauvegarder l'enregistrement, tapez $2, Pour supprimer l'enregistrement, tapez $3, pour transférer l'enregistrement à votre email $8, tapez $4, Pour appeler l'auteur du message, tapez $5, Pour transférer ce message à un autre numéro, tapez $6."/> + <action function="speak-text" + data="Pour réécouter l'enregistrement à nouveau, tapez $1, Pour sauvegarder l'enregistrement, tapez $2, Pour supprimer l'enregistrement, tapez $3, pour transférer l'enregistrement à votre email $8, tapez $4, Pour appeler l'auteur du message, tapez $5, Pour transférer ce message à un autre numéro, tapez $6."/> </match> </input> </macro> @@ -125,7 +123,7 @@ <macro name="voicemail_choose_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="choisissez un message d'accueil entre 1 et 3."/> + <action function="speak-text" data="choisissez un message d'accueil entre 1 et 3."/> </match> </input> </macro> @@ -133,7 +131,7 @@ <macro name="voicemail_choose_greeting_fail"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="valeur incorrecte."/> + <action function="speak-text" data="valeur incorrecte."/> </match> </input> </macro> @@ -141,7 +139,7 @@ <macro name="voicemail_record_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="enregistrez votre message d'accueil après le bip, puis tapez une touche ou arrêtez de parler pour arrêter l'enregistrement."/> + <action function="speak-text" data="enregistrez votre message d'accueil après le bip, puis tapez une touche ou arrêtez de parler pour arrêter l'enregistrement."/> </match> </input> </macro> @@ -149,7 +147,7 @@ <macro name="voicemail_record_message"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="enregistrez votre message après le bip, puis tapez une touche ou arrêtez de parler pour arrêter l'enregistrement."/> + <action function="speak-text" data="enregistrez votre message après le bip, puis tapez une touche ou arrêtez de parler pour arrêter l'enregistrement."/> </match> </input> </macro> @@ -157,7 +155,7 @@ <macro name="voicemail_greeting_selected"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="message d'accueil numéro $1 sélectionné."/> + <action function="speak-text" data="message d'accueil numéro $1 sélectionné."/> </match> </input> </macro> @@ -165,7 +163,7 @@ <macro name="voicemail_play_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1 n'est pas disponible."/> + <action function="speak-text" data="$1 n'est pas disponible."/> </match> </input> </macro> @@ -173,7 +171,7 @@ <macro name="voicemail_say_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1"/> + <action function="speak-text" data="$1"/> </match> </input> </macro> @@ -181,12 +179,12 @@ <macro name="voicemail_say_message_number"> <input pattern="^new:(.*)$"> <match> - <action function="speak-text" data="nouveau message numéro $1."/> + <action function="speak-text" data="nouveau message numéro $1."/> </match> </input> <input pattern="^saved:(.*)$"> <match> - <action function="speak-text" data="message sauvegardé numéro $1."/> + <action function="speak-text" data="message sauvegardé numéro $1."/> </match> </input> </macro> @@ -194,7 +192,7 @@ <macro name="voicemail_say_phone_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -202,7 +200,7 @@ <macro name="voicemail_say_name"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -210,27 +208,27 @@ <macro name="voicemail_ack"> <input pattern="^(too-small)$"> <match> - <action function="speak-text" data="message trop court"/> + <action function="speak-text" data="message trop court"/> </match> </input> <input pattern="^(deleted)$"> <match> - <action function="speak-text" data="message supprimé"/> + <action function="speak-text" data="message supprimé"/> </match> </input> <input pattern="^(saved)$"> <match> - <action function="speak-text" data="message sauvegardé"/> + <action function="speak-text" data="message sauvegardé"/> </match> </input> <input pattern="^(emailed)$"> <match> - <action function="speak-text" data="message envoyé"/> + <action function="speak-text" data="message envoyé"/> </match> </input> <input pattern="^(marked-urgent)$"> <match> - <action function="speak-text" data="message marqué urgent"/> + <action function="speak-text" data="message marqué urgent"/> </match> </input> </macro> @@ -238,9 +236,20 @@ <macro name="voicemail_say_date"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="${strftime($1|%e/%m/%Y, %H heures %M)}"/> + <action function="speak-text" data="${strftime($1|%e/%m/%Y, %H heures %M)}"/> </match> </input> </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> \ No newline at end of file +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/he/demo/demo-ivr.xml b/bbb-voice-conference/config/freeswitch/conf/lang/he/demo/demo-ivr.xml new file mode 100644 index 0000000000000000000000000000000000000000..df8d24b751ece5fc0fc998376de245612f38670d --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/he/demo/demo-ivr.xml @@ -0,0 +1,157 @@ +<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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/he/demo/demo.xml b/bbb-voice-conference/config/freeswitch/conf/lang/he/demo/demo.xml new file mode 100644 index 0000000000000000000000000000000000000000..bcfe6a822760be8c0c5ef31a61783c33489d4d34 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/he/demo/demo.xml @@ -0,0 +1,82 @@ +<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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/he/dir/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/he/dir/sounds.xml new file mode 100644 index 0000000000000000000000000000000000000000..5fd13fffc57783eed513f7f18a9ae5463b49cd17 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/he/dir/sounds.xml @@ -0,0 +1,130 @@ +<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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/he/he.xml b/bbb-voice-conference/config/freeswitch/conf/lang/he/he.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cca73c1e80444a385a7cbe3d02c7c260394bbac --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/he/he.xml @@ -0,0 +1,22 @@ +<include> + <language name="he" sound-prefix="$${sounds_dir}/he/daniel" tts-engine="cepstral" tts-voice="daniel"> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="demo/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml --> + <X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> + <X-PRE-PROCESS cmd="include" data="dir/sounds.xml"/> + </macros> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/he/vm/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/he/vm/sounds.xml new file mode 100644 index 0000000000000000000000000000000000000000..9c1a4dfd7d36a7d1b925d8c38fbd592842526c47 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/he/vm/sounds.xml @@ -0,0 +1,417 @@ +<include> + + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-abort.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^(1):(.*)$" break_on_match="true"> + <match> + <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-$2.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <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-$2.wav"/> + <action function="play-file" data="voicemail/vm-messages.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-listen_new.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-listen_saved.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To exit --> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + </match> + </input> + </macro> + + <macro name="voicemail_config_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To change password --> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail_forward_prepend"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + </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="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_message.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_message_number"> + <input pattern="^([a-z]+):(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="voicemail_ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-too-small.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_date"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="current_date_time"/> + </match> + </input> + </macro> + + <macro name="voicemail_disk_quota_exceeded"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> + </input> + </macro> + + <macro name="valet_announce_ext"> + <input pattern="^([^\:]+):(.*)$"> + <match> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="valet_lot_full"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> + + <macro name="valet_lot_empty"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-ivr-pt-BR.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-ivr-pt-BR.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec7d7bccd21aac77b6bb1bab1b6e37931c0cea7c --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-ivr-pt-BR.xml @@ -0,0 +1,148 @@ +<?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="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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-ivr-pt-PT.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-ivr-pt-PT.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec7d7bccd21aac77b6bb1bab1b6e37931c0cea7c --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-ivr-pt-PT.xml @@ -0,0 +1,148 @@ +<?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="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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-pt-BR.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-pt-BR.xml new file mode 100644 index 0000000000000000000000000000000000000000..846561a5416003cc2d82b23e0ec3b39db9598829 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-pt-BR.xml @@ -0,0 +1,71 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="Faltam $1 minutos, $2 segundos $strftime(%Y-%m-%d)"/> + <action function="break"/> + </match> + <nomatch> + <action function="speak-text" data="Essa opção não é valida."/> + </nomatch> + </input> + <input pattern="(\d+) min (\d+) sec"> + <match> + <action function="speak-text" data="Faltam $1 minutos, $2 segundos $strftime(%Y-%m-%d)"/> + </match> + <nomatch> + <action function="speak-text" data="Essa opção não é valida."/> + </nomatch> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-pt-PT.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-pt-PT.xml new file mode 100644 index 0000000000000000000000000000000000000000..34464f7a6d46f3452df44cb9e566b1d64dbba64d --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/demo/demo-pt-PT.xml @@ -0,0 +1,71 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="Você tem $1 mensagens"/>--> + </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="Faltam $1 minutos, $2 segundos $strftime(%Y-%m-%d)"/> + <action function="break"/> + </match> + <nomatch> + <action function="speak-text" data="Essa era uma entrada inválida."/> + </nomatch> + </input> + <input pattern="(\d+) min (\d+) sec"> + <match> + <action function="speak-text" data="Faltam $1 minutos, $2 segundos $strftime(%Y-%m-%d)"/> + </match> + <nomatch> + <action function="speak-text" data="Essa era uma entrada inválida."/> + </nomatch> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/sounds-pt-BR.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/sounds-pt-BR.xml new file mode 100644 index 0000000000000000000000000000000000000000..2bdc1492ec487b4876916e49096e0d20ac250c51 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/sounds-pt-BR.xml @@ -0,0 +1,121 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/sounds-pt-PT.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/sounds-pt-PT.xml new file mode 100644 index 0000000000000000000000000000000000000000..2bdc1492ec487b4876916e49096e0d20ac250c51 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/sounds-pt-PT.xml @@ -0,0 +1,121 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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="directory/dir-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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/tts-pt-BR.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/tts-pt-BR.xml new file mode 100644 index 0000000000000000000000000000000000000000..71b79c60a81687fe410ad8e67a770b834f5ce14a --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/tts-pt-BR.xml @@ -0,0 +1,96 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + + <macro name="directory_intro"> + <input pattern="^(last_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Por favor marque as primeiras letras do apelido da pessoa"/> + </match> + </input> + <input pattern="^(first_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Por favor marque as primeiras letras do nome da pessoa"/> + </match> + </input> + <input pattern="^(last_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para buscar por primeiro nome, digite $2"/> + </match> + </input> + <input pattern="^(first_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para buscar por apelido, digite $2"/> + </match> + </input> + </macro> + + <macro name="directory_min_search_digits"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Você precisa dizer um mÃnimo de $1 letras do nome da pessoa, tente novamente."/> + </match> + </input> + </macro> + + <macro name="directory_result_count"> + <input pattern="^0$" break_on_match="true"> + <match> + <action function="speak-text" data="Não foram encontrados resultados, tente novamente."/> + </match> + </input> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 resultados encontrados para a sua busca."/> + </match> + </input> + </macro> + + <macro name="directory_result_count_too_large"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="A sua busca devolveu muitos resultados, por favor tente novamente."/> + </match> + </input> + + </macro> + + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Não há mais resultados."/> + </match> + </input> + + </macro> + + <macro name="directory_result_item"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Resultado número $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="Para escolher este resultado digite $1, Para o resultado seguinte digite $2, Para o resultado anterior digite $3, Para uma nova busca digite $4"/> + </match> + </input> + </macro> + + <macro name="directory_result_at"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="No ramal $1"/> + </match> + </input> + </macro> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1"/> + </match> + </input> + </macro> + +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/tts-pt-PT.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/tts-pt-PT.xml new file mode 100644 index 0000000000000000000000000000000000000000..4f03c5abdb98afc0edf5511e04e757f33956705f --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/dir/tts-pt-PT.xml @@ -0,0 +1,96 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + + <macro name="directory_intro"> + <input pattern="^(last_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Por favor introduza os primeiras letras do apelido da pessoa"/> + </match> + </input> + <input pattern="^(first_name)" break_on_match="false"> + <match> + <action function="speak-text" data="Por favor introduza os primeiros dÃgitos do primeiro nome da pessoa"/> + </match> + </input> + <input pattern="^(last_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para pesquisar por primeiro nome, marque $2"/> + </match> + </input> + <input pattern="^(first_name):([0-9#*])$" break_on_match="false"> + <match> + <action function="speak-text" data="Para pesquisar por apelido, marque $2"/> + </match> + </input> + </macro> + + <macro name="directory_min_search_digits"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Você necessita de especificar um mÃnimo de $1 letras do nome da pessoa, tente novamente."/> + </match> + </input> + </macro> + + <macro name="directory_result_count"> + <input pattern="^0$" break_on_match="true"> + <match> + <action function="speak-text" data="Não foram encontrados resultados, tente novamente."/> + </match> + </input> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 resultados encontrados para a sua pesquisa."/> + </match> + </input> + </macro> + + <macro name="directory_result_count_too_large"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="A sua pesquisa devolveu demasiados resultados, por favor tente novamente."/> + </match> + </input> + + </macro> + + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Não há mais resultados"/> + </match> + </input> + + </macro> + + <macro name="directory_result_item"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Resultado número $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="Para seleccionar este resultado marque $1, Para o resultado seguinte marque $2, Para o resultado anterior marque $3, Para iniciar uma nova pesquisa marque $4"/> + </match> + </input> + </macro> + + <macro name="directory_result_at"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Na extensão $1"/> + </match> + </input> + </macro> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1"/> + </match> + </input> + </macro> + +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/pt_BR.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/pt_BR.xml new file mode 100644 index 0000000000000000000000000000000000000000..f85c5b6d5f11c19d72a777850471e042a90cfd0a --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/pt_BR.xml @@ -0,0 +1,12 @@ +<include> + <language name="pt" sound-path="$${sounds_dir}/pt/BR/karina" tts-engine="cepstral" tts-voice="marta"> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="demo/*-pt-BR.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml --> + <!--voicemail_pt_BR_tts is purely implemented with tts, we have the files based one that is the default. --> + <X-PRE-PROCESS cmd="include" data="vm/sounds-pt-BR.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral --> + <X-PRE-PROCESS cmd="include" data="dir/sounds-pt-BR.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral --> + </macros> + </phrases> + </language> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/pt_PT.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/pt_PT.xml new file mode 100644 index 0000000000000000000000000000000000000000..2ac59e9168b53f871adb558f835b58f001bf8762 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/pt_PT.xml @@ -0,0 +1,12 @@ +<include> + <language name="pt" sound-path="$${sounds_dir}/pt/PT/karina" tts-engine="cepstral" tts-voice="marta"> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="demo/*-pt-PT.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml --> + <!--voicemail_pt_PT_tts is purely implemented with tts, we have the files based one that is the default. --> + <X-PRE-PROCESS cmd="include" data="vm/sounds-pt-PT.xml"/> <!-- vm/tts.xml if you want to use tts and have cepstral --> + <X-PRE-PROCESS cmd="include" data="dir/sounds-pt-PT.xml"/> <!-- dir/tts.xml if you want to use tts and have cepstral --> + </macros> + </phrases> + </language> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/sounds-pt-BR.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/sounds-pt-BR.xml new file mode 100644 index 0000000000000000000000000000000000000000..1ab472a71e9058363a8bc3eae925f4208185d6c1 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/sounds-pt-BR.xml @@ -0,0 +1,404 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-abort.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^(1):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="play-file" data="digits/uma.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <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"/> + <action function="play-file" data="voicemail/vm-$2_s.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-listen_new.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-listen_saved.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To exit --> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + </match> + </input> + </macro> + + <macro name="voicemail_config_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To change password --> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail_forward_prepend"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + </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="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_message.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_message_number"> + <input pattern="^([a-z]+):(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="voicemail_ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-too-small.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_date"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="current_date_time"/> + </match> + </input> + </macro> + + <macro name="voicemail_disk_quota_exceeded"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> + </input> + </macro> + + <macro name="valet_announce_ext"> + <input pattern="^([^\:]+):(.*)$"> + <match> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="valet_lot_full"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> + + <macro name="valet_lot_empty"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/sounds-pt-PT.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/sounds-pt-PT.xml new file mode 100644 index 0000000000000000000000000000000000000000..587d3fe5bdd4caea9cd55fb004be623e7eedb391 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/sounds-pt-PT.xml @@ -0,0 +1,404 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <!--<action function="play-file" data="voicemail/vm-hello.wav"/> --> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-abort.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^(1):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="play-file" data="digits/uma.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <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"/> + <action function="play-file" data="voicemail/vm-$2_s.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-listen_new.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-listen_saved.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To exit --> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + </match> + </input> + </macro> + + <macro name="voicemail_config_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-to_record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-choose_greeting.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To change password --> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(100)"/> + + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail_forward_prepend"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + </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="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-forward_to_email.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-delete_recording.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="voicemail/vm-return_call.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-to_forward.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-record_message.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_message_number"> + <input pattern="^([a-z]+):(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="voicemail_ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-too-small.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_date"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="current_date_time"/> + </match> + </input> + </macro> + + <macro name="voicemail_disk_quota_exceeded"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-mailbox_full.wav"/> + </match> + </input> + </macro> + + <macro name="valet_announce_ext"> + <input pattern="^([^\:]+):(.*)$"> + <match> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="valet_lot_full"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> + + <macro name="valet_lot_empty"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/tts-pt-BR.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/tts-pt-BR.xml new file mode 100644 index 0000000000000000000000000000000000000000..4f770457e58037deb67d45d09b3d7329812bbef6 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/tts-pt-BR.xml @@ -0,0 +1,239 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor digite o seu número de usuario, e depois $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor digite a sua contrasenha, e depois $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Inicio incorreto da sessão."/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Bem-vindo ao seu correio de voz."/> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Até logo."/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Muitas tentativas fracassadas."/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^1:(.*)$" break_on_match="true"> + <match> + <action function="speak-text" data="Você tem 1 $1 mensagem no directório ${voicemail_current_folder}."/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <action function="speak-text" data="Você tem $1 $2 mensagens no directório ${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="Para ouvir as mensagens novas, digite $1, Para ouvir as mensagens armazenadas, digite $2, Para opções avançadas, digite $3, Para sair, digite $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="Para gravar a sua saudação, digite $1, Para escolher a sua saudação, digite $2, Para gravar o seu nome, digite $3, Para mudar a sua senha, digite $5, Para o menu principal, digite $5."/> + </match> + </input> + </macro> + + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Após o sinal grave o seu nome, digite qualquer tecla ou deixe de falar para finalizar a gravação."/> + + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para ouvir a gravação, digite $1, Para guardar a gravação, digite $2, Para gravar novamente, digite $3."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para marcar esta mensagem como urgente, digite $1, Para continuar, digite $2."/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="$1 não é um ramal válido."/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Marque o ramal para o qual pretende encaminhar esta mensagem, e depois $1"/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_prepend"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Para gravar um anúncio, digite $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="Para ouvir a gravação novamente, press $1, Para guardar a gravação, press $2, Para borrar a gravação, press $3, Para enviar a gravação para o seu email, press $4, Para devolver a ligação agora, press $5, Para encaminhar esta mensagem para outro ramal, press $6."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Escolha uma saudação entre as opções 1 e 3."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Valor inválido."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Após o sinal grave a sua saudação, digite qualquer tecla ou deixe de falar para finalizar a gravação."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Após o sinal grave a sua mensagem, digite qualquer tecla ou deixe de falar para finalizar a gravação."/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Saudação $1 selecionada."/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 não está disponÃvel."/> + </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 mensagem número $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="Mensagem $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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/tts-pt-PT.xml b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/tts-pt-PT.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3dfc3a0669ae570bd6f8ed959ede35d0411e4ff --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/pt/vm/tts-pt-PT.xml @@ -0,0 +1,238 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor introduza o seu número de utilizador, seguido de $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Por favor introduza a sua palavra passe, seguida de $1."/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Falha na autenticação."/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Bem-vindo ao seu correio de voz."/> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Até breve."/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="speak-text" data="Demasiadas tentativas falhadas."/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <input pattern="^1:(.*)$" break_on_match="true"> + <match> + <action function="speak-text" data="Você tem 1 $1 mensagen no directório ${voicemail_current_folder}."/> + </match> + </input> + <input pattern="^(\d+):(.*)$"> + <match> + <action function="speak-text" data="Você tem $1 $2 mensagens no directório ${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="Para ouvir as mensagens novas, marque $1, Para ouvir as mensagens guardadas, marque $2, Para opções avançadas, marque $3, Para sair, marque $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="Para gravar a sua saudação, marque $1, Para escolher a sua saudação, marque $2, Para gravar o seu nome, marque $3, Para alterar a sua palavra passe, marque $5, Para o menu principal, marque $5."/> + </match> + </input> + </macro> + + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Após o sinal grave o seu nome, pressione qualquer tecla ou deixe de falar para parar a gravação."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para ouvir a gravação, marque $1, Para guardar a gravação, marque $2, Para gravar novamente, marque $3."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="speak-text" + data="Para marcar esta mensagem como urgente, marque $1, Para continuar, marque $2."/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="$1 não é uma extensão válida."/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Introduza a extensão para a qual pretende encaminhar esta mensagem, seguido de $1"/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_prepend"> + <input pattern="^([0-9#*])$"> + <match> + <action function="speak-text" data="Para gravar um anúncio, marque $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="Para ouvir a gravação novamente, marque $1, Para guardar a gravação, marque $2, Para apagar a gravação, marque $3, Para encaminhar a gravação para o seu email, marque $4, Para devolver a chamada agora, marque $5, Para encaminhar esta mensagem para outra extensão, marque $6."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Seleccione uma saudação entre 1 e 3."/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="valor inválido."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Após o sinal grave a sua saudação, pressione qualquer tecla ou deixe de falar para parar a gravação."/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Após o sinal grave a sua mensagem, pressione qualquer tecla ou deixe de falar para parar a gravação."/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Saudação $1 seleccionada."/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="$1 não está disponÃvel."/> + </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 mensagem número $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="Mensagem $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><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo-ivr.xml b/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo-ivr.xml index 8c6f3f8624617417f39c03435f67e5d6650f9f13..7de0d7fd0d8481546c3c3ebb41a0bc2483d06fcd 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo-ivr.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo-ivr.xml @@ -1,6 +1,4 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<include><!--This line will be ignored it's here to validate the xml and is optional --> - +<include> <macro name="demo_ivr_count"> <input pattern="^(\d+)$"> @@ -66,7 +64,7 @@ <!-- 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="250"> + <macro name="demo_ivr_main_menu_short" pause="250"> <input pattern="(.*)"> <match> <!-- Menu option 1: Call FreeSWITCH conference--> @@ -129,7 +127,7 @@ <!-- 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"> + <macro name="demo_ivr_sub_menu_short"> <input pattern="(.*)"> <match> <!-- Menu option *: Return to top menu --> @@ -142,4 +140,15 @@ </input> </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo.xml b/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo.xml index 7e450fbc83cf91d26c9c1ab5da90fc4b59aab87d..10c9dbc55212646be0047a9fe166230f369017e1 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/ru/demo/demo.xml @@ -1,100 +1,109 @@ -<?xml version="1.0" encoding="utf-8"?> -<include><!--This line will be ignored it's here to validate the xml and is optional --> - - <macro name="saymoney"> - <input pattern="(.*)"> - <match> - <action function="say" data="$1" method="pronounced" type="currency"/> - </match> - </input> - </macro> - <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="saydatetime"> - <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="timespec2"> - <input pattern="(.*)"> - <match> - <action function="say" data="$1" method="pronounced" type="CURRENT_DATE_TIME"/> - </match> - </input> - </macro> - <macro name="ip-addr-interated"> - <input pattern="(.*)"> - <match> - <action function="say" data="$1" method="iterated" type="ip_address"/> - </match> - </input> - </macro> - <macro name="ip-addr"> - <input pattern="(.*)"> - <match> - <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><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="saymoney"> + <input pattern="(.*)"> + <match> + <action function="say" data="$1" method="pronounced" type="currency"/> + </match> + </input> + </macro> + <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="saydatetime"> + <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="timespec2"> + <input pattern="(.*)"> + <match> + <action function="say" data="$1" method="pronounced" type="CURRENT_DATE_TIME"/> + </match> + </input> + </macro> + <macro name="ip-addr-interated"> + <input pattern="(.*)"> + <match> + <action function="say" data="$1" method="iterated" type="ip_address"/> + </match> + </input> + </macro> + <macro name="ip-addr"> + <input pattern="(.*)"> + <match> + <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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/sounds.xml index 02d6b3671f98d61b9dd21acb8ea0b7d764ed039b..a0dcb2c0e9a4523f44e730f41d39abac99823bda 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/sounds.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/sounds.xml @@ -1,121 +1,130 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> - <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="directory/dir-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="directory/dir-press.wav"/> - <action function="say" data="$2" method="pronounced" type="name_spelled"/> - </match> - </input> - </macro> +<include> - <macro name="directory_min_search_digits"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-specify_mininum_first.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_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="directory/dir-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="directory/dir-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> - <macro name="directory_result_count"> - <input pattern="^0$" break_on_match="true"> - <match> - <action function="play-file" data="directory/dir-no_match_entry.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_min_search_digits"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="directory/dir-specify_mininum_first.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_too_large"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-to_many_result.wav"/> - </match> - </input> + <macro name="directory_result_count"> + <input pattern="^0$" break_on_match="true"> + <match> + <action function="play-file" data="directory/dir-no_match_entry.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> + <macro name="directory_result_count_too_large"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="directory/dir-to_many_result.wav"/> + </match> + </input> + </macro> - <macro name="directory_result_last"> - <input pattern="^(.*)$"> - <match> - <action function="play-file" data="directory/dir-no_more_result.wav"/> - </match> - </input> + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="directory/dir-no_more_result.wav"/> + </match> + </input> + </macro> - </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_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_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="directory/dir-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="directory/dir-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="directory/dir-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="play-file" data="directory/dir-to_make_new_search.wav"/> + <action function="play-file" data="directory/dir-press.wav"/> + <action function="say" data="$4" 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="directory/dir-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="directory/dir-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="directory/dir-press.wav"/> - <action function="say" data="$3" method="pronounced" type="name_spelled"/> - <action function="play-file" data="directory/dir-to_make_new_search.wav"/> - <action function="play-file" data="directory/dir-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <macro name="directory_result_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> - </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><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/tts.xml b/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/tts.xml index 67ae5ab2656d1c8d7e25ef6c81a4eae3585984a3..f0aafa267d815f859779c97575d22fa93e7261fb 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/tts.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/ru/dir/tts.xml @@ -1,96 +1,105 @@ -<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="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_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_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"> + <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 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> + <macro name="directory_result_last"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="No more result"/> + </match> + </input> + </macro> - <macro name="directory_result_last"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="No more result"/> - </match> - </input> + <macro name="directory_result_item"> + <input pattern="^(.*)$"> + <match> + <action function="speak-text" data="Result number $1"/> + </match> + </input> + </macro> - </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_item"> - <input pattern="^(.*)$"> - <match> - <action function="speak-text" data="Result number $1"/> - </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> - <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><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/ru/ru.xml b/bbb-voice-conference/config/freeswitch/conf/lang/ru/ru.xml index 25d63b611012964106a09cf666eb6f6589cbea68..5f52e768a4bc4b73988426b6c695947c0476559c 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/ru/ru.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/ru/ru.xml @@ -1,9 +1,23 @@ -<?xml version="1.0" encoding="utf-8"?> <!--теÑтовые файлы Ð’Ñ‹ звуковые файлы можно взÑÑ‚ÑŒ тут svn co http://svn.freeswitch.ru/bbv/mod_say_ru/ru/ --> <include> - <language name="ru" sound-path="$${sounds_dir}/ru/RU/elena" tts-engine="cepstral" tts-voice="elena"> - <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 --> + <language name="ru" sound-prefix="$${sounds_dir}/ru/RU/elena" tts-engine="cepstral" tts-voice="elena"> + <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 --> + </macros> + </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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/sounds.xml index ffd9ec5d8c751ebbe3dfda67a5b530c07c7b8ceb..9b14458ba4fb3094d0d0b7e2168ff14a8c161639 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/sounds.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/sounds.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="utf-8"?> -<include><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="voicemail_enter_id"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-enter_id.wav"/> -<!-- <action function="say" data="$1" method="pronounced" type="name_spelled"/>--> + <action function="play-file" data="voicemail/vm-enter_id.wav"/> + <!--<action function="say" data="$1" method="pronounced" type="name_spelled"/>--> </match> </input> </macro> @@ -12,8 +12,8 @@ <macro name="voicemail_enter_pass"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-enter_pass.wav"/> -<!-- лишнее и так долго <action function="say" data="$1" method="pronounced" type="name_spelled"/>--> + <action function="play-file" data="voicemail/vm-enter_pass.wav"/> + <!-- лишнее и так долго <action function="say" data="$1" method="pronounced" type="name_spelled"/>--> </match> </input> </macro> @@ -21,7 +21,7 @@ <macro name="voicemail_fail_auth"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-fail_auth.wav"/> + <action function="play-file" data="voicemail/vm-fail_auth.wav"/> </match> </input> </macro> @@ -29,7 +29,7 @@ <macro name="voicemail_hello"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-hello.wav"/> + <action function="play-file" data="voicemail/vm-hello.wav"/> </match> </input> </macro> @@ -37,7 +37,7 @@ <macro name="voicemail_goodbye"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-goodbye.wav"/> + <action function="play-file" data="voicemail/vm-goodbye.wav"/> </match> </input> </macro> @@ -45,7 +45,7 @@ <macro name="voicemail_abort"> <input pattern="(.*)"> <match> - <action function="play-file" data="voicemail/vm-abort.wav"/> + <action function="play-file" data="voicemail/vm-abort.wav"/> </match> </input> </macro> @@ -53,30 +53,30 @@ <macro name="voicemail_message_count"> <input pattern="^(\d+[0,2-9]1|[2-9]1|1):(.*)$"> <!--1, и вÑÑ‘ что больше 20-ти 21,31,41 .. --> <match> - <action function="play-file" data="voicemail/vm-you_have.wav"/> - <action function="say" data="$1" method="pronounced" type="MESSAGES"/> - <action function="play-file" data="voicemail/vm-$2.wav"/> - <action function="play-file" data="voicemail/vm-message.wav"/> -<!-- <action function="play-file" data="voicemail/vm-in_folder.wav"/>--> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="say" data="$1" method="pronounced" type="MESSAGES"/> + <action function="play-file" data="voicemail/vm-$2.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <!--<action function="play-file" data="voicemail/vm-in_folder.wav"/>--> </match> </input> - <!-- от 10 до 19 и ноль --> <!-- от 5до 9 и больше 20-ти 25-29 --> + <!-- от 10 до 19 и ноль --> <!-- от 5до 9 и больше 20-ти 25-29 --> <input pattern="^(\d+1[0-9]|1[0-9]|0|\d+[0-9][0,5-9]|[2-9][0,5-9]|[0,5-9]):(.*)$"> <match> - <action function="play-file" data="voicemail/vm-you_have.wav"/> - <action function="say" data="$1" method="pronounced" type="MESSAGES"/> - <action function="play-file" data="voicemail/vm-$2x.wav"/> - <action function="play-file" data="voicemail/vm-messagex.wav"/> -<!-- <action function="play-file" data="voicemail/vm-in_folder.wav"/>--> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="say" data="$1" method="pronounced" type="MESSAGES"/> + <action function="play-file" data="voicemail/vm-$2x.wav"/> + <action function="play-file" data="voicemail/vm-messagex.wav"/> + <!--<action function="play-file" data="voicemail/vm-in_folder.wav"/>--> </match> </input> - <input pattern="^(\d+[0,2-9][2-4]|[2-9][2-4]|[2-4]):(.*)$"> + <input pattern="^(\d+[0,2-9][2-4]|[2-9][2-4]|[2-4]):(.*)$"> <match> - <action function="play-file" data="voicemail/vm-you_have.wav"/> - <action function="say" data="$1" method="pronounced" type="MESSAGES"/> - <action function="play-file" data="voicemail/vm-$2x.wav"/> - <action function="play-file" data="voicemail/vm-messages.wav"/> - <action function="play-file" data="voicemail/vm-in_folder.wav"/> + <action function="play-file" data="voicemail/vm-you_have.wav"/> + <action function="say" data="$1" method="pronounced" type="MESSAGES"/> + <action function="play-file" data="voicemail/vm-$2x.wav"/> + <action function="play-file" data="voicemail/vm-messages.wav"/> + <action function="play-file" data="voicemail/vm-in_folder.wav"/> </match> </input> </macro> @@ -84,50 +84,48 @@ <macro name="voicemail_menu"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-listen_new.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="voicemail/vm-listen_saved.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="voicemail/vm-advanced.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_phonetic"/> - <action function="play-file" data="voicemail/vm-to_exit.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="voicemail/vm-listen_new.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="voicemail/vm-listen_saved.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="voicemail/vm-advanced.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + <action function="play-file" data="voicemail/vm-to_exit.wav"/> </match> </input> </macro> - <macro name="voicemail_config_menu"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-to_record_greeting.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="voicemail/vm-choose_greeting.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="voicemail/vm-record_name2.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$4" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-change_password.wav"/> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$5" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-main_menu.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="voicemail/vm-to_record_greeting.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="voicemail/vm-choose_greeting.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="voicemail/vm-record_name2.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-change_password.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-main_menu.wav"/> </match> </input> </macro> - <macro name="voicemail_record_name"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-record_name1.wav"/> + <action function="play-file" data="voicemail/vm-record_name1.wav"/> </match> </input> </macro> @@ -135,15 +133,15 @@ <macro name="voicemail_record_file_check"> <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-press.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + <action function="play-file" data="voicemail/vm-listen_to_recording.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="voicemail/vm-save_recording.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="voicemail/vm-rerecord.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -151,12 +149,12 @@ <macro name="voicemail_record_urgent_check"> <input pattern="^([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-mark-urgent.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="voicemail/vm-continue.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="voicemail/vm-mark-urgent.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="voicemail/vm-continue.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -164,12 +162,12 @@ <macro name="voicemail_forward_prepend"> <input pattern="^([0-9#*]):([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.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="voicemail/vm-forward_add_intro.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="voicemail/vm-send_message_now.wav"/> + <action function="play-file" data="voicemail/vm-press.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -177,9 +175,9 @@ <macro name="voicemail_forward_message_enter_extension"> <input pattern="^([0-9#*])$"> <match> - <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> - <action function="play-file" data="voicemail/vm-followed_by.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-forward_enter_ext.wav"/> + <action function="play-file" data="voicemail/vm-followed_by.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -187,7 +185,7 @@ <macro name="voicemail_invalid_extension"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> + <action function="play-file" data="voicemail/vm-that_was_an_invalid_ext.wav"/> </match> </input> </macro> @@ -239,7 +237,7 @@ <macro name="voicemail_choose_greeting"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> + <action function="play-file" data="voicemail/vm-choose_greeting_choose.wav"/> </match> </input> </macro> @@ -247,7 +245,7 @@ <macro name="voicemail_choose_greeting_fail"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> + <action function="play-file" data="voicemail/vm-choose_greeting_fail.wav"/> </match> </input> </macro> @@ -255,7 +253,7 @@ <macro name="voicemail_record_greeting"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-record_greeting.wav"/> + <action function="play-file" data="voicemail/vm-record_greeting.wav"/> </match> </input> </macro> @@ -263,7 +261,7 @@ <macro name="voicemail_record_message"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-record_message.wav"/> + <action function="play-file" data="voicemail/vm-record_message.wav"/> </match> </input> </macro> @@ -271,9 +269,9 @@ <macro name="voicemail_greeting_selected"> <input pattern="^(\d+)$"> <match> - <action function="play-file" data="voicemail/vm-greeting.wav"/> - <action function="say" data="$1" method="pronounced" type="items"/> - <action function="play-file" data="voicemail/vm-selected.wav"/> + <action function="play-file" data="voicemail/vm-greeting.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-selected.wav"/> </match> </input> </macro> @@ -281,9 +279,9 @@ <macro name="voicemail_play_greeting"> <input pattern="^(.*)$"> <match> - <action function="play-file" data="voicemail/vm-person.wav"/> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> - <action function="play-file" data="voicemail/vm-not_available.wav"/> + <action function="play-file" data="voicemail/vm-person.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_available.wav"/> </match> </input> </macro> @@ -291,7 +289,7 @@ <macro name="voicemail_say_number"> <input pattern="^(\d+)$"> <match> - <action function="say" data="$1" method="pronounced" type="items"/> + <action function="say" data="$1" method="pronounced" type="items"/> </match> </input> </macro> @@ -299,9 +297,9 @@ <macro name="voicemail_say_message_number"> <input pattern="^([a-z]+):(\d+)$"> <match> - <action function="play-file" data="voicemail/vm-$1.wav"/> - <action function="play-file" data="voicemail/vm-message_number.wav"/> - <action function="say" data="$2" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message_number.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> </match> </input> </macro> @@ -309,7 +307,7 @@ <macro name="voicemail_say_phone_number"> <input pattern="^(.*)$"> <match> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> </match> </input> </macro> @@ -317,39 +315,39 @@ <macro name="voicemail_say_name"> <input pattern="^(.*)$"> <match> - <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> </match> </input> </macro> <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> - <macro name="voicemail_ack"> + <macro name="voicemail_ack"> <input pattern="^(too-small)$"> <match> - <action function="play-file" data="voicemail/vm-too-small.wav"/> + <action function="play-file" data="voicemail/vm-too-small.wav"/> </match> </input> <input pattern="^(deleted)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> <input pattern="^(saved)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> <input pattern="^(emailed)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> <input pattern="^(marked-urgent)$"> <match> - <action function="play-file" data="voicemail/vm-message.wav"/> - <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-message.wav"/> + <action function="play-file" data="voicemail/vm-$1.wav"/> </match> </input> </macro> @@ -357,9 +355,20 @@ <macro name="voicemail_say_date"> <input pattern="^(.*)$"> <match> - <action function="say" data="$1" method="pronounced" type="current_date_time"/> + <action function="say" data="$1" method="pronounced" type="current_date_time"/> </match> </input> </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/tts.xml b/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/tts.xml index 1fc877d50ea95b040d2b0b0452b4de1cf33f94f3..2de4b3781ea900889c0b7b7ef05693538a1eb017 100644 --- a/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/tts.xml +++ b/bbb-voice-conference/config/freeswitch/conf/lang/ru/vm/tts.xml @@ -1,8 +1,9 @@ -<include><!--This line will be ignored it's here to validate the xml and is optional --> +<include> + <macro name="voicemail_enter_id"> <input pattern="(.*)"> <match> - <action function="speak-text" data="please enter your i d, followed by $1."/> + <action function="speak-text" data="please enter your i d, followed by $1."/> </match> </input> </macro> @@ -10,7 +11,7 @@ <macro name="voicemail_enter_pass"> <input pattern="(.*)"> <match> - <action function="speak-text" data="please enter your password, followed by $1."/> + <action function="speak-text" data="please enter your password, followed by $1."/> </match> </input> </macro> @@ -18,7 +19,7 @@ <macro name="voicemail_fail_auth"> <input pattern="(.*)"> <match> - <action function="speak-text" data="login incorrect."/> + <action function="speak-text" data="login incorrect."/> </match> </input> </macro> @@ -26,7 +27,7 @@ <macro name="voicemail_hello"> <input pattern="(.*)"> <match> - <action function="speak-text" data="welcome to your voicemail."/> + <action function="speak-text" data="welcome to your voicemail."/> </match> </input> </macro> @@ -34,7 +35,7 @@ <macro name="voicemail_goodbye"> <input pattern="(.*)"> <match> - <action function="speak-text" data="goodbye."/> + <action function="speak-text" data="goodbye."/> </match> </input> </macro> @@ -42,7 +43,7 @@ <macro name="voicemail_abort"> <input pattern="(.*)"> <match> - <action function="speak-text" data="too many failed attempts."/> + <action function="speak-text" data="too many failed attempts."/> </match> </input> </macro> @@ -50,12 +51,12 @@ <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}."/> + <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}."/> + <action function="speak-text" data="you have $1 $2 messages in folder ${voicemail_current_folder}."/> </match> </input> </macro> @@ -63,27 +64,25 @@ <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."/> + <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."/> + <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."/> + <action function="speak-text" data="at the tone, please record your name, press any key or stop talking to end the recording."/> </match> </input> @@ -92,8 +91,8 @@ <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."/> + <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> @@ -101,8 +100,8 @@ <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."/> + <action function="speak-text" + data="To mark this message urgent, press $1, To continue, press $2."/> </match> </input> </macro> @@ -110,7 +109,7 @@ <macro name="voicemail_invalid_extension"> <input pattern="^([0-9#*])$"> <match> - <action function="speak-text" data="$1 is not a valid extension."/> + <action function="speak-text" data="$1 is not a valid extension."/> </match> </input> </macro> @@ -118,7 +117,7 @@ <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"/> + <action function="speak-text" data="enter the extension you wish to forward to, then press $1"/> </match> </input> </macro> @@ -126,7 +125,7 @@ <macro name="voicemail_forward_prepend"> <input pattern="^([0-9#*])$"> <match> - <action function="speak-text" data="To record an announcement, press $1."/> + <action function="speak-text" data="To record an announcement, press $1."/> </match> </input> </macro> @@ -134,8 +133,8 @@ <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."/> + <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> @@ -143,7 +142,7 @@ <macro name="voicemail_choose_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="choose a greeting between 1 and 3."/> + <action function="speak-text" data="choose a greeting between 1 and 3."/> </match> </input> </macro> @@ -151,7 +150,7 @@ <macro name="voicemail_choose_greeting_fail"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="invalid value."/> + <action function="speak-text" data="invalid value."/> </match> </input> </macro> @@ -159,7 +158,7 @@ <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."/> + <action function="speak-text" data="record your greeting at the tone, press any key or stop talking to end the recording."/> </match> </input> </macro> @@ -167,7 +166,7 @@ <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."/> + <action function="speak-text" data="record your message at the tone, press any key or stop talking to end the recording."/> </match> </input> </macro> @@ -175,7 +174,7 @@ <macro name="voicemail_greeting_selected"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="greeting $1 selected."/> + <action function="speak-text" data="greeting $1 selected."/> </match> </input> </macro> @@ -183,7 +182,7 @@ <macro name="voicemail_play_greeting"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1 is not available."/> + <action function="speak-text" data="$1 is not available."/> </match> </input> </macro> @@ -191,7 +190,7 @@ <macro name="voicemail_say_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1"/> + <action function="speak-text" data="$1"/> </match> </input> </macro> @@ -199,7 +198,7 @@ <macro name="voicemail_say_message_number"> <input pattern="^([a-z]+):(.*)$"> <match> - <action function="speak-text" data="$1 message number $2."/> + <action function="speak-text" data="$1 message number $2."/> </match> </input> </macro> @@ -207,7 +206,7 @@ <macro name="voicemail_say_phone_number"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -215,7 +214,7 @@ <macro name="voicemail_say_name"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="$1."/> + <action function="speak-text" data="$1."/> </match> </input> </macro> @@ -223,7 +222,7 @@ <macro name="voicemail_ack"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="message $1"/> + <action function="speak-text" data="message $1"/> </match> </input> </macro> @@ -231,9 +230,20 @@ <macro name="voicemail_say_date"> <input pattern="^(.*)$"> <match> - <action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/> + <action function="speak-text" data="${strftime($1|%A, %B %d %Y, %I:%M %p)}"/> </match> </input> </macro> -</include><!--This line will be ignored it's here to validate the xml and is optional --> +</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: +--> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/sv/sv.xml b/bbb-voice-conference/config/freeswitch/conf/lang/sv/sv.xml new file mode 100644 index 0000000000000000000000000000000000000000..8482b8f475c56762535739944020d7353a36d8c2 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/sv/sv.xml @@ -0,0 +1,11 @@ +<include> + <language name="sv" sound-path="$${sounds_dir}/sv/se/jakob" tts-engine="" tts-voice=""> + <phrases> + <macros> + <X-PRE-PROCESS cmd="include" data="ivr/*.xml"/> <!-- Note: this now grabs whole subdir, previously grabbed only demo.xml --> + <X-PRE-PROCESS cmd="include" data="vm/sounds.xml"/> + <!--voicemail is purely implemented with files based one that is the default. --> + </macros> + </phrases> + </language> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/lang/sv/vm/sounds.xml b/bbb-voice-conference/config/freeswitch/conf/lang/sv/vm/sounds.xml new file mode 100644 index 0000000000000000000000000000000000000000..aaee3c0b6b34b1fd0ee5c6267575b9e473eecbd5 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/lang/sv/vm/sounds.xml @@ -0,0 +1,504 @@ +<include><!--This line will be ignored it's here to validate the xml and is optional --> + <macro name="voicemail_enter_id"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-knappa_in_din_anknytning_foljt_av.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_enter_pass"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-knappa_in_ditt_pinnummer_foljt_av.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_fail_auth"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-felaktig_inloggning.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_hello"> + <input pattern="(.*)"> + <match> + <!--<action function="play-file" data="voicemail/vm-hej.wav"/> --> + </match> + </input> + </macro> + + <macro name="voicemail_goodbye"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-hejda.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_abort"> + <input pattern="(.*)"> + <match> + <action function="play-file" data="voicemail/vm-for_manga_felaktiga_forsok.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_message_count"> + <!-- + Pattern matching needed: + 0:* + 1:new + *:new + :saved + :urgent + :urgent-new + :urgent-saved + --> + <input pattern="^(0):(.*)$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="play-file" data="voicemail/vm-inga.wav"/> + <action function="play-file" data="voicemail/vm-meddelanden.wav"/> + </match> + </input> + <input pattern="^(1):new$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items" gender="utrum"/> + <action function="play-file" data="voicemail/vm-nytt.wav"/> + <action function="play-file" data="voicemail/vm-meddelande..wav"/> + </match> + </input> + <input pattern="^(\d+):new$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-nya.wav"/> + <action function="play-file" data="voicemail/vm-meddelanden.wav"/> + </match> + </input> + <input pattern="^(1):saved$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items" gender="utrum"/> + <action function="play-file" data="voicemail/vm-sparat.wav"/> + <action function="play-file" data="voicemail/vm-meddelande..wav"/> + </match> + </input> + <input pattern="^(\d+):saved$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-sparade.wav"/> + <action function="play-file" data="voicemail/vm-meddelanden.wav"/> + </match> + </input> + <input pattern="^(1):urgent$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items" gender="utrum"/> + <action function="play-file" data="voicemail/vm-viktigt.wav"/> + <action function="play-file" data="voicemail/vm-meddelande..wav"/> + </match> + </input> + <input pattern="^(\d+):urgent$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-viktiga.wav"/> + <action function="play-file" data="voicemail/vm-meddelanden.wav"/> + </match> + </input> + <input pattern="^(1):urgent-new$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items" gender="utrum"/> + <action function="play-file" data="voicemail/vm-viktigt_nytt.wav"/> + <action function="play-file" data="voicemail/vm-meddelande..wav"/> + </match> + </input> + <input pattern="^(\d+):urgent-new$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-viktiga_nya.wav"/> + <action function="play-file" data="voicemail/vm-meddelanden.wav"/> + </match> + </input> + <input pattern="^(1):urgent-saved$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items" gender="utrum"/> + <action function="play-file" data="voicemail/vm-viktigt_sparat.wav"/> + <action function="play-file" data="voicemail/vm-meddelande..wav"/> + </match> + </input> + <input pattern="^(\d+):urgent-saved$" break_on_match="true"> + <match> + <action function="play-file" data="voicemail/vm-du_har.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-viktiga_sparade.wav"/> + <action function="play-file" data="voicemail/vm-meddelanden.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To listen to new messages --> + <action function="play-file" data="voicemail/vm-for_att_lyssna_pa_nya_meddelanden.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + + <!-- To listen to saved messages --> + <action function="play-file" data="voicemail/vm-for_att_lyssna_pa_sparade_meddelanden.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + + <!-- For advanced options --> + <action function="play-file" data="voicemail/vm-for_avancerade_installningar.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + + <!-- To exit --> + <action function="play-file" data="voicemail/vm-for_att_avsluta.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$4" method="pronounced" type="name_phonetic"/> + </match> + </input> + </macro> + + <macro name="voicemail_config_menu"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <!-- To record a greeting --> + <action function="play-file" data="voicemail/vm-for_att_spela_in_en_halsning.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + + <!-- To choose greeting --> + <action function="play-file" data="voicemail/vm-for_att_valja_utgaende_meddelande.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + + <!-- To record your name --> + <action function="play-file" data="voicemail/vm-for_att_spela_in_ditt_namn.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + + <!-- To change password --> + <action function="play-file" data="voicemail/vm-for_att_byta_losenord.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + + <!-- To return to main menu --> + <action function="play-file" data="voicemail/vm-for_att_lyssna_till_huvudmenyn.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_name"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-efter_tonen_kan_du_spela_in_ditt_namn.wav"/> + <action function="play-file" data="voicemail/vm-for_att_avsluta_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck_valfri_knapp_eller_sluta_prata.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_file_check"> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-for_att_lyssna_pa_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_spara_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_spela_in_igen.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_urgent_check"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-for_att_markera_detta_meddelande_viktigt.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_fortsatta.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_prepend"> + <input pattern="^([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-for_att_infoga_en_introduktion_till_detta_meddelande.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_skicka_detta_meddelande_nu.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_forward_message_enter_extension"> + <input pattern="^([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-knappa_in_anknytningen_att_vidarebefordra_detta_meddelande_till.wav"/> + <action function="play-file" data="voicemail/vm-foljt_av.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_invalid_extension"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-det_var_en_felaktig_anknytning.wav"/> + </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="play-file" data="voicemail/vm-for_att_lyssna_pa_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_spara_meddelandet.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_radera_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_vidarebefordra_detta_meddelande_till_din_epost.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$4" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_ringa_tillbaka_nu.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_vidarebefordra_detta_meddelande.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + <input pattern="^([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*]):([0-9#*])$"> + <match> + <action function="play-file" data="voicemail/vm-for_att_lyssna_pa_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_spara_meddelandet.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_radera_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$3" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_ringa_tillbaka_nu.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$5" method="pronounced" type="name_spelled"/> + <action function="execute" data="sleep(200)"/> + <action function="play-file" data="voicemail/vm-for_att_vidarebefordra_detta_meddelande.wav"/> + <action function="play-file" data="voicemail/vm-tryck.wav"/> + <action function="say" data="$6" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-valj_en_halsning_mellan_1_och_9.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_choose_greeting_fail"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-det_var_ett_felaktigt_val.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-spela_in_din_halsning_efter_tonen.wav"/> + <action function="play-file" data="voicemail/vm-for_att_avsluta_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck_valfri_knapp_eller_sluta_prata.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_record_message"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-spela_in_ditt_meddelande_efter_tonen.wav"/> + <action function="play-file" data="voicemail/vm-for_att_avsluta_inspelningen.wav"/> + <action function="play-file" data="voicemail/vm-tryck_valfri_knapp_eller_sluta_prata.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_greeting_selected"> + <input pattern="^(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-meddelande_nummer.wav"/> + <action function="say" data="$1" method="pronounced" type="items"/> + <action function="play-file" data="voicemail/vm-markerad.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_play_greeting"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-personen_med_anknytning.wav"/> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + <action function="play-file" data="voicemail/vm-not_ar_inte_tillganglig.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_number"> + <input pattern="^(\d+)$"> + <match> + <action function="say" data="$1" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_message_number"> + <input pattern="^([a-z]+):(\d+)$"> + <match> + <action function="play-file" data="voicemail/vm-$1.wav"/> + <action function="play-file" data="voicemail/vm-meddelande_nummer.wav"/> + <action function="say" data="$2" method="pronounced" type="items"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_phone_number"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_name"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + <!-- Note: Update this to marked-urgent,emailed and saved once new sound files are recorded --> + <macro name="voicemail_ack"> + <input pattern="^(too-small)$"> + <match> + <action function="play-file" data="voicemail/vm-din_inspelning_ar_kortare_an_tillaten_langd_vanligen_forsok_igen.wav"/> + </match> + </input> + <input pattern="^(deleted)$"> + <match> + <action function="play-file" data="voicemail/vm-meddelande.wav"/> + <action function="play-file" data="voicemail/vm-raderat.wav"/> + </match> + </input> + <input pattern="^(saved)$"> + <match> + <action function="play-file" data="voicemail/vm-meddelande.wav"/> + <action function="play-file" data="voicemail/vm-sparat.wav"/> + </match> + </input> + <input pattern="^(emailed)$"> + <match> + <action function="play-file" data="voicemail/vm-meddelande.wav"/> + <action function="play-file" data="voicemail/vm-skickat_pa_epost.wav"/> + </match> + </input> + <input pattern="^(marked-urgent)$"> + <match> + <action function="play-file" data="voicemail/vm-meddelande.wav"/> + <action function="play-file" data="voicemail/vm-markerat_som_viktigt.wav"/> + </match> + </input> + </macro> + + <macro name="voicemail_say_date"> + <input pattern="^(.*)$"> + <match> + <action function="say" data="$1" method="pronounced" type="current_date_time"/> + </match> + </input> + </macro> + + <macro name="voicemail_disk_quota_exceeded"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="voicemail/vm-den_rostbrevladan_ar_full_vanligen_forsok_ringa_senare.wav"/> + </match> + </input> + </macro> + + <macro name="valet_announce_ext"> + <input pattern="^([^\:]+):(.*)$"> + <match> + <action function="say" data="$2" method="pronounced" type="name_spelled"/> + </match> + </input> + </macro> + + <macro name="valet_lot_full"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> + + <macro name="valet_lot_empty"> + <input pattern="^(.*)$"> + <match> + <action function="play-file" data="tone_stream://%(275,10,600);%(275,100,300)"/> + </match> + </input> + </macro> +</include><!--This line will be ignored it's here to validate the xml and is optional --> diff --git a/bbb-voice-conference/config/freeswitch/conf/mime.types b/bbb-voice-conference/config/freeswitch/conf/mime.types index 34d5fc905533ed3f22b1416d18532475ff8ffc0f..542ebf9dd77f9beeacd9c3321fe74731c3ca8048 100644 --- a/bbb-voice-conference/config/freeswitch/conf/mime.types +++ b/bbb-voice-conference/config/freeswitch/conf/mime.types @@ -1,204 +1,344 @@ -# This is a comment. I love comments. - -# This file controls what Internet media types are sent to the client for -# given file extension(s). Sending the correct media type to the client -# is important so they know how to handle the content of the file. -# Extra types can either be added here or by using an AddType directive -# in your config files. For more information about Internet media types, -# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type -# registry is at <http://www.iana.org/assignments/media-types/>. - -# MIME type Extensions -application/activemessage +# +# MIME type configs overriden by the FreeSWITCH project. +# +audio/mpeg mp3 mpga mp2 mp2a m2a m3a +image/jpeg jpg jpeg jpe +# +# Additional MIME types added by the FreeSWITCH project. Any duplicate file extensions listed here will only be +# used to map from MIME -> extension and not extension -> MIME +audio/x-mpeg mp3 +audio/mp3 mp3 +audio/x-mp3 mp3 +audio/mpeg3 mp3 +audio/x-mpeg3 mp3 +audio/mpg mp3 +audio/x-mpegaudio mp3 +audio/x-wave wav +audio/wave wav +audio/wav wav +# +# The section below was taken from Apache httpd Project at +# <https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types> +# +# This file maps Internet media types to unique file extension(s). +# Although created for httpd, this file is used by many software systems +# and has been placed in the public domain for unlimited redisribution. +# +# The table below contains both registered and (common) unregistered types. +# A type that has no unique extension can be ignored -- they are listed +# here to guide configurations toward known types and to make it easier to +# identify "new" types. File extensions are also commonly used to indicate +# content languages and encodings, so choose them carefully. +# +# Internet media types should be registered as described in RFC 4288. +# The registry is at <http://www.iana.org/assignments/media-types/>. +# +# MIME type (lowercased) Extensions +# ============================================ ========== +# application/1d-interleaved-parityfec +# application/3gpp-ims+xml +# application/activemessage application/andrew-inset ez -application/applefile +# application/applefile +application/applixware aw application/atom+xml atom application/atomcat+xml atomcat -application/atomicmail +# application/atomicmail application/atomsvc+xml atomsvc -application/auth-policy+xml -application/batch-smtp -application/beep+xml -application/cals-1840 +# application/auth-policy+xml +# application/batch-smtp +# application/beep+xml +# application/calendar+xml +# application/cals-1840 +# application/ccmp+xml application/ccxml+xml ccxml -application/cellml+xml -application/cnrp+xml -application/commonground -application/conference-info+xml -application/cpl+xml -application/csta+xml -application/cstadata+xml -application/cybercash +application/cdmi-capability cdmia +application/cdmi-container cdmic +application/cdmi-domain cdmid +application/cdmi-object cdmio +application/cdmi-queue cdmiq +# application/cea-2018+xml +# application/cellml+xml +# application/cfw +# application/cnrp+xml +# application/commonground +# application/conference-info+xml +# application/cpl+xml +# application/csta+xml +# application/cstadata+xml +application/cu-seeme cu +# application/cybercash application/davmount+xml davmount -application/dca-rft -application/dec-dx -application/dialog-info+xml -application/dicom -application/dns -application/dvcs +# application/dca-rft +# application/dec-dx +# application/dialog-info+xml +# application/dicom +# application/dns +application/docbook+xml dbk +# application/dskpp+xml +application/dssc+der dssc +application/dssc+xml xdssc +# application/dvcs application/ecmascript ecma -application/edi-consent -application/edi-x12 -application/edifact -application/epp+xml -application/eshop -application/fastinfoset -application/fastsoap -application/fits +# application/edi-consent +# application/edi-x12 +# application/edifact +application/emma+xml emma +# application/epp+xml +application/epub+zip epub +# application/eshop +# application/example +application/exi exi +# application/fastinfoset +# application/fastsoap +# application/fits application/font-tdpfr pfr -application/h224 -application/http +# application/framework-attributes+xml +application/gml+xml gml +application/gpx+xml gpx +application/gxf gxf +# application/h224 +# application/held+xml +# application/http application/hyperstudio stk -application/iges -application/im-iscomposing+xml -application/index -application/index.cmd -application/index.obj -application/index.response -application/index.vnd -application/iotp -application/ipp -application/isup +# application/ibe-key-request+xml +# application/ibe-pkg-reply+xml +# application/ibe-pp-data +# application/iges +# application/im-iscomposing+xml +# application/index +# application/index.cmd +# application/index.obj +# application/index.response +# application/index.vnd +application/inkml+xml ink inkml +# application/iotp +application/ipfix ipfix +# application/ipp +# application/isup +application/java-archive jar +application/java-serialized-object ser +application/java-vm class application/javascript js application/json json -application/kpml-request+xml -application/kpml-response+xml +application/jsonml+json jsonml +# application/kpml-request+xml +# application/kpml-response+xml +application/lost+xml lostxml application/mac-binhex40 hqx application/mac-compactpro cpt -application/macwriteii +# application/macwriteii +application/mads+xml mads application/marc mrc +application/marcxml+xml mrcx application/mathematica ma nb mb +# application/mathml-content+xml +# application/mathml-presentation+xml application/mathml+xml mathml -application/mbms-associated-procedure-description+xml -application/mbms-deregister+xml -application/mbms-envelope+xml -application/mbms-msk+xml -application/mbms-msk-response+xml -application/mbms-protection-description+xml -application/mbms-reception-report+xml -application/mbms-register+xml -application/mbms-register-response+xml -application/mbms-user-service-description+xml +# application/mbms-associated-procedure-description+xml +# application/mbms-deregister+xml +# application/mbms-envelope+xml +# application/mbms-msk+xml +# application/mbms-msk-response+xml +# application/mbms-protection-description+xml +# application/mbms-reception-report+xml +# application/mbms-register+xml +# application/mbms-register-response+xml +# application/mbms-user-service-description+xml application/mbox mbox +# application/media_control+xml application/mediaservercontrol+xml mscml -application/mikey +application/metalink+xml metalink +application/metalink4+xml meta4 +application/mets+xml mets +# application/mikey +application/mods+xml mods +# application/moss-keys +# application/moss-signature +# application/mosskey-data +# application/mosskey-request +application/mp21 m21 mp21 application/mp4 mp4s -application/mpeg4-generic -application/mpeg4-iod -application/mpeg4-iod-xmt +# application/mpeg4-generic +# application/mpeg4-iod +# application/mpeg4-iod-xmt +# application/msc-ivr+xml +# application/msc-mixer+xml application/msword doc dot application/mxf mxf -application/nasdata -application/news-message-id -application/news-transmission -application/nss -application/ocsp-request -application/ocsp-response -application/octet-stream bin dms lha lzh class so iso dmg dist distz pkg bpk dump elc +# application/nasdata +# application/news-checkgroups +# application/news-groupinfo +# application/news-transmission +# application/nss +# application/ocsp-request +# application/ocsp-response +application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy application/oda oda -application/oebps-package+xml -application/ogg ogg -application/parityfec +application/oebps-package+xml opf +application/ogg ogx +application/omdoc+xml omdoc +application/onenote onetoc onetoc2 onetmp onepkg +application/oxps oxps +# application/parityfec +application/patch-ops-error+xml xer application/pdf pdf application/pgp-encrypted pgp -application/pgp-keys +# application/pgp-keys application/pgp-signature asc sig application/pics-rules prf -application/pidf+xml +# application/pidf+xml +# application/pidf-diff+xml application/pkcs10 p10 application/pkcs7-mime p7m p7c application/pkcs7-signature p7s +application/pkcs8 p8 +application/pkix-attr-cert ac application/pkix-cert cer application/pkix-crl crl application/pkix-pkipath pkipath application/pkixcmp pki application/pls+xml pls -application/poc-settings+xml +# application/poc-settings+xml application/postscript ai eps ps -application/prs.alvestrand.titrax-sheet +# application/prs.alvestrand.titrax-sheet application/prs.cww cww -application/prs.nprend -application/prs.plucker -application/qsig +# application/prs.nprend +# application/prs.plucker +# application/prs.rdf-xml-crypt +# application/prs.xsf+xml +application/pskc+xml pskcxml +# application/qsig application/rdf+xml rdf application/reginfo+xml rif application/relax-ng-compact-syntax rnc -application/remote-printing +# application/remote-printing application/resource-lists+xml rl -application/riscos -application/rlmi+xml +application/resource-lists-diff+xml rld +# application/riscos +# application/rlmi+xml application/rls-services+xml rs +application/rpki-ghostbusters gbr +application/rpki-manifest mft +application/rpki-roa roa +# application/rpki-updown application/rsd+xml rsd application/rss+xml rss application/rtf rtf -application/rtx -application/samlassertion+xml -application/samlmetadata+xml +# application/rtx +# application/samlassertion+xml +# application/samlmetadata+xml application/sbml+xml sbml +application/scvp-cv-request scq +application/scvp-cv-response scs +application/scvp-vp-request spq +application/scvp-vp-response spp application/sdp sdp -application/set-payment +# application/set-payment application/set-payment-initiation setpay -application/set-registration +# application/set-registration application/set-registration-initiation setreg -application/sgml -application/sgml-open-catalog +# application/sgml +# application/sgml-open-catalog application/shf+xml shf -application/sieve -application/simple-filter+xml -application/simple-message-summary -application/simplesymbolcontainer -application/slate -application/smil +# application/sieve +# application/simple-filter+xml +# application/simple-message-summary +# application/simplesymbolcontainer +# application/slate +# application/smil application/smil+xml smi smil -application/soap+fastinfoset -application/soap+xml -application/spirits-event+xml +# application/soap+fastinfoset +# application/soap+xml +application/sparql-query rq +application/sparql-results+xml srx +# application/spirits-event+xml application/srgs gram application/srgs+xml grxml +application/sru+xml sru +application/ssdl+xml ssdl application/ssml+xml ssml -application/timestamp-query -application/timestamp-reply -application/tve-trigger -application/vemmi -application/vividence.scriptfile -application/vnd.3gpp.bsf+xml +# application/tamp-apex-update +# application/tamp-apex-update-confirm +# application/tamp-community-update +# application/tamp-community-update-confirm +# application/tamp-error +# application/tamp-sequence-adjust +# application/tamp-sequence-adjust-confirm +# application/tamp-status-query +# application/tamp-status-response +# application/tamp-update +# application/tamp-update-confirm +application/tei+xml tei teicorpus +application/thraud+xml tfi +# application/timestamp-query +# application/timestamp-reply +application/timestamped-data tsd +# application/tve-trigger +# application/ulpfec +# application/vcard+xml +# application/vemmi +# application/vividence.scriptfile +# application/vnd.3gpp.bsf+xml application/vnd.3gpp.pic-bw-large plb application/vnd.3gpp.pic-bw-small psb application/vnd.3gpp.pic-bw-var pvb -application/vnd.3gpp.sms -application/vnd.3gpp2.bcmcsinfo+xml -application/vnd.3gpp2.sms +# application/vnd.3gpp.sms +# application/vnd.3gpp2.bcmcsinfo+xml +# application/vnd.3gpp2.sms +application/vnd.3gpp2.tcap tcap application/vnd.3m.post-it-notes pwn application/vnd.accpac.simply.aso aso application/vnd.accpac.simply.imp imp application/vnd.acucobol acu application/vnd.acucorp atc acutc +application/vnd.adobe.air-application-installer-package+zip air +application/vnd.adobe.formscentral.fcdt fcdt +application/vnd.adobe.fxp fxp fxpl +# application/vnd.adobe.partial-upload application/vnd.adobe.xdp+xml xdp application/vnd.adobe.xfdf xfdf -application/vnd.aether.imp +# application/vnd.aether.imp +# application/vnd.ah-barcode +application/vnd.ahead.space ahead +application/vnd.airzip.filesecure.azf azf +application/vnd.airzip.filesecure.azs azs +application/vnd.amazon.ebook azw +application/vnd.americandynamics.acc acc application/vnd.amiga.ami ami +# application/vnd.amundsen.maze+xml +application/vnd.android.package-archive apk application/vnd.anser-web-certificate-issue-initiation cii application/vnd.anser-web-funds-transfer-initiation fti application/vnd.antix.game-component atx application/vnd.apple.installer+xml mpkg +application/vnd.apple.mpegurl m3u8 +# application/vnd.arastra.swi +application/vnd.aristanetworks.swi swi +application/vnd.astraea-software.iota iota application/vnd.audiograph aep -application/vnd.autopackage -application/vnd.avistar+xml +# application/vnd.autopackage +# application/vnd.avistar+xml application/vnd.blueice.multipass mpm +# application/vnd.bluetooth.ep.oob application/vnd.bmi bmi application/vnd.businessobjects rep -application/vnd.cab-jscript -application/vnd.canon-cpdl -application/vnd.canon-lips -application/vnd.cendio.thinlinc.clientconf +# application/vnd.cab-jscript +# application/vnd.canon-cpdl +# application/vnd.canon-lips +# application/vnd.cendio.thinlinc.clientconf application/vnd.chemdraw+xml cdxml application/vnd.chipnuts.karaoke-mmd mmd application/vnd.cinderella cdy -application/vnd.cirpack.isdn-ext +# application/vnd.cirpack.isdn-ext application/vnd.claymore cla +application/vnd.cloanto.rp9 rp9 application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.commerce-battelle -application/vnd.commonspace csp cst +application/vnd.cluetrust.cartomobile-config c11amc +application/vnd.cluetrust.cartomobile-config-pkg c11amz +# application/vnd.collection+json +# application/vnd.commerce-battelle +application/vnd.commonspace csp application/vnd.contact.cmsg cdbcmsg application/vnd.cosmocaller cmc application/vnd.crick.clicker clkx @@ -208,46 +348,100 @@ application/vnd.crick.clicker.template clkt application/vnd.crick.clicker.wordbank clkw application/vnd.criticaltools.wbs+xml wbs application/vnd.ctc-posml pml -application/vnd.cups-pdf -application/vnd.cups-postscript +# application/vnd.ctct.ws+xml +# application/vnd.cups-pdf +# application/vnd.cups-postscript application/vnd.cups-ppd ppd -application/vnd.cups-raster -application/vnd.cups-raw -application/vnd.curl curl -application/vnd.cybank +# application/vnd.cups-raster +# application/vnd.cups-raw +# application/vnd.curl +application/vnd.curl.car car +application/vnd.curl.pcurl pcurl +# application/vnd.cybank +application/vnd.dart dart application/vnd.data-vision.rdz rdz +application/vnd.dece.data uvf uvvf uvd uvvd +application/vnd.dece.ttml+xml uvt uvvt +application/vnd.dece.unspecified uvx uvvx +application/vnd.dece.zip uvz uvvz application/vnd.denovo.fcselayout-link fe_launch +# application/vnd.dir-bi.plate-dl-nosuffix application/vnd.dna dna application/vnd.dolby.mlp mlp +# application/vnd.dolby.mobile.1 +# application/vnd.dolby.mobile.2 application/vnd.dpgraph dpg application/vnd.dreamfactory dfac -application/vnd.dvb.esgcontainer -application/vnd.dvb.ipdcesgaccess -application/vnd.dxr -application/vnd.ecdis-update +application/vnd.ds-keypoint kpxx +application/vnd.dvb.ait ait +# application/vnd.dvb.dvbj +# application/vnd.dvb.esgcontainer +# application/vnd.dvb.ipdcdftnotifaccess +# application/vnd.dvb.ipdcesgaccess +# application/vnd.dvb.ipdcesgaccess2 +# application/vnd.dvb.ipdcesgpdd +# application/vnd.dvb.ipdcroaming +# application/vnd.dvb.iptv.alfec-base +# application/vnd.dvb.iptv.alfec-enhancement +# application/vnd.dvb.notif-aggregate-root+xml +# application/vnd.dvb.notif-container+xml +# application/vnd.dvb.notif-generic+xml +# application/vnd.dvb.notif-ia-msglist+xml +# application/vnd.dvb.notif-ia-registration-request+xml +# application/vnd.dvb.notif-ia-registration-response+xml +# application/vnd.dvb.notif-init+xml +# application/vnd.dvb.pfr +application/vnd.dvb.service svc +# application/vnd.dxr +application/vnd.dynageo geo +# application/vnd.easykaraoke.cdgdownload +# application/vnd.ecdis-update application/vnd.ecowin.chart mag -application/vnd.ecowin.filerequest -application/vnd.ecowin.fileupdate -application/vnd.ecowin.series -application/vnd.ecowin.seriesrequest -application/vnd.ecowin.seriesupdate +# application/vnd.ecowin.filerequest +# application/vnd.ecowin.fileupdate +# application/vnd.ecowin.series +# application/vnd.ecowin.seriesrequest +# application/vnd.ecowin.seriesupdate +# application/vnd.emclient.accessrequest+xml application/vnd.enliven nml +# application/vnd.eprints.data+xml application/vnd.epson.esf esf application/vnd.epson.msf msf application/vnd.epson.quickanime qam application/vnd.epson.salt slt application/vnd.epson.ssf ssf -application/vnd.ericsson.quickcall +# application/vnd.ericsson.quickcall application/vnd.eszigno3+xml es3 et3 -application/vnd.eudora.data +# application/vnd.etsi.aoc+xml +# application/vnd.etsi.cug+xml +# application/vnd.etsi.iptvcommand+xml +# application/vnd.etsi.iptvdiscovery+xml +# application/vnd.etsi.iptvprofile+xml +# application/vnd.etsi.iptvsad-bc+xml +# application/vnd.etsi.iptvsad-cod+xml +# application/vnd.etsi.iptvsad-npvr+xml +# application/vnd.etsi.iptvservice+xml +# application/vnd.etsi.iptvsync+xml +# application/vnd.etsi.iptvueprofile+xml +# application/vnd.etsi.mcid+xml +# application/vnd.etsi.overload-control-policy-dataset+xml +# application/vnd.etsi.sci+xml +# application/vnd.etsi.simservs+xml +# application/vnd.etsi.tsl+xml +# application/vnd.etsi.tsl.der +# application/vnd.eudora.data application/vnd.ezpix-album ez2 application/vnd.ezpix-package ez3 +# application/vnd.f-secure.mobile application/vnd.fdf fdf -application/vnd.ffsns -application/vnd.fints +application/vnd.fdsn.mseed mseed +application/vnd.fdsn.seed seed dataless +# application/vnd.ffsns +# application/vnd.fints application/vnd.flographit gph application/vnd.fluxtime.clip ftc -application/vnd.framemaker fm frame maker +# application/vnd.font-fontforge-sfd +application/vnd.framemaker fm frame maker book application/vnd.frogans.fnc fnc application/vnd.frogans.ltf ltf application/vnd.fsc.weblaunch fsc @@ -256,19 +450,29 @@ application/vnd.fujitsu.oasys2 oa2 application/vnd.fujitsu.oasys3 oa3 application/vnd.fujitsu.oasysgp fg5 application/vnd.fujitsu.oasysprs bh2 -application/vnd.fujixerox.art-ex -application/vnd.fujixerox.art4 -application/vnd.fujixerox.hbpl +# application/vnd.fujixerox.art-ex +# application/vnd.fujixerox.art4 +# application/vnd.fujixerox.hbpl application/vnd.fujixerox.ddd ddd application/vnd.fujixerox.docuworks xdw application/vnd.fujixerox.docuworks.binder xbd -application/vnd.fut-misnet +# application/vnd.fut-misnet application/vnd.fuzzysheet fzs application/vnd.genomatix.tuxedo txd +# application/vnd.geocube+xml +application/vnd.geogebra.file ggb +application/vnd.geogebra.tool ggt +application/vnd.geometry-explorer gex gre +application/vnd.geonext gxt +application/vnd.geoplan g2w +application/vnd.geospace g3w +# application/vnd.globalplatform.card-content-mgt +# application/vnd.globalplatform.card-content-mgt-response +application/vnd.gmx gmx application/vnd.google-earth.kml+xml kml application/vnd.google-earth.kmz kmz application/vnd.grafeq gqf gqs -application/vnd.gridmp +# application/vnd.gridmp application/vnd.groove-account gac application/vnd.groove-help ghf application/vnd.groove-identity-message gim @@ -276,9 +480,11 @@ application/vnd.groove-injector grv application/vnd.groove-tool-message gtm application/vnd.groove-tool-template tpl application/vnd.groove-vcard vcg +# application/vnd.hal+json +application/vnd.hal+xml hal application/vnd.handheld-entertainment+xml zmm application/vnd.hbci hbci -application/vnd.hcl-bireports +# application/vnd.hcl-bireports application/vnd.hhe.lesson-player les application/vnd.hp-hpgl hpgl application/vnd.hp-hpid hpid @@ -286,37 +492,53 @@ application/vnd.hp-hps hps application/vnd.hp-jlyt jlt application/vnd.hp-pcl pcl application/vnd.hp-pclxl pclxl -application/vnd.httphone -application/vnd.hzn-3d-crossword x3d -application/vnd.ibm.afplinedata -application/vnd.ibm.electronic-media +# application/vnd.httphone +application/vnd.hydrostatix.sof-data sfd-hdstx +# application/vnd.hzn-3d-crossword +# application/vnd.ibm.afplinedata +# application/vnd.ibm.electronic-media application/vnd.ibm.minipay mpy application/vnd.ibm.modcap afp listafp list3820 application/vnd.ibm.rights-management irm application/vnd.ibm.secure-container sc +application/vnd.iccprofile icc icm application/vnd.igloader igl application/vnd.immervision-ivp ivp application/vnd.immervision-ivu ivu -application/vnd.informedcontrol.rms+xml +# application/vnd.informedcontrol.rms+xml +# application/vnd.informix-visionary +# application/vnd.infotech.project +# application/vnd.infotech.project+xml +# application/vnd.innopath.wamp.notification +application/vnd.insors.igm igm application/vnd.intercon.formnet xpw xpx -application/vnd.intertrust.digibox -application/vnd.intertrust.nncp +application/vnd.intergeo i2g +# application/vnd.intertrust.digibox +# application/vnd.intertrust.nncp application/vnd.intu.qbo qbo application/vnd.intu.qfx qfx +# application/vnd.iptc.g2.conceptitem+xml +# application/vnd.iptc.g2.knowledgeitem+xml +# application/vnd.iptc.g2.newsitem+xml +# application/vnd.iptc.g2.newsmessage+xml +# application/vnd.iptc.g2.packageitem+xml +# application/vnd.iptc.g2.planningitem+xml application/vnd.ipunplugged.rcprofile rcprofile application/vnd.irepository.package+xml irp application/vnd.is-xpr xpr +application/vnd.isac.fcs fcs application/vnd.jam jam -application/vnd.japannet-directory-service -application/vnd.japannet-jpnstore-wakeup -application/vnd.japannet-payment-wakeup -application/vnd.japannet-registration -application/vnd.japannet-registration-wakeup -application/vnd.japannet-setstore-wakeup -application/vnd.japannet-verification -application/vnd.japannet-verification-wakeup +# application/vnd.japannet-directory-service +# application/vnd.japannet-jpnstore-wakeup +# application/vnd.japannet-payment-wakeup +# application/vnd.japannet-registration +# application/vnd.japannet-registration-wakeup +# application/vnd.japannet-setstore-wakeup +# application/vnd.japannet-verification +# application/vnd.japannet-verification-wakeup application/vnd.jcp.javame.midlet-rms rms application/vnd.jisp jisp +application/vnd.joost.joda-archive joda application/vnd.kahootz ktz ktr application/vnd.kde.karbon karbon application/vnd.kde.kchart chrt @@ -330,7 +552,9 @@ application/vnd.kenameaapp htke application/vnd.kidspiration kia application/vnd.kinar kne knp application/vnd.koan skp skd skt skm -application/vnd.liberty-request+xml +application/vnd.kodak-descriptor sse +application/vnd.las.las+xml lasxml +# application/vnd.liberty-request+xml application/vnd.llamagraphics.life-balance.desktop lbd application/vnd.llamagraphics.life-balance.exchange+xml lbe application/vnd.lotus-1-2-3 123 @@ -341,20 +565,21 @@ application/vnd.lotus-organizer org application/vnd.lotus-screencam scm application/vnd.lotus-wordpro lwp application/vnd.macports.portpkg portpkg -application/vnd.marlin.drm.actiontoken+xml -application/vnd.marlin.drm.conftoken+xml -application/vnd.marlin.drm.mdcf +# application/vnd.marlin.drm.actiontoken+xml +# application/vnd.marlin.drm.conftoken+xml +# application/vnd.marlin.drm.license+xml +# application/vnd.marlin.drm.mdcf application/vnd.mcd mcd application/vnd.medcalcdata mc1 application/vnd.mediastation.cdkey cdkey -application/vnd.meridian-slingshot +# application/vnd.meridian-slingshot application/vnd.mfer mwf application/vnd.mfmp mfm application/vnd.micrografx.flo flo application/vnd.micrografx.igx igx application/vnd.mif mif -application/vnd.minisoft-hp3000-save -application/vnd.mitsubishi.misty-guard.trustweb +# application/vnd.minisoft-hp3000-save +# application/vnd.mitsubishi.misty-guard.trustweb application/vnd.mobius.daf daf application/vnd.mobius.dis dis application/vnd.mobius.mbk mbk @@ -364,149 +589,312 @@ application/vnd.mobius.plc plc application/vnd.mobius.txf txf application/vnd.mophun.application mpn application/vnd.mophun.certificate mpc -application/vnd.motorola.flexsuite -application/vnd.motorola.flexsuite.adsi -application/vnd.motorola.flexsuite.fis -application/vnd.motorola.flexsuite.gotap -application/vnd.motorola.flexsuite.kmr -application/vnd.motorola.flexsuite.ttc -application/vnd.motorola.flexsuite.wem -application/vnd.mozilla.xul+xml xul +# application/vnd.motorola.flexsuite +# application/vnd.motorola.flexsuite.adsi +# application/vnd.motorola.flexsuite.fis +# application/vnd.motorola.flexsuite.gotap +# application/vnd.motorola.flexsuite.kmr +# application/vnd.motorola.flexsuite.ttc +# application/vnd.motorola.flexsuite.wem +# application/vnd.motorola.iprm +application/vnd.mozilla.xul+xml xul application/vnd.ms-artgalry cil -application/vnd.ms-asf asf +# application/vnd.ms-asf application/vnd.ms-cab-compressed cab +# application/vnd.ms-color.iccprofile application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-excel.addin.macroenabled.12 xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb +application/vnd.ms-excel.sheet.macroenabled.12 xlsm +application/vnd.ms-excel.template.macroenabled.12 xltm application/vnd.ms-fontobject eot application/vnd.ms-htmlhelp chm application/vnd.ms-ims ims application/vnd.ms-lrm lrm -application/vnd.ms-playready.initiator+xml +# application/vnd.ms-office.activex+xml +application/vnd.ms-officetheme thmx +# application/vnd.ms-opentype +# application/vnd.ms-package.obfuscated-opentype +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +# application/vnd.ms-playready.initiator+xml application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-powerpoint.addin.macroenabled.12 ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm +application/vnd.ms-powerpoint.slide.macroenabled.12 sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm +application/vnd.ms-powerpoint.template.macroenabled.12 potm +# application/vnd.ms-printing.printticket+xml application/vnd.ms-project mpp mpt -application/vnd.ms-tnef -application/vnd.ms-wmdrm.lic-chlg-req -application/vnd.ms-wmdrm.lic-resp -application/vnd.ms-wmdrm.meter-chlg-req -application/vnd.ms-wmdrm.meter-resp +# application/vnd.ms-tnef +# application/vnd.ms-wmdrm.lic-chlg-req +# application/vnd.ms-wmdrm.lic-resp +# application/vnd.ms-wmdrm.meter-chlg-req +# application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-word.document.macroenabled.12 docm +application/vnd.ms-word.template.macroenabled.12 dotm application/vnd.ms-works wps wks wcm wdb application/vnd.ms-wpl wpl application/vnd.ms-xpsdocument xps application/vnd.mseq mseq -application/vnd.msign -application/vnd.music-niff +# application/vnd.msign +# application/vnd.multiad.creator +# application/vnd.multiad.creator.cif +# application/vnd.music-niff application/vnd.musician mus -application/vnd.ncd.control -application/vnd.nervana -application/vnd.netfpx +application/vnd.muvee.style msty +application/vnd.mynfc taglet +# application/vnd.ncd.control +# application/vnd.ncd.reference +# application/vnd.nervana +# application/vnd.netfpx application/vnd.neurolanguage.nlu nlu +application/vnd.nitf ntf nitf application/vnd.noblenet-directory nnd application/vnd.noblenet-sealer nns application/vnd.noblenet-web nnw -application/vnd.nokia.catalogs -application/vnd.nokia.conml+wbxml -application/vnd.nokia.conml+xml -application/vnd.nokia.isds-radio-presets -application/vnd.nokia.iptv.config+xml -application/vnd.nokia.landmark+wbxml -application/vnd.nokia.landmark+xml -application/vnd.nokia.landmarkcollection+xml -application/vnd.nokia.n-gage.ac+xml +# application/vnd.nokia.catalogs +# application/vnd.nokia.conml+wbxml +# application/vnd.nokia.conml+xml +# application/vnd.nokia.isds-radio-presets +# application/vnd.nokia.iptv.config+xml +# application/vnd.nokia.landmark+wbxml +# application/vnd.nokia.landmark+xml +# application/vnd.nokia.landmarkcollection+xml +# application/vnd.nokia.n-gage.ac+xml application/vnd.nokia.n-gage.data ngdat application/vnd.nokia.n-gage.symbian.install n-gage -application/vnd.nokia.ncd -application/vnd.nokia.pcd+wbxml -application/vnd.nokia.pcd+xml +# application/vnd.nokia.ncd +# application/vnd.nokia.pcd+wbxml +# application/vnd.nokia.pcd+xml application/vnd.nokia.radio-preset rpst application/vnd.nokia.radio-presets rpss application/vnd.novadigm.edm edm application/vnd.novadigm.edx edx application/vnd.novadigm.ext ext +# application/vnd.ntt-local.file-transfer +# application/vnd.ntt-local.sip-ta_remote +# application/vnd.ntt-local.sip-ta_tcp_stream application/vnd.oasis.opendocument.chart odc application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.database odb application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template otf +application/vnd.oasis.opendocument.formula-template odft application/vnd.oasis.opendocument.graphics odg application/vnd.oasis.opendocument.graphics-template otg application/vnd.oasis.opendocument.image odi application/vnd.oasis.opendocument.image-template oti application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.presentation-template otp application/vnd.oasis.opendocument.spreadsheet ods application/vnd.oasis.opendocument.spreadsheet-template ots application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master otm +application/vnd.oasis.opendocument.text-master odm application/vnd.oasis.opendocument.text-template ott application/vnd.oasis.opendocument.text-web oth -application/vnd.obn +# application/vnd.obn +# application/vnd.oftn.l10n+json +# application/vnd.oipf.contentaccessdownload+xml +# application/vnd.oipf.contentaccessstreaming+xml +# application/vnd.oipf.cspg-hexbinary +# application/vnd.oipf.dae.svg+xml +# application/vnd.oipf.dae.xhtml+xml +# application/vnd.oipf.mippvcontrolmessage+xml +# application/vnd.oipf.pae.gem +# application/vnd.oipf.spdiscovery+xml +# application/vnd.oipf.spdlist+xml +# application/vnd.oipf.ueprofile+xml +# application/vnd.oipf.userprofile+xml application/vnd.olpc-sugar xo -application/vnd.oma-scws-config -application/vnd.oma-scws-http-request -application/vnd.oma-scws-http-response -application/vnd.oma.bcast.associated-procedure-parameter+xml -application/vnd.oma.bcast.drm-trigger+xml -application/vnd.oma.bcast.imd+xml -application/vnd.oma.bcast.notification+xml -application/vnd.oma.bcast.sgboot -application/vnd.oma.bcast.sgdd+xml -application/vnd.oma.bcast.sgdu -application/vnd.oma.bcast.simple-symbol-container -application/vnd.oma.bcast.smartcard-trigger+xml -application/vnd.oma.bcast.sprov+xml +# application/vnd.oma-scws-config +# application/vnd.oma-scws-http-request +# application/vnd.oma-scws-http-response +# application/vnd.oma.bcast.associated-procedure-parameter+xml +# application/vnd.oma.bcast.drm-trigger+xml +# application/vnd.oma.bcast.imd+xml +# application/vnd.oma.bcast.ltkm +# application/vnd.oma.bcast.notification+xml +# application/vnd.oma.bcast.provisioningtrigger +# application/vnd.oma.bcast.sgboot +# application/vnd.oma.bcast.sgdd+xml +# application/vnd.oma.bcast.sgdu +# application/vnd.oma.bcast.simple-symbol-container +# application/vnd.oma.bcast.smartcard-trigger+xml +# application/vnd.oma.bcast.sprov+xml +# application/vnd.oma.bcast.stkm +# application/vnd.oma.cab-address-book+xml +# application/vnd.oma.cab-feature-handler+xml +# application/vnd.oma.cab-pcc+xml +# application/vnd.oma.cab-user-prefs+xml +# application/vnd.oma.dcd +# application/vnd.oma.dcdc application/vnd.oma.dd2+xml dd2 -application/vnd.oma.drm.risd+xml -application/vnd.oma.group-usage-list+xml -application/vnd.oma.poc.groups+xml -application/vnd.oma.xcap-directory+xml -application/vnd.omads-email+xml -application/vnd.omads-file+xml -application/vnd.omads-folder+xml -application/vnd.omaloc-supl-init +# application/vnd.oma.drm.risd+xml +# application/vnd.oma.group-usage-list+xml +# application/vnd.oma.pal+xml +# application/vnd.oma.poc.detailed-progress-report+xml +# application/vnd.oma.poc.final-report+xml +# application/vnd.oma.poc.groups+xml +# application/vnd.oma.poc.invocation-descriptor+xml +# application/vnd.oma.poc.optimized-progress-report+xml +# application/vnd.oma.push +# application/vnd.oma.scidm.messages+xml +# application/vnd.oma.xcap-directory+xml +# application/vnd.omads-email+xml +# application/vnd.omads-file+xml +# application/vnd.omads-folder+xml +# application/vnd.omaloc-supl-init application/vnd.openofficeorg.extension oxt -application/vnd.osa.netdeploy +# application/vnd.openxmlformats-officedocument.custom-properties+xml +# application/vnd.openxmlformats-officedocument.customxmlproperties+xml +# application/vnd.openxmlformats-officedocument.drawing+xml +# application/vnd.openxmlformats-officedocument.drawingml.chart+xml +# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml +# application/vnd.openxmlformats-officedocument.extended-properties+xml +# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml +# application/vnd.openxmlformats-officedocument.presentationml.comments+xml +# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx +# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml +application/vnd.openxmlformats-officedocument.presentationml.slide sldx +# application/vnd.openxmlformats-officedocument.presentationml.slide+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx +# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml +# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml +# application/vnd.openxmlformats-officedocument.presentationml.tags+xml +application/vnd.openxmlformats-officedocument.presentationml.template potx +# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx +# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml +# application/vnd.openxmlformats-officedocument.theme+xml +# application/vnd.openxmlformats-officedocument.themeoverride+xml +# application/vnd.openxmlformats-officedocument.vmldrawing +# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx +# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml +# application/vnd.openxmlformats-package.core-properties+xml +# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml +# application/vnd.openxmlformats-package.relationships+xml +# application/vnd.quobject-quoxdocument +# application/vnd.osa.netdeploy +application/vnd.osgeo.mapguide.package mgp +# application/vnd.osgi.bundle application/vnd.osgi.dp dp -application/vnd.otps.ct-kip+xml -application/vnd.palm prc pdb pqa oprc -application/vnd.paos.xml +application/vnd.osgi.subsystem esa +# application/vnd.otps.ct-kip+xml +application/vnd.palm pdb pqa oprc +# application/vnd.paos.xml +application/vnd.pawaafile paw application/vnd.pg.format str application/vnd.pg.osasli ei6 -application/vnd.piaccess.application-licence +# application/vnd.piaccess.application-licence application/vnd.picsel efif -application/vnd.poc.group-advertisement+xml +application/vnd.pmi.widget wg +# application/vnd.poc.group-advertisement+xml application/vnd.pocketlearn plf application/vnd.powerbuilder6 pbd -application/vnd.powerbuilder6-s -application/vnd.powerbuilder7 -application/vnd.powerbuilder7-s -application/vnd.powerbuilder75 -application/vnd.powerbuilder75-s -application/vnd.preminet +# application/vnd.powerbuilder6-s +# application/vnd.powerbuilder7 +# application/vnd.powerbuilder7-s +# application/vnd.powerbuilder75 +# application/vnd.powerbuilder75-s +# application/vnd.preminet application/vnd.previewsystems.box box application/vnd.proteus.magazine mgz application/vnd.publishare-delta-tree qps application/vnd.pvi.ptid1 ptid -application/vnd.pwg-multiplexed -application/vnd.pwg-xhtml-print+xml -application/vnd.qualcomm.brew-app-res +# application/vnd.pwg-multiplexed +# application/vnd.pwg-xhtml-print+xml +# application/vnd.qualcomm.brew-app-res application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -application/vnd.rapid +# application/vnd.radisys.moml+xml +# application/vnd.radisys.msml+xml +# application/vnd.radisys.msml-audit+xml +# application/vnd.radisys.msml-audit-conf+xml +# application/vnd.radisys.msml-audit-conn+xml +# application/vnd.radisys.msml-audit-dialog+xml +# application/vnd.radisys.msml-audit-stream+xml +# application/vnd.radisys.msml-conf+xml +# application/vnd.radisys.msml-dialog+xml +# application/vnd.radisys.msml-dialog-base+xml +# application/vnd.radisys.msml-dialog-fax-detect+xml +# application/vnd.radisys.msml-dialog-fax-sendrecv+xml +# application/vnd.radisys.msml-dialog-group+xml +# application/vnd.radisys.msml-dialog-speech+xml +# application/vnd.radisys.msml-dialog-transform+xml +# application/vnd.rainstor.data +# application/vnd.rapid +application/vnd.realvnc.bed bed application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml -application/vnd.renlearn.rlprint +application/vnd.recordare.musicxml+xml musicxml +# application/vnd.renlearn.rlprint +application/vnd.rig.cryptonote cryptonote +application/vnd.rim.cod cod application/vnd.rn-realmedia rm -application/vnd.ruckus.download -application/vnd.s3sms -application/vnd.scribus -application/vnd.sealed.3df -application/vnd.sealed.csf -application/vnd.sealed.doc -application/vnd.sealed.eml -application/vnd.sealed.mht -application/vnd.sealed.net -application/vnd.sealed.ppt -application/vnd.sealed.tiff -application/vnd.sealed.xls -application/vnd.sealedmedia.softseal.html -application/vnd.sealedmedia.softseal.pdf +application/vnd.rn-realmedia-vbr rmvb +application/vnd.route66.link66+xml link66 +# application/vnd.rs-274x +# application/vnd.ruckus.download +# application/vnd.s3sms +application/vnd.sailingtracker.track st +# application/vnd.sbm.cid +# application/vnd.sbm.mid2 +# application/vnd.scribus +# application/vnd.sealed.3df +# application/vnd.sealed.csf +# application/vnd.sealed.doc +# application/vnd.sealed.eml +# application/vnd.sealed.mht +# application/vnd.sealed.net +# application/vnd.sealed.ppt +# application/vnd.sealed.tiff +# application/vnd.sealed.xls +# application/vnd.sealedmedia.softseal.html +# application/vnd.sealedmedia.softseal.pdf application/vnd.seemail see application/vnd.sema sema application/vnd.semd semd @@ -517,292 +905,456 @@ application/vnd.shana.informed.interchange iif application/vnd.shana.informed.package ipk application/vnd.simtech-mindmapper twd twds application/vnd.smaf mmf +# application/vnd.smart.notebook +application/vnd.smart.teacher teacher +# application/vnd.software602.filler.form+xml +# application/vnd.software602.filler.form-xml-zip application/vnd.solent.sdkm+xml sdkm sdkd application/vnd.spotfire.dxp dxp application/vnd.spotfire.sfs sfs -application/vnd.sss-cod -application/vnd.sss-dtf -application/vnd.sss-ntf -application/vnd.street-stream -application/vnd.sun.wadl+xml +# application/vnd.sss-cod +# application/vnd.sss-dtf +# application/vnd.sss-ntf +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.stepmania.package smzip +application/vnd.stepmania.stepchart sm +# application/vnd.street-stream +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +# application/vnd.sun.wadl+xml application/vnd.sus-calendar sus susp application/vnd.svd svd -application/vnd.swiftview-ics +# application/vnd.swiftview-ics +application/vnd.symbian.install sis sisx application/vnd.syncml+xml xsm application/vnd.syncml.dm+wbxml bdm application/vnd.syncml.dm+xml xdm -application/vnd.syncml.ds.notification +# application/vnd.syncml.dm.notification +# application/vnd.syncml.ds.notification application/vnd.tao.intent-module-archive tao +application/vnd.tcpdump.pcap pcap cap dmp application/vnd.tmobile-livetv tmo application/vnd.trid.tpt tpt application/vnd.triscape.mxs mxs application/vnd.trueapp tra -application/vnd.truedoc +# application/vnd.truedoc +# application/vnd.ubisoft.webplayer application/vnd.ufdl ufd ufdl application/vnd.uiq.theme utz application/vnd.umajin umj application/vnd.unity unityweb application/vnd.uoml+xml uoml -application/vnd.uplanet.alert -application/vnd.uplanet.alert-wbxml -application/vnd.uplanet.bearer-choice -application/vnd.uplanet.bearer-choice-wbxml -application/vnd.uplanet.cacheop -application/vnd.uplanet.cacheop-wbxml -application/vnd.uplanet.channel -application/vnd.uplanet.channel-wbxml -application/vnd.uplanet.list -application/vnd.uplanet.list-wbxml -application/vnd.uplanet.listcmd -application/vnd.uplanet.listcmd-wbxml -application/vnd.uplanet.signal +# application/vnd.uplanet.alert +# application/vnd.uplanet.alert-wbxml +# application/vnd.uplanet.bearer-choice +# application/vnd.uplanet.bearer-choice-wbxml +# application/vnd.uplanet.cacheop +# application/vnd.uplanet.cacheop-wbxml +# application/vnd.uplanet.channel +# application/vnd.uplanet.channel-wbxml +# application/vnd.uplanet.list +# application/vnd.uplanet.list-wbxml +# application/vnd.uplanet.listcmd +# application/vnd.uplanet.listcmd-wbxml +# application/vnd.uplanet.signal application/vnd.vcx vcx -application/vnd.vd-study -application/vnd.vectorworks -application/vnd.vidsoft.vidconference +# application/vnd.vd-study +# application/vnd.vectorworks +# application/vnd.verimatrix.vcas +# application/vnd.vidsoft.vidconference application/vnd.visio vsd vst vss vsw application/vnd.visionary vis -application/vnd.vividence.scriptfile +# application/vnd.vividence.scriptfile application/vnd.vsf vsf -application/vnd.wap.sic -application/vnd.wap.slc +# application/vnd.wap.sic +# application/vnd.wap.slc application/vnd.wap.wbxml wbxml application/vnd.wap.wmlc wmlc application/vnd.wap.wmlscriptc wmlsc application/vnd.webturbo wtb -application/vnd.wfa.wsc +# application/vnd.wfa.wsc +# application/vnd.wmc +# application/vnd.wmf.bootstrap +# application/vnd.wolfram.mathematica +# application/vnd.wolfram.mathematica.package +application/vnd.wolfram.player nbp application/vnd.wordperfect wpd application/vnd.wqd wqd -application/vnd.wrq-hp3000-labelled +# application/vnd.wrq-hp3000-labelled application/vnd.wt.stf stf -application/vnd.wv.csp+wbxml -application/vnd.wv.csp+xml -application/vnd.wv.ssp+xml +# application/vnd.wv.csp+wbxml +# application/vnd.wv.csp+xml +# application/vnd.wv.ssp+xml application/vnd.xara xar application/vnd.xfdl xfdl -application/vnd.xmpie.cpkg -application/vnd.xmpie.dpkg -application/vnd.xmpie.plan -application/vnd.xmpie.ppkg -application/vnd.xmpie.xlim +# application/vnd.xfdl.webform +# application/vnd.xmi+xml +# application/vnd.xmpie.cpkg +# application/vnd.xmpie.dpkg +# application/vnd.xmpie.plan +# application/vnd.xmpie.ppkg +# application/vnd.xmpie.xlim application/vnd.yamaha.hv-dic hvd application/vnd.yamaha.hv-script hvs application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.openscoreformat osf +application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg +# application/vnd.yamaha.remote-setup application/vnd.yamaha.smaf-audio saf application/vnd.yamaha.smaf-phrase spf +# application/vnd.yamaha.through-ngn +# application/vnd.yamaha.tunnel-udpencap application/vnd.yellowriver-custom-menu cmp +application/vnd.zul zir zirz application/vnd.zzazz.deck+xml zaz application/voicexml+xml vxml -application/watcherinfo+xml -application/whoispp-query -application/whoispp-response +# application/vq-rtcpxr +# application/watcherinfo+xml +# application/whoispp-query +# application/whoispp-response +application/widget wgt application/winhlp hlp -application/wita -application/wordperfect5.1 +# application/wita +# application/wordperfect5.1 application/wsdl+xml wsdl application/wspolicy+xml wspolicy +application/x-7z-compressed 7z +application/x-abiword abw application/x-ace-compressed ace +# application/x-amf +application/x-apple-diskimage dmg +application/x-authorware-bin aab x32 u32 vox +application/x-authorware-map aam +application/x-authorware-seg aas application/x-bcpio bcpio application/x-bittorrent torrent +application/x-blorb blb blorb application/x-bzip bz application/x-bzip2 bz2 boz +application/x-cbr cbr cba cbt cbz cb7 application/x-cdlink vcd +application/x-cfs-compressed cfs application/x-chat chat application/x-chess-pgn pgn -application/x-compress +application/x-conference nsc +# application/x-compress application/x-cpio cpio application/x-csh csh -application/x-director dcr dir dxr fgd +application/x-debian-package deb udeb +application/x-dgc-compressed dgc +application/x-director dir dcr dxr cst cct cxt w3d fgd swa +application/x-doom wad +application/x-dtbncx+xml ncx +application/x-dtbook+xml dtb +application/x-dtbresource+xml res application/x-dvi dvi +application/x-envoy evy +application/x-eva eva +application/x-font-bdf bdf +# application/x-font-dos +# application/x-font-framemaker +application/x-font-ghostscript gsf +# application/x-font-libgrx +application/x-font-linux-psf psf +application/x-font-otf otf +application/x-font-pcf pcf +application/x-font-snf snf +# application/x-font-speedo +# application/x-font-sunos-news +application/x-font-ttf ttf ttc +application/x-font-type1 pfa pfb pfm afm +application/font-woff woff +# application/x-font-vfont +application/x-freearc arc application/x-futuresplash spl +application/x-gca-compressed gca +application/x-glulx ulx +application/x-gnumeric gnumeric +application/x-gramps-xml gramps application/x-gtar gtar -application/x-gzip +# application/x-gzip application/x-hdf hdf +application/x-install-instructions install +application/x-iso9660-image iso +application/x-java-jnlp-file jnlp application/x-latex latex +application/x-lzh-compressed lzh lha +application/x-mie mie +application/x-mobipocket-ebook prc mobi +application/x-ms-application application +application/x-ms-shortcut lnk application/x-ms-wmd wmd application/x-ms-wmz wmz +application/x-ms-xbap xbap application/x-msaccess mdb application/x-msbinder obd application/x-mscardfile crd application/x-msclip clp application/x-msdownload exe dll com bat msi application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf +application/x-msmetafile wmf wmz emf emz application/x-msmoney mny application/x-mspublisher pub application/x-msschedule scd application/x-msterminal trm application/x-mswrite wri application/x-netcdf nc cdf +application/x-nzb nzb application/x-pkcs12 p12 pfx application/x-pkcs7-certificates p7b spc application/x-pkcs7-certreqresp p7r application/x-rar-compressed rar +application/x-research-info-systems ris application/x-sh sh application/x-shar shar application/x-shockwave-flash swf +application/x-silverlight-app xap +application/x-sql sql application/x-stuffit sit application/x-stuffitx sitx +application/x-subrip srt application/x-sv4cpio sv4cpio application/x-sv4crc sv4crc +application/x-t3vm-image t3 +application/x-tads gam application/x-tar tar application/x-tcl tcl application/x-tex tex +application/x-tex-tfm tfm application/x-texinfo texinfo texi +application/x-tgif obj application/x-ustar ustar application/x-wais-source src application/x-x509-ca-cert der crt -application/x400-bp -application/xcap-att+xml -application/xcap-caps+xml -application/xcap-el+xml -application/xcap-error+xml -application/xcap-ns+xml +application/x-xfig fig +application/x-xliff+xml xlf +application/x-xpinstall xpi +application/x-xz xz +application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 +# application/x400-bp +application/xaml+xml xaml +# application/xcap-att+xml +# application/xcap-caps+xml +application/xcap-diff+xml xdf +# application/xcap-el+xml +# application/xcap-error+xml +# application/xcap-ns+xml +# application/xcon-conference-info-diff+xml +# application/xcon-conference-info+xml application/xenc+xml xenc application/xhtml+xml xhtml xht +# application/xhtml-voice+xml application/xml xml xsl application/xml-dtd dtd -application/xml-external-parsed-entity -application/xmpp+xml +# application/xml-external-parsed-entity +# application/xmpp+xml application/xop+xml xop +application/xproc+xml xpl application/xslt+xml xslt application/xspf+xml xspf application/xv+xml mxml xhvml xvml xvm +application/yang yang +application/yin+xml yin application/zip zip -audio/32kadpcm -audio/3gpp -audio/3gpp2 -audio/ac3 -audio/amr -audio/amr-wb -audio/amr-wb+ -audio/asc +# audio/1d-interleaved-parityfec +# audio/32kadpcm +# audio/3gpp +# audio/3gpp2 +# audio/ac3 +audio/adpcm adp +# audio/amr +# audio/amr-wb +# audio/amr-wb+ +# audio/asc +# audio/atrac-advanced-lossless +# audio/atrac-x +# audio/atrac3 audio/basic au snd -audio/bv16 -audio/bv32 -audio/clearmode -audio/cn -audio/dat12 -audio/dls -audio/dsr-es201108 -audio/dsr-es202050 -audio/dsr-es202211 -audio/dsr-es202212 -audio/dvi4 -audio/eac3 -audio/evrc -audio/evrc-qcp -audio/evrc0 -audio/evrc1 -audio/evrcb -audio/evrcb0 -audio/evrcb1 -audio/g722 -audio/g7221 -audio/g723 -audio/g726-16 -audio/g726-24 -audio/g726-32 -audio/g726-40 -audio/g728 -audio/g729 -audio/g7291 -audio/g729d -audio/g729e -audio/gsm -audio/gsm-efr -audio/ilbc -audio/l16 -audio/l20 -audio/l24 -audio/l8 -audio/lpc +# audio/bv16 +# audio/bv32 +# audio/clearmode +# audio/cn +# audio/dat12 +# audio/dls +# audio/dsr-es201108 +# audio/dsr-es202050 +# audio/dsr-es202211 +# audio/dsr-es202212 +# audio/dv +# audio/dvi4 +# audio/eac3 +# audio/evrc +# audio/evrc-qcp +# audio/evrc0 +# audio/evrc1 +# audio/evrcb +# audio/evrcb0 +# audio/evrcb1 +# audio/evrcwb +# audio/evrcwb0 +# audio/evrcwb1 +# audio/example +# audio/fwdred +# audio/g719 +# audio/g722 +# audio/g7221 +# audio/g723 +# audio/g726-16 +# audio/g726-24 +# audio/g726-32 +# audio/g726-40 +# audio/g728 +# audio/g729 +# audio/g7291 +# audio/g729d +# audio/g729e +# audio/gsm +# audio/gsm-efr +# audio/gsm-hr-08 +# audio/ilbc +# audio/ip-mr_v2.5 +# audio/isac +# audio/l16 +# audio/l20 +# audio/l24 +# audio/l8 +# audio/lpc audio/midi mid midi kar rmi -audio/mobile-xmf +# audio/mobile-xmf audio/mp4 mp4a -audio/mp4a-latm -audio/mpa -audio/mpa-robust +# audio/mp4a-latm +# audio/mpa +# audio/mpa-robust audio/mpeg mpga mp2 mp2a mp3 m2a m3a -audio/mpeg4-generic -audio/parityfec -audio/pcma -audio/pcmu -audio/prs.sid -audio/qcelp -audio/red -audio/rtp-enc-aescm128 -audio/rtp-midi -audio/rtx -audio/smv -audio/smv0 -audio/smv-qcp -audio/sp-midi -audio/t140c -audio/t38 -audio/telephone-event -audio/tone -audio/vdvi -audio/vmr-wb -audio/vnd.3gpp.iufp -audio/vnd.4sb -audio/vnd.audiokoz -audio/vnd.celp -audio/vnd.cisco.nse -audio/vnd.cmles.radio-events -audio/vnd.cns.anp1 -audio/vnd.cns.inf1 +# audio/mpeg4-generic +# audio/musepack +audio/ogg oga ogg spx +# audio/opus +# audio/parityfec +# audio/pcma +# audio/pcma-wb +# audio/pcmu-wb +# audio/pcmu +# audio/prs.sid +# audio/qcelp +# audio/red +# audio/rtp-enc-aescm128 +# audio/rtp-midi +# audio/rtx +audio/s3m s3m +audio/silk sil +# audio/smv +# audio/smv0 +# audio/smv-qcp +# audio/sp-midi +# audio/speex +# audio/t140c +# audio/t38 +# audio/telephone-event +# audio/tone +# audio/uemclip +# audio/ulpfec +# audio/vdvi +# audio/vmr-wb +# audio/vnd.3gpp.iufp +# audio/vnd.4sb +# audio/vnd.audiokoz +# audio/vnd.celp +# audio/vnd.cisco.nse +# audio/vnd.cmles.radio-events +# audio/vnd.cns.anp1 +# audio/vnd.cns.inf1 +audio/vnd.dece.audio uva uvva audio/vnd.digital-winds eol -audio/vnd.dlna.adts -audio/vnd.dolby.mlp -audio/vnd.everad.plj -audio/vnd.hns.audio +# audio/vnd.dlna.adts +# audio/vnd.dolby.heaac.1 +# audio/vnd.dolby.heaac.2 +# audio/vnd.dolby.mlp +# audio/vnd.dolby.mps +# audio/vnd.dolby.pl2 +# audio/vnd.dolby.pl2x +# audio/vnd.dolby.pl2z +# audio/vnd.dolby.pulse.1 +audio/vnd.dra dra +audio/vnd.dts dts +audio/vnd.dts.hd dtshd +# audio/vnd.dvb.file +# audio/vnd.everad.plj +# audio/vnd.hns.audio audio/vnd.lucent.voice lvp -audio/vnd.nokia.mobile-xmf -audio/vnd.nortel.vbk +audio/vnd.ms-playready.media.pya pya +# audio/vnd.nokia.mobile-xmf +# audio/vnd.nortel.vbk audio/vnd.nuera.ecelp4800 ecelp4800 audio/vnd.nuera.ecelp7470 ecelp7470 audio/vnd.nuera.ecelp9600 ecelp9600 -audio/vnd.octel.sbc -audio/vnd.qcelp -audio/vnd.rhetorex.32kadpcm -audio/vnd.sealedmedia.softseal.mpeg -audio/vnd.vmx.cvsd -audio/wav wav +# audio/vnd.octel.sbc +# audio/vnd.qcelp +# audio/vnd.rhetorex.32kadpcm +audio/vnd.rip rip +# audio/vnd.sealedmedia.softseal.mpeg +# audio/vnd.vmx.cvsd +# audio/vorbis +# audio/vorbis-config +audio/webm weba +audio/x-aac aac audio/x-aiff aif aiff aifc +audio/x-caf caf +audio/x-flac flac +audio/x-matroska mka audio/x-mpegurl m3u audio/x-ms-wax wax audio/x-ms-wma wma audio/x-pn-realaudio ram ra audio/x-pn-realaudio-plugin rmp +# audio/x-tta audio/x-wav wav +audio/xm xm chemical/x-cdx cdx chemical/x-cif cif chemical/x-cmdf cmdf chemical/x-cml cml chemical/x-csml csml -chemical/x-pdb pdb +# chemical/x-pdb chemical/x-xyz xyz image/bmp bmp image/cgm cgm -image/fits +# image/example +# image/fits image/g3fax g3 image/gif gif image/ief ief -image/jp2 +# image/jp2 image/jpeg jpeg jpg jpe -image/jpm -image/jpx -image/naplps +# image/jpm +# image/jpx +image/ktx ktx +# image/naplps image/png png image/prs.btif btif -image/prs.pti +# image/prs.pti +image/sgi sgi image/svg+xml svg svgz -image/t38 +# image/t38 image/tiff tiff tif -image/tiff-fx +# image/tiff-fx image/vnd.adobe.photoshop psd -image/vnd.cns.inf2 +# image/vnd.cns.inf2 +image/vnd.dece.graphic uvi uvvi uvg uvvg +image/vnd.dvb.subtitle sub image/vnd.djvu djvu djv image/vnd.dwg dwg image/vnd.dxf dxf @@ -811,20 +1363,26 @@ image/vnd.fpx fpx image/vnd.fst fst image/vnd.fujixerox.edmics-mmr mmr image/vnd.fujixerox.edmics-rlc rlc -image/vnd.globalgraphics.pgb -image/vnd.microsoft.icon ico -image/vnd.mix +# image/vnd.globalgraphics.pgb +# image/vnd.microsoft.icon +# image/vnd.mix image/vnd.ms-modi mdi +image/vnd.ms-photo wdp image/vnd.net-fpx npx -image/vnd.sealed.png -image/vnd.sealedmedia.softseal.gif -image/vnd.sealedmedia.softseal.jpg -image/vnd.svf +# image/vnd.radiance +# image/vnd.sealed.png +# image/vnd.sealedmedia.softseal.gif +# image/vnd.sealedmedia.softseal.jpg +# image/vnd.svf image/vnd.wap.wbmp wbmp image/vnd.xiff xif +image/webp webp +image/x-3ds 3ds image/x-cmu-raster ras image/x-cmx cmx -image/x-icon +image/x-freehand fh fhc fh4 fh5 fh7 +image/x-icon ico +image/x-mrsid-image sid image/x-pcx pcx image/x-pict pic pct image/x-portable-anymap pnm @@ -832,152 +1390,221 @@ image/x-portable-bitmap pbm image/x-portable-graymap pgm image/x-portable-pixmap ppm image/x-rgb rgb +image/x-tga tga image/x-xbitmap xbm image/x-xpixmap xpm image/x-xwindowdump xwd -message/cpim -message/delivery-status -message/disposition-notification -message/external-body -message/http -message/news -message/partial +# message/cpim +# message/delivery-status +# message/disposition-notification +# message/example +# message/external-body +# message/feedback-report +# message/global +# message/global-delivery-status +# message/global-disposition-notification +# message/global-headers +# message/http +# message/imdn+xml +# message/news +# message/partial message/rfc822 eml mime -message/s-http -message/sip -message/sipfrag -message/tracking-status +# message/s-http +# message/sip +# message/sipfrag +# message/tracking-status +# message/vnd.si.simp +# model/example model/iges igs iges model/mesh msh mesh silo +model/vnd.collada+xml dae model/vnd.dwf dwf -model/vnd.flatland.3dml +# model/vnd.flatland.3dml model/vnd.gdl gdl -model/vnd.gs.gdl +# model/vnd.gs-gdl +# model/vnd.gs.gdl model/vnd.gtw gtw -model/vnd.moml+xml +# model/vnd.moml+xml model/vnd.mts mts -model/vnd.parasolid.transmit.binary -model/vnd.parasolid.transmit.text +# model/vnd.parasolid.transmit.binary +# model/vnd.parasolid.transmit.text model/vnd.vtu vtu model/vrml wrl vrml -multipart/alternative -multipart/appledouble -multipart/byteranges -multipart/digest -multipart/encrypted -multipart/form-data -multipart/header-set -multipart/mixed -multipart/parallel -multipart/related -multipart/report -multipart/signed -multipart/voice-message +model/x3d+binary x3db x3dbz +model/x3d+vrml x3dv x3dvz +model/x3d+xml x3d x3dz +# multipart/alternative +# multipart/appledouble +# multipart/byteranges +# multipart/digest +# multipart/encrypted +# multipart/example +# multipart/form-data +# multipart/header-set +# multipart/mixed +# multipart/parallel +# multipart/related +# multipart/report +# multipart/signed +# multipart/voice-message +# text/1d-interleaved-parityfec +text/cache-manifest appcache text/calendar ics ifb text/css css text/csv csv -text/directory -text/dns -text/enriched +# text/directory +# text/dns +# text/ecmascript +# text/enriched +# text/example +# text/fwdred text/html html htm -text/parityfec +# text/javascript +text/n3 n3 +# text/parityfec text/plain txt text conf def list log in -text/prs.fallenstein.rst +# text/prs.fallenstein.rst text/prs.lines.tag dsc -text/red -text/rfc822-headers +# text/vnd.radisys.msml-basic-layout +# text/red +# text/rfc822-headers text/richtext rtx -text/rtf -text/rtp-enc-aescm128 -text/rtx +# text/rtf +# text/rtp-enc-aescm128 +# text/rtx text/sgml sgml sgm -text/t140 +# text/t140 text/tab-separated-values tsv text/troff t tr roff man me ms +text/turtle ttl +# text/ulpfec text/uri-list uri uris urls -text/vnd.abc -text/vnd.curl -text/vnd.dmclientscript -text/vnd.esmertec.theme-descriptor +text/vcard vcard +# text/vnd.abc +text/vnd.curl curl +text/vnd.curl.dcurl dcurl +text/vnd.curl.scurl scurl +text/vnd.curl.mcurl mcurl +# text/vnd.dmclientscript +text/vnd.dvb.subtitle sub +# text/vnd.esmertec.theme-descriptor text/vnd.fly fly text/vnd.fmi.flexstor flx +text/vnd.graphviz gv text/vnd.in3d.3dml 3dml text/vnd.in3d.spot spot -text/vnd.iptc.newsml -text/vnd.iptc.nitf -text/vnd.latex-z -text/vnd.motorola.reflex -text/vnd.ms-mediapackage -text/vnd.net2phone.commcenter.command +# text/vnd.iptc.newsml +# text/vnd.iptc.nitf +# text/vnd.latex-z +# text/vnd.motorola.reflex +# text/vnd.ms-mediapackage +# text/vnd.net2phone.commcenter.command +# text/vnd.si.uricatalogue text/vnd.sun.j2me.app-descriptor jad -text/vnd.trolltech.linguist -text/vnd.wap.si -text/vnd.wap.sl +# text/vnd.trolltech.linguist +# text/vnd.wap.si +# text/vnd.wap.sl text/vnd.wap.wml wml text/vnd.wap.wmlscript wmls text/x-asm s asm text/x-c c cc cxx cpp h hh dic text/x-fortran f for f77 f90 -text/x-pascal p pas text/x-java-source java +text/x-opml opml +text/x-pascal p pas +text/x-nfo nfo text/x-setext etx +text/x-sfv sfv text/x-uuencode uu text/x-vcalendar vcs text/x-vcard vcf -text/xml -text/xml-external-parsed-entity +# text/xml +# text/xml-external-parsed-entity +# video/1d-interleaved-parityfec video/3gpp 3gp -video/3gpp-tt +# video/3gpp-tt video/3gpp2 3g2 -video/bmpeg -video/bt656 -video/celb -video/dv +# video/bmpeg +# video/bt656 +# video/celb +# video/dv +# video/example video/h261 h261 video/h263 h263 -video/h263-1998 -video/h263-2000 +# video/h263-1998 +# video/h263-2000 video/h264 h264 +# video/h264-rcdo +# video/h264-svc video/jpeg jpgv +# video/jpeg2000 video/jpm jpm jpgm video/mj2 mj2 mjp2 -video/mp1s -video/mp2p -video/mp2t +# video/mp1s +# video/mp2p +# video/mp2t video/mp4 mp4 mp4v mpg4 -video/mp4v-es +# video/mp4v-es video/mpeg mpeg mpg mpe m1v m2v -video/mpeg4-generic -video/mpv -video/nv -video/parityfec -video/pointer +# video/mpeg4-generic +# video/mpv +# video/nv +video/ogg ogv +# video/parityfec +# video/pointer video/quicktime qt mov -video/raw -video/rtp-enc-aescm128 -video/rtx -video/smpte292m -video/vc1 -video/vnd.dlna.mpeg-tts +# video/raw +# video/rtp-enc-aescm128 +# video/rtx +# video/smpte292m +# video/ulpfec +# video/vc1 +# video/vnd.cctv +video/vnd.dece.hd uvh uvvh +video/vnd.dece.mobile uvm uvvm +# video/vnd.dece.mp4 +video/vnd.dece.pd uvp uvvp +video/vnd.dece.sd uvs uvvs +video/vnd.dece.video uvv uvvv +# video/vnd.directv.mpeg +# video/vnd.directv.mpeg-tts +# video/vnd.dlna.mpeg-tts +video/vnd.dvb.file dvb video/vnd.fvt fvt -video/vnd.hns.video -video/vnd.motorola.video -video/vnd.motorola.videop +# video/vnd.hns.video +# video/vnd.iptvforum.1dparityfec-1010 +# video/vnd.iptvforum.1dparityfec-2005 +# video/vnd.iptvforum.2dparityfec-1010 +# video/vnd.iptvforum.2dparityfec-2005 +# video/vnd.iptvforum.ttsavc +# video/vnd.iptvforum.ttsmpeg2 +# video/vnd.motorola.video +# video/vnd.motorola.videop video/vnd.mpegurl mxu m4u -video/vnd.nokia.interleaved-multimedia -video/vnd.nokia.videovoip -video/vnd.objectvideo -video/vnd.sealed.mpeg1 -video/vnd.sealed.mpeg4 -video/vnd.sealed.swf -video/vnd.sealedmedia.softseal.mov +video/vnd.ms-playready.media.pyv pyv +# video/vnd.nokia.interleaved-multimedia +# video/vnd.nokia.videovoip +# video/vnd.objectvideo +# video/vnd.sealed.mpeg1 +# video/vnd.sealed.mpeg4 +# video/vnd.sealed.swf +# video/vnd.sealedmedia.softseal.mov +video/vnd.uvvu.mp4 uvu uvvu video/vnd.vivo viv +video/webm webm +video/x-f4v f4v video/x-fli fli +video/x-flv flv +video/x-m4v m4v +video/x-matroska mkv mk3d mks +video/x-mng mng video/x-ms-asf asf asx +video/x-ms-vob vob video/x-ms-wm wm video/x-ms-wmv wmv video/x-ms-wmx wmx video/x-ms-wvx wvx video/x-msvideo avi video/x-sgi-movie movie +video/x-smv smv x-conference/x-cooltalk ice diff --git a/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/loquendo-7-mrcp-v2.xml b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/loquendo-7-mrcp-v2.xml new file mode 100644 index 0000000000000000000000000000000000000000..dcf42821f5bc948d0b8835f4e9410bfa387d1696 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/loquendo-7-mrcp-v2.xml @@ -0,0 +1,32 @@ +<include> + <!-- Loquendo MRCP Server 7 MRCPv2 --> + <profile name="loquendo7-mrcp2" version="2"> + <!--param name="client-ext-ip" value="auto"--> + <param name="client-ip" value="auto"/> + <param name="client-port" value="5090"/> + <param name="server-ip" value="10.5.5.152"/> + <param name="server-port" value="5060"/> + <!--param name="force-destination" value="1"/--> + <param name="sip-transport" value="udp"/> + <!--param name="ua-name" value="FreeSWITCH"/--> + <!--param name="sdp-origin" value="FreeSWITCH"/--> + <!--param name="rtp-ext-ip" value="auto"/--> + <param name="rtp-ip" value="auto"/> + <param name="rtp-port-min" value="4000"/> + <param name="rtp-port-max" value="5000"/> + <!--param name="playout-delay" value="50"/--> + <!--param name="max-playout-delay" value="200"/--> + <!--param name="ptime" value="20"/--> + <param name="codecs" value="PCMU PCMA L16/96/8000"/> + <param name="jsgf-mime-type" value="application/jsgf"/> + + <!-- Add any default MRCP params for SPEAK requests here --> + <synthparams> + </synthparams> + + <!-- Add any default MRCP params for RECOGNIZE requests here --> + <recogparams> + <!--param name="start-input-timers" value="false"/--> + </recogparams> + </profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml new file mode 100644 index 0000000000000000000000000000000000000000..0700dec629b5ac01abb8cacb4b8570677d3de3c9 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml @@ -0,0 +1,39 @@ +<include> + <!-- Nuance MRCP 1.0.0 Server --> + <profile name="nuance-mrcp1" version="1"> + <param name="server-ip" value="10.5.5.152"/> + <param name="server-port" value="554"/> + <param name="resource-location" value=""/> + <param name="speechsynth" value="synthesizer"/> + <param name="speechrecog" value="recognizer"/> + <!--param name="rtp-ext-ip" value="auto"/--> + <param name="rtp-ip" value="auto"/> + <param name="rtp-port-min" value="4000"/> + <param name="rtp-port-max" value="5000"/> + <!-- enable/disable rtcp support --> + <param name="rtcp" value="1"/> + <!-- rtcp bye policies (rtcp must be enabled first) + 0 - disable rtcp bye + 1 - send rtcp bye at the end of session + 2 - send rtcp bye also at the end of each talkspurt (input) + --> + <param name="rtcp-bye" value="2"/> + <!-- rtcp transmission interval in msec (set 0 to disable) --> + <param name="rtcp-tx-interval" value="5000"/> + <!-- period (timeout) to check for new rtcp messages in msec (set 0 to disable) --> + <param name="rtcp-rx-resolution" value="1000"/> + <!--param name="playout-delay" value="50"/--> + <!--param name="max-playout-delay" value="200"/--> + <!--param name="ptime" value="20"/--> + <param name="codecs" value="PCMU PCMA L16/96/8000"/> + + <!-- Add any default MRCP params for SPEAK requests here --> + <synthparams> + </synthparams> + + <!-- Add any default MRCP params for RECOGNIZE requests here --> + <recogparams> + <!--param name="start-input-timers" value="false"/--> + </recogparams> + </profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-5.0-mrcp-v1.xml b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-5.0-mrcp-v1.xml new file mode 100644 index 0000000000000000000000000000000000000000..3c4938a66da53fd00eb7d2f5cd2486b29072fc65 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-5.0-mrcp-v1.xml @@ -0,0 +1,39 @@ +<include> + <!-- Nuance Speech Server 5.0 MRCPv1 --> + <profile name="nuance5-mrcp1" version="1"> + <param name="server-ip" value="10.5.5.152"/> + <param name="server-port" value="4900"/> + <param name="resource-location" value="media"/> + <param name="speechsynth" value="speechsynthesizer"/> + <param name="speechrecog" value="speechrecognizer"/> + <!--param name="rtp-ext-ip" value="auto"/--> + <param name="rtp-ip" value="auto"/> + <param name="rtp-port-min" value="4000"/> + <param name="rtp-port-max" value="5000"/> + <!-- enable/disable rtcp support --> + <param name="rtcp" value="1"/> + <!-- rtcp bye policies (rtcp must be enabled first) + 0 - disable rtcp bye + 1 - send rtcp bye at the end of session + 2 - send rtcp bye also at the end of each talkspurt (input) + --> + <param name="rtcp-bye" value="2"/> + <!-- rtcp transmission interval in msec (set 0 to disable) --> + <param name="rtcp-tx-interval" value="5000"/> + <!-- period (timeout) to check for new rtcp messages in msec (set 0 to disable) --> + <param name="rtcp-rx-resolution" value="1000"/> + <!--param name="playout-delay" value="50"/--> + <!--param name="max-playout-delay" value="200"/--> + <!--param name="ptime" value="20"/--> + <param name="codecs" value="PCMU PCMA L16/96/8000"/> + + <!-- Add any default MRCP params for SPEAK requests here --> + <synthparams> + </synthparams> + + <!-- Add any default MRCP params for RECOGNIZE requests here --> + <recogparams> + <!--param name="start-input-timers" value="false"/--> + </recogparams> + </profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-5.0-mrcp-v2.xml b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-5.0-mrcp-v2.xml new file mode 100644 index 0000000000000000000000000000000000000000..b53cba09849ecfb3ca7d1c68ac1693129e77af76 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/nuance-5.0-mrcp-v2.xml @@ -0,0 +1,43 @@ +<include> + <!-- Nuance Speech Server 5.0 MRCPv2 --> + <profile name="nuance5-mrcp2" version="2"> + <!--param name="client-ext-ip" value="auto"--> + <param name="client-ip" value="auto"/> + <param name="client-port" value="5090"/> + <param name="server-ip" value="10.5.5.152"/> + <param name="server-port" value="5060"/> + <!--param name="force-destination" value="1"/--> + <param name="sip-transport" value="udp"/> + <!--param name="ua-name" value="FreeSWITCH"/--> + <!--param name="sdp-origin" value="FreeSWITCH"/--> + <!--param name="rtp-ext-ip" value="auto"/--> + <param name="rtp-ip" value="auto"/> + <param name="rtp-port-min" value="4000"/> + <param name="rtp-port-max" value="5000"/> + <!-- enable/disable rtcp support --> + <param name="rtcp" value="1"/> + <!-- rtcp bye policies (rtcp must be enabled first) + 0 - disable rtcp bye + 1 - send rtcp bye at the end of session + 2 - send rtcp bye also at the end of each talkspurt (input) + --> + <param name="rtcp-bye" value="2"/> + <!-- rtcp transmission interval in msec (set 0 to disable) --> + <param name="rtcp-tx-interval" value="5000"/> + <!-- period (timeout) to check for new rtcp messages in msec (set 0 to disable) --> + <param name="rtcp-rx-resolution" value="1000"/> + <!--param name="playout-delay" value="50"/--> + <!--param name="max-playout-delay" value="200"/--> + <!--param name="ptime" value="20"/--> + <param name="codecs" value="PCMU PCMA L16/96/8000"/> + + <!-- Add any default MRCP params for SPEAK requests here --> + <synthparams> + </synthparams> + + <!-- Add any default MRCP params for RECOGNIZE requests here --> + <recogparams> + <!--param name="start-input-timers" value="false"/--> + </recogparams> + </profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/unimrcpserver-mrcp-v1.xml b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/unimrcpserver-mrcp-v1.xml new file mode 100644 index 0000000000000000000000000000000000000000..fe02b1582f9c01b06f157c3f69289a73aa13ac0d --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/unimrcpserver-mrcp-v1.xml @@ -0,0 +1,27 @@ +<include> + <!-- UniMRCP Server MRCPv1 --> + <profile name="unimrcpserver-mrcp1" version="1"> + <param name="server-ip" value="10.5.5.152"/> + <param name="server-port" value="1554"/> + <param name="resource-location" value=""/> + <param name="speechsynth" value="speechsynthesizer"/> + <param name="speechrecog" value="speechrecognizer"/> + <!--param name="rtp-ext-ip" value="auto"/--> + <param name="rtp-ip" value="auto"/> + <param name="rtp-port-min" value="4000"/> + <param name="rtp-port-max" value="5000"/> + <!--param name="playout-delay" value="50"/--> + <!--param name="max-playout-delay" value="200"/--> + <!--param name="ptime" value="20"/--> + <param name="codecs" value="PCMU PCMA L16/96/8000"/> + + <!-- Add any default MRCP params for SPEAK requests here --> + <synthparams> + </synthparams> + + <!-- Add any default MRCP params for RECOGNIZE requests here --> + <recogparams> + <!--param name="start-input-timers" value="false"/--> + </recogparams> + </profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/vestec-mrcp-v1.xml b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/vestec-mrcp-v1.xml new file mode 100644 index 0000000000000000000000000000000000000000..cbde87ca5acf93cab37f5e0009acc6f1562248a0 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/vestec-mrcp-v1.xml @@ -0,0 +1,26 @@ +<include> + <!-- Vestec VASRE MRCP Server --> + <profile name="vestec-mrcp-v1" version="1"> + <param name="server-ip" value="127.0.0.1"/> + <param name="server-port" value="1554"/> + <param name="resource-location" value=""/> + <param name="speechsynth" value="speechsynthesizer"/> + <param name="speechrecog" value="speechrecognizer"/> + <param name="rtp-ip" value="auto"/> + <param name="rtp-port-min" value="14000"/> + <param name="rtp-port-max" value="15000"/> + <!--param name="playout-delay" value="50"/--> + <!--param name="max-playout-delay" value="200"/--> + <!--param name="ptime" value="20"/--> + <param name="codecs" value="PCMU PCMA L16/96/8000"/> + + <!-- Add any default MRCP params for SPEAK requests here --> + <synthparams> + </synthparams> + + <!-- Add any default MRCP params for RECOGNIZE requests here --> + <recogparams> + <!--param name="start-input-timers" value="false"/--> + </recogparams> + </profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml new file mode 100644 index 0000000000000000000000000000000000000000..fb1d0ee287c52030006600a5c1323abd93e8e218 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml @@ -0,0 +1,27 @@ +<include> + <!-- Voxeo Prophecy 8.0 MRCPv1 --> + <profile name="voxeo-prophecy8.0-mrcp1" version="1"> + <param name="server-ip" value="99.185.85.31"/> + <param name="server-port" value="554"/> + <param name="resource-location" value=""/> + <param name="speechsynth" value="synthesizer"/> + <param name="speechrecog" value="recognizer"/> + <!--param name="rtp-ext-ip" value="auto"/--> + <param name="rtp-ip" value="auto"/> + <param name="rtp-port-min" value="4000"/> + <param name="rtp-port-max" value="5000"/> + <!--param name="playout-delay" value="50"/--> + <!--param name="max-playout-delay" value="200"/--> + <!--param name="ptime" value="20"/--> + <param name="codecs" value="PCMU PCMA L16/96/8000"/> + + <!-- Add any default MRCP params for SPEAK requests here --> + <synthparams> + </synthparams> + + <!-- Add any default MRCP params for RECOGNIZE requests here --> + <recogparams> + <!--param name="start-input-timers" value="false"/--> + </recogparams> + </profile> +</include> diff --git a/bbb-voice-conference/config/freeswitch/conf/notify-voicemail.tpl b/bbb-voice-conference/config/freeswitch/conf/notify-voicemail.tpl new file mode 100644 index 0000000000000000000000000000000000000000..365faa29211e2f5032e16813f2701507e6a427d9 --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/notify-voicemail.tpl @@ -0,0 +1,44 @@ +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}> +Date: ${RFC2822_DATE} +To: <${voicemail_notify_email}> +Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} +X-Priority: ${voicemail_priority} +X-Mailer: FreeSWITCH + +Content-Type: multipart/alternative; + boundary="000XXX000" + +--000XXX000 +Content-Type: text/plain; charset=ISO-8859-1; Format=Flowed +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + +Created: ${voicemail_time} +From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> +Duration: ${voicemail_message_len} +Account: ${voicemail_account}@${voicemail_domain} + +--000XXX000 +Content-Type: text/html; charset=ISO-8859-1 +Content-Disposition: inline +Content-Transfer-Encoding: 7bit + +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> +<title>Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len}</title> +<meta content="text/html; charset=iso-8859-1" http-equiv="content-type"/> +</head> +<body> + +<font face=arial> +<b>Message From "${voicemail_caller_id_name}" <A HREF="tel:${voicemail_caller_id_number}">${voicemail_caller_id_number}</A></b><br> +<hr noshade size=1> +Created: ${voicemail_time}<br> +Duration: ${voicemail_message_len}<br> +Account: ${voicemail_account}@${voicemail_domain}<br> +</font> + +</body> +</html> +--000XXX000-- diff --git a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external-ipv6.xml b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external-ipv6.xml new file mode 100644 index 0000000000000000000000000000000000000000..5efa79b5f14d48566b4d63b623684ffd9b49db9f --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external-ipv6.xml @@ -0,0 +1,113 @@ +<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"/> + + <!-- Added for Microsoft Edge support + <param name="apply-candidate-acl" value="wan_v6.auto"/> + <param name="apply-candidate-acl" value="rfc1918.auto"/> + <param name="apply-candidate-acl" value="any_v6.auto"/> + <param name="apply-candidate-acl" value="wan_v4.auto"/> + <param name="apply-candidate-acl" value="any_v4.auto"/> + --> + <param name="apply-candidate-acl" value="deny_private_v6"/> + + <!-- 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}"/> + <!-- Shouldn't set these on IPv6 --> + <!--<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 'subjects_in', 'subjects_out' and 'subjects_all' 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}"/> + <param name="ws-binding" value=":5066"/> + <param name="wss-binding" value=":7443"/> + <param name="rtcp-audio-interval-msec" value="5000"/> + <param name="rtcp-video-interval-msec" value="5000"/> + <param name="dtmf-type" value="info"/> + <param name="liberal-dtmf" value="true"/> + </settings> +</profile> + diff --git a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal/example.xml b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external-ipv6/example.xml similarity index 86% rename from bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal/example.xml rename to bbb-voice-conference/config/freeswitch/conf/sip_profiles/external-ipv6/example.xml index fc061f96d18c90edaede5131cffd878d4d4e1575..d8fe39539a94547961fd95bfb2a9cb21ec715f80 100644 --- a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal/example.xml +++ b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external-ipv6/example.xml @@ -9,7 +9,7 @@ <!--/// 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"/>--> + <!--<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 ///--> @@ -27,11 +27,15 @@ <!--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="tport=tcp"/>--> + <!--<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> diff --git a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external.xml b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external.xml index 8f1076364cac461a12523c33bc081cc2ca6cff9f..c93346d59e671c993ec94620b16ef29fd0e555a6 100644 --- a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external.xml +++ b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external.xml @@ -1,14 +1,14 @@ <profile name="external"> - <!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files --> + <!-- 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"/> + <!-- + <alias name="outbound"/> + <alias name="nat"/> --> </aliases> @@ -18,10 +18,13 @@ <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"/> --> + <!-- 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"/> @@ -31,14 +34,22 @@ <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. + + <!-- Added for Microsoft Edge browser --> + <param name="apply-candidate-acl" value="localnet.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_v4.auto"/> + + <!-- 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"/>--> @@ -52,27 +63,57 @@ <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! - --> + 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-ip" value="$${local_ip_v4}"/> + <param name="sip-ip" value="$${local_ip_v4}"/> + <param name="ext-rtp-ip" value="$${local_ip_v4}"/> + <param name="ext-sip-ip" value="$${local_ip_v4}"/> + <param name="rtp-timeout-sec" value="300"/> <param name="rtp-hold-timeout-sec" value="1800"/> - <!--<param name="enable-3pcc" value="true"/>--> + <param name="enable-3pcc" value="proxy"/> <!-- 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="$${external_ssl_dir}"/> + <!--<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}"/> + <param name="ws-binding" value=":5066"/> + <param name="wss-binding" value=":7443"/> + + <!-- enable rtcp on every channel also can be done per leg basis with rtcp_audio_interval_msec variable set to passthru to pass it across a call--> + <param name="rtcp-audio-interval-msec" value="5000"/> + <param name="rtcp-video-interval-msec" value="5000"/> + <!-- Cut down in the join time --> + <param name="dtmf-type" value="info"/> + <param name="liberal-dtmf" value="true"/> </settings> </profile> diff --git a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external/example.xml b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external/example.xml index 7ac8db11860a0aed7fb0110c86fbed0c09265ca5..d8fe39539a94547961fd95bfb2a9cb21ec715f80 100644 --- a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external/example.xml +++ b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/external/example.xml @@ -9,7 +9,7 @@ <!--/// 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"/>--> + <!--<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 ///--> @@ -27,8 +27,15 @@ <!--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="tport=tcp"/>--> + <!--<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> diff --git a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal-ipv6.xml b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal-ipv6.xml index 37ff58b31039e63807bd0e2adce529a4b0f138f0..b4aa0e7fe56c4727c96e82ccd88bc94b4614c4a8 100644 --- a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal-ipv6.xml +++ b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal-ipv6.xml @@ -5,6 +5,7 @@ <!-- 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"/> @@ -24,7 +25,16 @@ <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"/> + + <!-- Added for Microsoft Edge support --> + <param name="apply-candidate-acl" value="wan_v6.auto"/> + <param name="apply-candidate-acl" value="rfc1918.auto"/> + <param name="apply-candidate-acl" value="any_v6.auto"/> + <param name="apply-candidate-acl" value="wan_v4.auto"/> + <param name="apply-candidate-acl" value="any_v4.auto"/> + <!--<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"/> @@ -53,36 +63,39 @@ <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"/>--> - - <!--Uncomment to let calls hit the dialplan *before* you decide if the codec is ok--> - <!--<param name="inbound-late-negotiation" 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--> + <!--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"/>--> @@ -91,6 +104,7 @@ <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"/> + <!-- Shouldn't set these on IPv6 --> <!-- <param name="ext-rtp-ip" value="$${external_rtp_ip}"/> --> <!-- <param name="ext-sip-ip" value="$${external_sip_ip}"/> --> <!-- rtp inactivity timeout --> @@ -102,8 +116,8 @@ <!-- <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. + 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 --> @@ -120,9 +134,9 @@ <!-- 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" />--> + <!-- 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> diff --git a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal.xml b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal.xml index dd1595d5ba717810d271fa8ac2d7190b46114d33..b9a9f68a3cf7ca2df56bf551708925c94c656101 100644 --- a/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal.xml +++ b/bbb-voice-conference/config/freeswitch/conf/sip_profiles/internal.xml @@ -2,47 +2,88 @@ <!-- This is a sofia sip profile/user agent. This will service exactly one ip and port. In FreeSWITCH you can run multiple sip user agents on their own ip and port. - + When you hear someone say "sofia profile" this is what they are talking about. --> - + <!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files --> <!--aliases are other names that will work as a valid profile name for this profile--> <aliases> <!-- - <alias name="default"/> + <alias name="default"/> --> </aliases> <!-- Outbound Registrations --> <gateways> - <X-PRE-PROCESS cmd="include" data="internal/*.xml"/> </gateways> - + <domains> <!-- indicator to parse the directory for domains with parse="true" to get gateways--> <!--<domain name="$${domain}" parse="true"/>--> <!-- indicator to parse the directory for domains with parse="true" to get gateways and alias every domain to this profile --> <!--<domain name="all" alias="true" parse="true"/>--> - <domain name="all" alias="true" parse="false"/> + <domain name="all" alias="true" parse="false"/> </domains> - + <settings> + + + <!-- inject delay between dtmf digits on send to help some slow interpreters (also per channel with rtp_digit_delay var --> + <!-- <param name="rtp-digit-delay" value="40"/>--> + <!-- - When calls are in no media this will bring them back to media - when you press the hold button. + When calls are in no media this will bring them back to media + when you press the hold button. --> <!--<param name="media-option" value="resume-media-on-hold"/> --> + <!-- - This will allow a call after an attended transfer go back to - bypass media after an attended transfer. + This will allow a call after an attended transfer go back to + bypass media after an attended transfer. --> <!--<param name="media-option" value="bypass-media-after-att-xfer"/>--> + + <!-- Can be set to "_undef_" to remove the User-Agent header --> <!-- <param name="user-agent-string" value="FreeSWITCH Rocks!"/> --> + <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"/> --> + <!-- 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="log-auth-failures" value="true"/> + <param name="sip-capture" value="no"/> + + <!-- Use presence_map.conf.xml to convert extension regex to presence protos for routing --> + <!-- <param name="presence-proto-lookup" value="true"/> --> + + + <!-- Don't be picky about negotiated DTMF just always offer 2833 and accept both 2833 and INFO --> + <!--<param name="liberal-dtmf" value="true"/>--> + + + <!-- + Sometimes, in extremely rare edge cases, the Sofia SIP stack may stop + responding. These options allow you to enable and control a watchdog + on the Sofia SIP stack so that if it stops responding for the + specified number of milliseconds, it will cause FreeSWITCH to crash + immediately. This is useful if you run in an HA environment and + need to ensure automated recovery from such a condition. Note that if + your server is idle a lot, the watchdog may fire due to not receiving + any SIP messages. Thus, if you expect your system to be idle, you + should leave the watchdog disabled. It can be toggled on and off + through the FreeSWITCH CLI either on an individual profile basis or + globally for all profiles. So, if you run in an HA environment with a + master and slave, you should use the CLI to make sure the watchdog is + only enabled on the master. + If such crash occurs, FreeSWITCH will dump core if allowed. The + stacktrace will include function watchdog_triggered_abort(). + --> + <param name="watchdog-enabled" value="no"/> + <param name="watchdog-step-timeout" value="30000"/> + <param name="watchdog-event-timeout" value="30000"/> + + <param name="log-auth-failures" value="false"/> + <param name="forward-unsolicited-mwi-notify" value="false"/> + <param name="context" value="public"/> <param name="rfc2833-pt" value="101"/> <!-- port to bind to for sip traffic --> @@ -59,36 +100,53 @@ <param name="hold-music" value="$${hold_music}"/> <param name="apply-nat-acl" value="nat.auto"/> + + <!-- (default true) set to false if you do not wish to have called party info in 1XX responses --> + <!-- <param name="cid-in-1xx" value="false"/> --> + <!-- extended info parsing --> <!-- <param name="extended-info-parsing" value="true"/> --> <!--<param name="aggressive-nat-detection" value="true"/>--> <!-- - There are known issues (asserts and segfaults) when 100rel is enabled. - It is not recommended to enable 100rel at this time. + There are known issues (asserts and segfaults) when 100rel is enabled. + It is not recommended to enable 100rel at this time. --> <!--<param name="enable-100rel" value="true"/>--> + + <!-- uncomment if you don't wish to try a next SRV destination on 503 response --> + <!-- RFC3263 Section 4.3 --> + <!--<param name="disable-srv503" value="true"/>--> + <!-- Enable Compact SIP headers. --> <!--<param name="enable-compact-headers" value="true"/>--> <!-- - enable/disable session timers + enable/disable session timers --> <!--<param name="enable-timer" value="false"/>--> <!--<param name="minimum-session-expires" value="120"/>--> <param name="apply-inbound-acl" value="domains"/> <!-- - This defines your local network, by default we detect your local network - and create this localnet.auto ACL for this. + This defines your local network, by default we detect your local network + and create this localnet.auto ACL for this. --> <param name="local-network-acl" value="localnet.auto"/> <!--<param name="apply-register-acl" value="domains"/>--> <!--<param name="dtmf-type" value="info"/>--> + <!-- Added for Microsoft Edge support --> + <param name="apply-candidate-acl" value="wan_v6.auto"/> + <param name="apply-candidate-acl" value="rfc1918.auto"/> + <param name="apply-candidate-acl" value="any_v6.auto"/> + <param name="apply-candidate-acl" value="wan_v4.auto"/> + <param name="apply-candidate-acl" value="any_v4.auto"/> <!-- 'true' means every time 'first-only' means on the first register --> <!--<param name="send-message-query-on-register" value="true"/>--> - - + + <!-- 'true' means every time 'first-only' means on the first register --> + <!--<param name="send-presence-on-register" value="first-only"/> --> + <!-- Caller-ID type (choose one, can be overridden by inbound call type and/or sip_cid_type channel variable --> <!-- Remote-Party-ID header --> @@ -106,13 +164,16 @@ <param name="record-template" value="${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/> <!--enable to use presence --> <param name="manage-presence" value="true"/> + <!-- send a presence probe on each register to query devices to send presence instead of sending presence with less info --> + <!--<param name="presence-probe-on-register" value="true"/>--> <!--<param name="manage-shared-appearance" value="true"/>--> <!-- used to share presence info across sofia profiles --> <!-- Name of the db to use for this profile --> <!--<param name="dbname" value="share_presence"/>--> - <!--<param name="presence-hosts" value="$${domain}"/>--> + <param name="presence-hosts" value="$${domain},$${local_ip_v4}"/> + <param name="presence-privacy" value="$${presence_privacy}"/> <!-- ************************************************* --> - + <!-- This setting is for AAL2 bitpacking on G726 --> <!-- <param name="bitpacking" value="aal2"/> --> <!--max number of open dialogs in proceeding --> @@ -126,51 +187,80 @@ <!-- 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"/>--> + <!-- Send an OPTIONS packet to all registered endpoints --> + <!--<param name="all-reg-options-ping" value="true"/>--> + <!-- Send an OPTIONS packet to NATed registered endpoints. Can be 'true' or 'udp-only'. --> + <!--<param name="nat-options-ping" value="true"/>--> + <!--<param name="sip-options-respond-503-on-busy" value="true"/>--> + <!--<param name="sip-messages-respond-200-ok" value="true"/>--> + <!--<param name="sip-subscribe-respond-200-ok" value="true"/>--> <!-- TLS: disabled by default, set to "true" to enable --> <param name="tls" value="$${internal_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. (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-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 'subjects_in', 'subjects_out' and 'subjects_all' 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 default: tlsv1,tlsv1.1,tlsv1.2 --> <param name="tls-version" value="$${sip_tls_version}"/> - <!-- turn on auto-flush during bridge (skip timer sleep when the socket already has data) - (reduces delay on latent connections default true, must be disabled explicitly)--> + <!-- TLS ciphers default: ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH --> + <param name="tls-ciphers" value="$${sip_tls_ciphers}"/> + + <!-- turn on auto-flush during bridge (skip timer sleep when the socket already has data) + (reduces delay on latent connections default true, must be disabled explicitly)--> <!--<param name="rtp-autoflush-during-bridge" value="false"/>--> - + <!--If you don't want to pass through timestamps 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"/>--> - + + <!-- Or, if you have PGSQL support, you can use that --> + <!--<param name="odbc-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password='' options='-c client_min_messages=NOTICE' application_name='freeswitch'" />--> + <!--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"/>--> - - <!--Uncomment to let calls hit the dialplan *before* you decide if the codec is ok--> - <!--<param name="inbound-late-negotiation" 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--> + <!--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"/>--> <!-- Handle 302 Redirect in the dialplan --> <!--<param name="manual-redirect" value="true"/> --> @@ -187,16 +277,16 @@ <param name="inbound-reg-force-matching-username" value="true"/> <!-- on authed calls, authenticate *all* the packets not just invite --> <param name="auth-all-packets" value="false"/> - + <!-- external_sip_ip - Used as the public IP address for SDP. - Can be an one of: - ip address - "12.34.56.78" - a stun server lookup - "stun:stun.server.com" - a DNS name - "host:host.server.com" - auto - Use guessed ip. - auto-nat - Use ip learned from NAT-PMP or UPNP - --> + Used as the public IP address for SDP. + Can be an one of: + ip address - "12.34.56.78" + a stun server lookup - "stun:stun.server.com" + a DNS name - "host:host.server.com" + auto - Use guessed ip. + auto-nat - Use ip learned from NAT-PMP or UPNP + --> <param name="ext-rtp-ip" value="auto-nat"/> <param name="ext-sip-ip" value="auto-nat"/> @@ -209,8 +299,8 @@ <!-- <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. + 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 --> @@ -220,38 +310,54 @@ <!--all inbound reg will stored in the db using this domain --> <param name="force-register-db-domain" value="$${domain}"/> + + <!-- for sip over websocket support --> + <!-- param name="ws-binding" value=":5066"/ --> + + <!-- for sip over secure websocket support --> + <!-- You need wss.pem in $${certs_dir} for wss or one will be created for you --> + <!-- param name="wss-binding" value=":7443"/ --> + + <!--<param name="delete-subs-on-register" value="false"/>--> + + <!-- launch a new thread to process each new inbound register when using heavier backends --> + <!-- <param name="inbound-reg-in-new-thread" value="true"/> --> + <!-- enable rtcp on every channel also can be done per leg basis with rtcp_audio_interval_msec variable set to passthru to pass it across a call--> <!--<param name="rtcp-audio-interval-msec" value="5000"/>--> <!--<param name="rtcp-video-interval-msec" value="5000"/>--> <!--force suscription expires to a lower value than requested--> <!--<param name="force-subscription-expires" value="60"/>--> + + <!-- add a random deviation to the expires value of the 202 Accepted --> + <!--<param name="sip-subscription-max-deviation" value="120"/>--> + <!-- disable register and transfer which may be undesirable in a public switch --> <!--<param name="disable-transfer" value="true"/>--> <!--<param name="disable-register" value="true"/>--> - <!-- - enable-3pcc can be set to either 'true' or 'proxy', true accepts the call - right away, proxy waits until the call has been answered then sends accepts + <!-- + enable-3pcc can be set to either 'true' or 'proxy', true accepts the call + right away, proxy waits until the call has been answered then sends accepts --> - <!--<param name="enable-3pcc" value="true"/>--> - + <param name="enable-3pcc" value="proxy"/> + <!-- use at your own risk or if you know what this does.--> <!--<param name="NDLB-force-rport" value="true"/>--> <!-- - Choose the realm challenge key. Default is auto_to if not set. - - auto_from - uses the from field as the value for the sip realm. - auto_to - uses the to field as the value for the sip realm. - <anyvalue> - you can input any value to use for the sip realm. - - If you want URL dialing to work you'll want to set this to auto_from. - - If you use any other value besides auto_to or auto_from you'll loose - the ability to do multiple domains. - - Note: comment out to restore the behavior before 2008-09-29 + Choose the realm challenge key. Default is auto_to if not set. + + auto_from - uses the from field as the value for the sip realm. + auto_to - uses the to field as the value for the sip realm. + <anyvalue> - you can input any value to use for the sip realm. + If you want URL dialing to work you'll want to set this to auto_from. + + If you use any other value besides auto_to or auto_from you'll + loose the ability to do multiple domains. + + Note: comment out to restore the behavior before 2008-09-29 --> <param name="challenge-realm" value="auto_from"/> <!--<param name="disable-rtp-auto-adjust" value="true"/>--> @@ -265,49 +371,58 @@ <!-- set this param to false if your gateway for some reason hates X- headers that it is supposed to ignore--> <!--<param name="pass-callee-id" value="false"/>--> - <!-- clear clears them all or supply the name to add or the name prefixed with ~ to remove - valid values: + <!-- clear clears them all or supply the name to add or the name + prefixed with ~ to remove valid values: - clear - CISCO_SKIP_MARK_BIT_2833 - SONUS_SEND_INVALID_TIMESTAMP_2833 + clear + CISCO_SKIP_MARK_BIT_2833 + SONUS_SEND_INVALID_TIMESTAMP_2833 --> <!--<param name="auto-rtp-bugs" data="clear"/>--> - <!-- the following can be used as workaround with bogus SRV/NAPTR records --> - <!--<param name="disable-srv" value="false" />--> - <!--<param name="disable-naptr" value="false" />--> - - <!-- The following can be used to fine-tune timers within sofia's transport layer - Those settings are for advanced users and can safely be left as-is --> - - <!-- Initial retransmission interval (in milliseconds). - Set the T1 retransmission interval used by the SIP transaction engine. - The T1 is the initial duration used by request retransmission timers A and E (UDP) as well as response retransmission timer G. --> - <!-- <param name="timer-T1" value="500" /> --> - - <!-- Transaction timeout (defaults to T1 * 64). - Set the T1x64 timeout value used by the SIP transaction engine. - The T1x64 is duration used for timers B, F, H, and J (UDP) by the SIP transaction engine. - The timeout value T1x64 can be adjusted separately from the initial retransmission interval T1. --> - <!-- <param name="timer-T1X64" value="32000" /> --> - - - <!-- Maximum retransmission interval (in milliseconds). - Set the maximum retransmission interval used by the SIP transaction engine. - The T2 is the maximum duration used for the timers E (UDP) and G by the SIP transaction engine. - Note that the timer A is not capped by T2. Retransmission interval of INVITE requests grows exponentially - until the timer B fires. --> - <!-- <param name="timer-T2" value="4000" /> --> - - <!-- - Transaction lifetime (in milliseconds). - Set the lifetime for completed transactions used by the SIP transaction engine. - A completed transaction is kept around for the duration of T4 in order to catch late responses. - The T4 is the maximum duration for the messages to stay in the network and the duration of SIP timer K. --> - <!-- <param name="timer-T4" value="4000" /> --> - + <!-- the following can be used as workaround with bogus SRV/NAPTR records --> + <!--<param name="disable-srv" value="false" />--> + <!--<param name="disable-naptr" value="false" />--> + + <!-- The following can be used to fine-tune timers within sofia's transport layer + Those settings are for advanced users and can safely be left as-is --> + + <!-- Initial retransmission interval (in milliseconds). + Set the T1 retransmission interval used by the SIP transaction engine. + The T1 is the initial duration used by request retransmission timers A and E (UDP) as well as response retransmission timer G. --> + <!-- <param name="timer-T1" value="500" /> --> + + <!-- Transaction timeout (defaults to T1 * 64). + Set the T1x64 timeout value used by the SIP transaction engine. + The T1x64 is duration used for timers B, F, H, and J (UDP) by the SIP transaction engine. + The timeout value T1x64 can be adjusted separately from the initial retransmission interval T1. --> + <!-- <param name="timer-T1X64" value="32000" /> --> + + + <!-- Maximum retransmission interval (in milliseconds). + Set the maximum retransmission interval used by the SIP transaction engine. + The T2 is the maximum duration used for the timers E (UDP) and G by the SIP transaction engine. + Note that the timer A is not capped by T2. Retransmission interval of INVITE requests grows exponentially + until the timer B fires. --> + <!-- <param name="timer-T2" value="4000" /> --> + + <!-- + Transaction lifetime (in milliseconds). + Set the lifetime for completed transactions used by the SIP transaction engine. + A completed transaction is kept around for the duration of T4 in order to catch late responses. + The T4 is the maximum duration for the messages to stay in the network and the duration of SIP timer K. --> + <!-- <param name="timer-T4" value="4000" /> --> + + <!-- Turn on a jitterbuffer for every call --> + <!-- <param name="auto-jitterbuffer-msec" value="60"/> --> + + + <!-- By default mod_sofia will ignore the codecs in the sdp for hold/unhold operations + Set this to true if you want to actually parse the sdp and re-negotiate the codec during hold/unhold. + It's probably not what you want so stick with the default unless you really need to change this. + --> + <!--<param name="renegotiate-codec-on-hold" value="true"/>--> + </settings> </profile> - diff --git a/bbb-voice-conference/config/freeswitch/conf/skinny_profiles/internal.xml b/bbb-voice-conference/config/freeswitch/conf/skinny_profiles/internal.xml new file mode 100644 index 0000000000000000000000000000000000000000..cf93f4a06504836b5ef1f3bd52666f0e96857cdd --- /dev/null +++ b/bbb-voice-conference/config/freeswitch/conf/skinny_profiles/internal.xml @@ -0,0 +1,40 @@ +<profile name="internal"> + <settings> + <param name="domain" value="$${domain}"/> + <param name="ip" value="$${local_ip_v4}"/> + <param name="port" value="2000"/> + <param name="patterns-dialplan" value="XML"/> + <param name="patterns-context" value="skinny-patterns"/> + <param name="dialplan" value="XML"/> + <param name="context" value="default"/> + <param name="keep-alive" value="60"/> + <param name="date-format" value="D/M/Y"/> + <param name="odbc-dsn" value=""/> + <param name="debug" value="4"/> + <param name="auto-restart" value="true"/> + + <!-- timeout to wait for another digit in milliseconds --> + <param name="digit-timeout" value="10000"/> + </settings> + <soft-key-set-sets> + <soft-key-set-set name="default"> + <soft-key-set name="KeySetOnHook" value="SoftkeyNewcall,SoftkeyRedial"/> + <soft-key-set name="KeySetConnected" value="SoftkeyEndcall,SoftkeyHold,SoftkeyNewcall,SoftkeyTransfer"/> + <soft-key-set name="KeySetOnHold" value="SoftkeyNewcall,SoftkeyResume,SoftkeyEndcall"/> + <soft-key-set name="KeySetRingIn" value="SoftkeyAnswer,SoftkeyEndcall,SoftkeyNewcall"/> + <soft-key-set name="KeySetOffHook" value=",SoftkeyRedial,SoftkeyEndcall"/> + <soft-key-set name="KeySetConnectedWithTransfer" value="SoftkeyEndcall,SoftkeyHold,SoftkeyNewcall,SoftkeyTransfer"/> + <soft-key-set name="KeySetDigitsAfterDialingFirstDigit" value="SoftkeyBackspace,,SoftkeyEndcall"/> + <!-- <soft-key-set name="KeySetConnectedWithConference" value=""/> --> + <soft-key-set name="KeySetRingOut" value=",,SoftkeyEndcall,SoftkeyTransfer"/> + <soft-key-set name="KeySetOffHookWithFeatures" value=",SoftkeyRedial,SoftkeyEndcall"/> + <soft-key-set name="KeySetInUseHint" value="SoftkeyNewcall,SoftkeyRedial"/> + </soft-key-set-set> + </soft-key-set-sets> + <device-types> + <device-type id="Cisco ATA 186"> + <param name="firmware-version" value="ATA030101SCCP04"/> + </device-type> + </device-types> +</profile> + diff --git a/bbb-voice-conference/config/freeswitch/conf/vars.xml b/bbb-voice-conference/config/freeswitch/conf/vars.xml index f08e84499d5732e8dbfef436445998b3f5090ef4..7590067ca373745181d95ea695d9f315bcfdc865 100644 --- a/bbb-voice-conference/config/freeswitch/conf/vars.xml +++ b/bbb-voice-conference/config/freeswitch/conf/vars.xml @@ -1,48 +1,182 @@ <include> <!-- Preprocessor Variables - These are introduced when configuration strings must be consistent across modules. + These are introduced when configuration strings must be consistent across modules. NOTICE: YOU CAN NOT COMMENT OUT AN X-PRE-PROCESS line, Remove the line instead. - - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - + + WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + YOU SHOULD CHANGE THIS default_password value if you don't want to be subject to any toll fraud in the future. It's your responsibility to secure your own system. - + This default config is used to demonstrate the feature set of FreeSWITCH. - - WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + + WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING --> <X-PRE-PROCESS cmd="set" data="default_password=1234"/> <!-- Did you change it yet? --> + <!-- + The following variables are set dynamically - calculated if possible by freeswitch - and + are available to the config as $${variable}. You can see their calculated value via fs_cli + by entering eval $${variable} + + hostname + local_ip_v4 + local_mask_v4 + local_ip_v6 + switch_serial + base_dir + recordings_dir + sound_prefix + sounds_dir + conf_dir + log_dir + run_dir + db_dir + mod_dir + htdocs_dir + script_dir + temp_dir + grammar_dir + certs_dir + storage_dir + cache_dir + core_uuid + zrtp_enabled + nat_public_addr + nat_private_addr + nat_type + + --> + <X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/en/us/callie"/> <!-- This setting is what sets the default domain FreeSWITCH will use if all else fails. - - FreeSWICH will default to $${local_ip_v4} unless changed. Changing this setting does + + FreeSWICH will default to $${local_ip_v4} unless changed. Changing this setting does affect the sip authentication. Please review conf/directory/default.xml for more information on this topic. --> + <X-PRE-PROCESS cmd="set" data="local_ip_v4=10.0.3.66"/> + <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=internal"/> - + <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"/> <!-- Enable ZRTP globally you can override this on a per channel basis - + http://wiki.freeswitch.org/wiki/ZRTP (on how to enable zrtp) --> <X-PRE-PROCESS cmd="set" data="zrtp_secure_media=true"/> + <!-- + NOTICE: When using SRTP it's critical that you do not offer or accept + variable bit rate codecs, doing so would leak information and possibly + compromise your SRTP stream. (FS-6404) + + Supported SRTP Crypto Suites: + + AEAD_AES_256_GCM_8 + ____________________________________________________________________________ + This algorithm is identical to AEAD_AES_256_GCM (see Section 5.2 of + [RFC5116]), except that the tag length, t, is 8, and an + authentication tag with a length of 8 octets (64 bits) is used. + An AEAD_AES_256_GCM_8 ciphertext is exactly 8 octets longer than its + corresponding plaintext. + + + AEAD_AES_128_GCM_8 + ____________________________________________________________________________ + This algorithm is identical to AEAD_AES_128_GCM (see Section 5.1 of + [RFC5116]), except that the tag length, t, is 8, and an + authentication tag with a length of 8 octets (64 bits) is used. + An AEAD_AES_128_GCM_8 ciphertext is exactly 8 octets longer than its + corresponding plaintext. + + + AES_CM_256_HMAC_SHA1_80 | AES_CM_192_HMAC_SHA1_80 | AES_CM_128_HMAC_SHA1_80 + ____________________________________________________________________________ + AES_CM_128_HMAC_SHA1_80 is the SRTP default AES Counter Mode cipher + and HMAC-SHA1 message authentication with an 80-bit authentication + tag. The master-key length is 128 bits and has a default lifetime of + a maximum of 2^48 SRTP packets or 2^31 SRTCP packets, whichever comes + first. + + + AES_CM_256_HMAC_SHA1_32 | AES_CM_192_HMAC_SHA1_32 | AES_CM_128_HMAC_SHA1_32 + ____________________________________________________________________________ + This crypto-suite is identical to AES_CM_128_HMAC_SHA1_80 except that + the authentication tag is 32 bits. The length of the base64-decoded key and + salt value for this crypto-suite MUST be 30 octets i.e., 240 bits; otherwise, + the crypto attribute is considered invalid. + + + AES_CM_128_NULL_AUTH + ____________________________________________________________________________ + The SRTP default cipher (AES-128 Counter Mode), but to use no authentication + method. This policy is NOT RECOMMENDED unless it is unavoidable; see + Section 7.5 of [RFC3711]. + + + SRTP variables that modify behaviors based on direction/leg: + + rtp_secure_media + ____________________________________________________________________________ + possible values: + mandatory - Accept/Offer SAVP negotiation ONLY + optional - Accept/Offer SAVP/AVP with SAVP preferred + forbidden - More useful for inbound to deny SAVP negotiation + false - implies forbidden + true - implies mandatory + + default if not set is accept SAVP inbound if offered. + + + rtp_secure_media_inbound | rtp_secure_media_outbound + ____________________________________________________________________________ + This is the same as rtp_secure_media, but would apply to either inbound + or outbound offers specifically. + + + How to specify crypto suites: + ____________________________________________________________________________ + By default without specifying any crypto suites FreeSWITCH will offer + crypto suites from strongest to weakest accepting the strongest each + endpoint has in common. If you wish to force specific crypto suites you + can do so by appending the suites in a comma separated list in the order + that you wish to offer them in. + + Examples: + + rtp_secure_media=mandatory:AES_CM_256_HMAC_SHA1_80,AES_CM_256_HMAC_SHA1_32 + rtp_secure_media=true:AES_CM_256_HMAC_SHA1_80,AES_CM_256_HMAC_SHA1_32 + rtp_secure_media=optional:AES_CM_256_HMAC_SHA1_80 + rtp_secure_media=true:AES_CM_256_HMAC_SHA1_80 + + Additionally you can narrow this down on either inbound or outbound by + specifying as so: + + rtp_secure_media_inbound=true:AEAD_AES_256_GCM_8 + rtp_secure_media_inbound=mandatory:AEAD_AES_256_GCM_8 + rtp_secure_media_outbound=true:AEAD_AES_128_GCM_8 + rtp_secure_media_outbound=optional:AEAD_AES_128_GCM_8 - <!-- + + rtp_secure_media_suites + ____________________________________________________________________________ + Optionaly you can use rtp_secure_media_suites to dictate the suite list + and only use rtp_secure_media=[optional|mandatory|false|true] without having + to dictate the suite list with the rtp_secure_media* variables. + --> + <!-- Examples of codec options: (module must be compiled and loaded) - + codecname[@8000h|16000h|32000h[@XXi]] - + XX is the frame size must be multples allowed for the codec - FreeSWITCH can support 10-120ms on some codecs. + FreeSWITCH can support 10-120ms on some codecs. We do not support exceeding the MTU of the RTP packet. @@ -72,21 +206,21 @@ AAL2-G726-40 - Same as G726-40 but using AAL2 packing. (multiples of 10) LPC - LPC10 using 90ms ptime (only supports 90ms at this time in FreeSWITCH) L16 - L16 isn't recommended for VoIP but you can do it. L16 can exceed the MTU rather quickly. - + These are the passthru audio codecs: - + G729 - G729 in passthru mode. (mod_g729) G723 - G723.1 in passthru mode. (mod_g723_1) AMR - AMR in passthru mode. (mod_amr) - + These are the passthru video codecs: (mod_h26x) - + H261 - H.261 Video H263 - H.263 Video H263-1998 - H.263-1998 Video H263-2000 - H.263-2000 Video H264 - H.264 Video - + RTP Dynamic Payload Numbers currently used in FreeSWITCH and what for. 96 - AMR @@ -96,9 +230,9 @@ 100 - 101 - telephone-event 102 - - 103 - - 104 - - 105 - + 103 - + 104 - + 105 - 106 - BV16 107 - G722.1 (16kHz) 108 - @@ -118,35 +252,30 @@ 122 - AAL2-G726-32 && G726-32 123 - AAL2-G726-24 && G726-24 124 - AAL2-G726-16 && G726-16 - 125 - + 125 - 126 - 127 - BV32 --> - - <X-PRE-PROCESS cmd="set" data="global_codec_prefs=speex@16000h@20i,speex@8000h@20i,G7221@32000h,G7221@16000h,G722,PCMU,PCMA,GSM" /> - <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=speex@16000h@20i,PCMU,PCMA,GSM" /> - <!-- BigBlueButton: To use mlaw , change the above two lines with data set to these values. - data="global_codec_prefs=PCMU,G722,PCMA,GSM" - data="outbound_codec_prefs=PCMU,G722,PCMA,GSM" - --> + <X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,speex@16000h@20i,speex@8000h@20i,G722,PCMU,PCMA"/> + <X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,speex@16000h@20i,G722,PCMU,PCMA"/> <!-- xmpp_client_profile and xmpp_server_profile - xmpp_client_profile can be any string. + xmpp_client_profile can be any string. xmpp_server_profile is appended to "dingaling_" to form the database name containing the "subscriptions" table. - used by: dingaling.conf.xml enum.conf.xml - --> + used by: dingaling.conf.xml enum.conf.xml + --> <X-PRE-PROCESS cmd="set" data="xmpp_client_profile=xmppc"/> <X-PRE-PROCESS cmd="set" data="xmpp_server_profile=xmpps"/> - <!-- + <!-- THIS IS ONLY USED FOR DINGALING bind_server_ip - Can be an ip address, a dns name, or "auto". + Can be an ip address, a dns name, or "auto". This determines an ip address available on this host to bind. If you are separating RTP and SIP traffic, you will want to have use different addresses where this variable appears. @@ -155,7 +284,7 @@ <X-PRE-PROCESS cmd="set" data="bind_server_ip=auto"/> <!-- NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE - + If you're going to load test FreeSWITCH please input real IP addresses for external_rtp_ip and external_sip_ip --> @@ -170,7 +299,7 @@ If unspecified, the bind_server_ip value is used. Used by: sofia.conf.xml dingaling.conf.xml --> - <X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:stun.freeswitch.org"/> + <X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:stun.l.google.com:19302"/> <!-- external_sip_ip Used as the public IP address for SDP. @@ -183,11 +312,11 @@ If unspecified, the bind_server_ip value is used. Used by: sofia.conf.xml dingaling.conf.xml --> - <X-PRE-PROCESS cmd="set" data="external_sip_ip=stun:stun.freeswitch.org"/> + <X-PRE-PROCESS cmd="set" data="external_sip_ip=stun:stun.l.google.com:19302"/> <!-- unroll-loops Used to turn on sip loopback unrolling. - --> + --> <X-PRE-PROCESS cmd="set" data="unroll_loops=true"/> <!-- outbound_caller_id and outbound_caller_name @@ -204,17 +333,61 @@ <X-PRE-PROCESS cmd="set" data="default_areacode=918"/> <X-PRE-PROCESS cmd="set" data="default_country=US"/> - <X-PRE-PROCESS cmd="set" data="uk-ring=%(400,200,400,450);%(400,2200,400,450)"/> - <X-PRE-PROCESS cmd="set" data="us-ring=%(2000,4000,440.0,480.0)"/> - <X-PRE-PROCESS cmd="set" data="fr-ring=%(1500,3500,440.0,0.0)"/> - <X-PRE-PROCESS cmd="set" data="rs-ring=%(1000,4000,425.0,0.0)"/> - <X-PRE-PROCESS cmd="set" data="ru-ring=%(800,3200,425,0)"/> + <!-- if false or undefined, the destination number is included in presence NOTIFY dm:note. + if true, the destination number is not included --> + <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)"/> + + <!-- + Digits Dialed filter: (FS-6940) + + The digits stream may contain valid credit card numbers or social security numbers, These digit + filters will allow you to make a valant effort to stamp out sensitive information for + PCI/HIPPA compliance. (see xml_cdr dialed_digits) + + df_us_ssn = US Social Security Number pattern + df_us_luhn = Visa, MasterCard, American Express, Diners Club, Discover and JCB + --> + <X-PRE-PROCESS cmd="set" data="df_us_ssn=(?!219099999|078051120)(?!666|000|9\d{2})\d{3}(?!00)\d{2}(?!0{4})\d{4}"/> + <X-PRE-PROCESS cmd="set" data="df_luhn=?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|6(?:011|5[0-9]{2})[0-9]{12}|(?:2131|1800|35\d{3})\d{11}"/> + <!-- change XX to X below to enable --> + <XX-PRE-PROCESS cmd="set" data="digits_dialed_filter=(($${df_luhn})|($${df_us_ssn}))"/> + <!-- Setting up your default sip provider is easy. Below are some values that should work in most cases. - + These are for conf/directory/default/example.com.xml --> <X-PRE-PROCESS cmd="set" data="default_provider=example.com"/> @@ -226,21 +399,52 @@ <X-PRE-PROCESS cmd="set" data="default_provider_contact=5000"/> <!-- - SIP and TLS settings. http://wiki.freeswitch.org/wiki/Tls + SIP and TLS settings. http://wiki.freeswitch.org/wiki/Tls + + valid options: sslv2,sslv3,sslv23,tlsv1,tlsv1.1,tlsv1.2 + + default: tlsv1,tlsv1.1,tlsv1.2 + --> + <X-PRE-PROCESS cmd="set" data="sip_tls_version=tlsv1,tlsv1.1,tlsv1.2"/> + + <!-- + TLS cipher suite: default ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH + + The actual ciphers supported will change per platform. + + openssl ciphers -v 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH' + + Will show you what is available in your verion of openssl. --> - <X-PRE-PROCESS cmd="set" data="sip_tls_version=tlsv1"/> + <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=5090"/> <X-PRE-PROCESS cmd="set" data="internal_tls_port=5061"/> <X-PRE-PROCESS cmd="set" data="internal_ssl_enable=false"/> - <X-PRE-PROCESS cmd="set" data="internal_ssl_dir=$${base_dir}/conf/ssl"/> <!-- External SIP Profile --> <X-PRE-PROCESS cmd="set" data="external_auth_calls=false"/> <X-PRE-PROCESS cmd="set" data="external_sip_port=5060"/> <X-PRE-PROCESS cmd="set" data="external_tls_port=5081"/> <X-PRE-PROCESS cmd="set" data="external_ssl_enable=false"/> - <X-PRE-PROCESS cmd="set" data="external_ssl_dir=$${base_dir}/conf/ssl"/> + + <!-- Video Settings --> + <!-- 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 --> + + <!-- 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> + diff --git a/bbb-voice-conference/config/freeswitch/conf/voicemail.tpl b/bbb-voice-conference/config/freeswitch/conf/voicemail.tpl index aede2b8f08a909a9dba808a8cfb012f4a61be236..782607778d888277d00ca49a0342d77603de66ea 100644 --- a/bbb-voice-conference/config/freeswitch/conf/voicemail.tpl +++ b/bbb-voice-conference/config/freeswitch/conf/voicemail.tpl @@ -1,5 +1,6 @@ From: "${voicemail_caller_id_name}" <${voicemail_caller_id_number}@${voicemail_domain}> -To: <${voicemail_email}> +Date: ${RFC2822_DATE} +To: ${voicemail_email} Subject: Voicemail from "${voicemail_caller_id_name}" <${voicemail_caller_id_number}> ${voicemail_message_len} X-Priority: ${voicemail_priority} X-Mailer: FreeSWITCH @@ -36,6 +37,7 @@ Content-Transfer-Encoding: 7bit Created: ${voicemail_time}<br> Duration: ${voicemail_message_len}<br> Account: ${voicemail_account}@${voicemail_domain}<br> +</font> </body> </html>