<configuration name="rayo.conf" description="Rayo server config">

	<!-- rayo params -->
	<settings>
		<param name="max-idle-sec" value="300"/>
		<param name="mixer-conf-profile" value="sla"/>
	</settings>

	<!-- record component params -->
	<record>
		<param name="record-file-prefix" value="$${recordings_dir}/"/>
	</record>

	<!-- input component params -->
	<input>
		<param name="default-recognizer" value="pocketsphinx"/>
	</input>

	<!-- send/receivefax component params -->
	<fax>
		<!-- where to store incoming faxes -->
		<param name="receivefax-file-prefix" value="/tmp/"/>
	</fax>

	<!-- Call progress analysis configuration -->
	<!-- Define CPA detectors.  These are sources for Rayo CPA signal events -->
	<!-- Detectors must fire an event that can be translated by mod_rayo into a CPA signal event -->
	<cpa>
		<!-- map mod_spandsp fax detector to the Rayo CPA events. Fires DETECTED_FAX_* event once and quits. -->
		<detector name="mod_spandsp_fax_ced">
			<start application="spandsp_start_fax_detect" data="event 'Event-Name=CUSTOM,Event-Subclass=DETECTED_FAX_CED' 500 ced"/>
			<stop application="spandsp_stop_fax_detect" data=""/>
			<event class="CUSTOM" subclass="DETECTED_FAX_CED">
				<signal-type value="fax-ced"/>
			</event>
		</detector>

		<detector name="mod_spandsp_fax_cng">
			<start application="spandsp_start_fax_detect" data="event 'Event-Name=CUSTOM,Event-Subclass=DETECTED_FAX_CNG' 500"/>
			<stop application="spandsp_stop_fax_detect" data=""/>
			<event class="CUSTOM" subclass="DETECTED_FAX_CNG">
				<signal-type value="fax-cng"/>
			</event>
		</detector>

		<!-- map mod_spandsp call progress tone detector to Rayo CPA signal events.  Fires DETECTED_TONE events until stopped. -->
		<detector name="mod_spandsp_tone">
			<start application="start_tone_detect" data="1"/>
			<stop application="stop_tone_detect" data=""/>
			<!-- map tone events to Rayo CPA signal type -->
			<event class="CUSTOM" subclass="DETECTED_TONE" type-header="Detected-Tone">
				<signal-type header-value="SIT" value="sit"/>
				<signal-type header-value="BUSY_TONE" value="busy"/>
				<signal-type header-value="REORDER_TONE" value="congestion"/>
				<signal-type header-value="RING_TONE" value="ring"/>
			</event>
		</detector>

		<!-- map mod_avmd detector to Rayo CPA beep event.  Fires avmd::beep event once. -->
		<detector name="mod_avmd">
			<start application="avmd" data=""/>
			<stop application="avmd" data="stop"/>
			<event class="CUSTOM" subclass="avmd::beep">
				<signal-type value="beep"/>
			</event>
		</detector>

		<!-- Alternative beep detector using mod_vmd.  Fires vmd::beep events until stopped. -->
		<!--detector name="mod_vmd">
			<start application="vmd" data=""/>
			<stop application="vmd" data="stop"/>
			<event class="CUSTOM" subclass="vmd::beep">
				<signal-type value="beep"/>
			</event>
		</detector-->
	</cpa>

	<!-- XMPP server domain -->
	<domain name="$${rayo_domain_name}" shared-secret="ClueCon">
	<!-- use this instead if you want secure XMPP client to server connections.  Put .crt and .key file in freeswitch/certs -->
	<!--domain name="$${rayo_domain_name}" shared-secret="ClueCon" cert="$${base_dir}/certs/$${rayo_domain_name}.crt" key="$${base_dir}/certs/$${rayo_domain_name}.key"-->

		<!-- Listeners for new Rayo client connections -->
		<!--listen type="c2s" port="5222" address="$${local_ip_v4}" acl="rayo-clients"/-->
		<listen type="c2s" port="5222" address="$${rayo_ip}" acl=""/>

		<!-- Listeners for new server connections -->
		<!--listen type="s2s" port="5269" address="$${local_ip_v4}" acl="rayo-servers"/-->

		<!-- servers to connect to -->
		<!--connect port="5269" address="node.example.com" domain="example.com"/-->

		<!-- Authorized users -->
		<users>
			<user name="usera" password="1"/>
		</users>
	</domain>

	<!-- URI mapping to endpoint / gateway -->
	<dial-gateways>
		<dial-gateway uriprefix="default" dialprefix="sofia/gateway/outbound/" strip="0"/>
		<dial-gateway uriprefix="sip:" dialprefix="sofia/external/" strip="0"/>
		<dial-gateway uriprefix="tel:" dialprefix="sofia/gateway/outbound/" strip="4"/>
		<!-- pass through user and sofia unaltered -->
		<dial-gateway uriprefix="user/" dialprefix="" strip=""/>
		<dial-gateway uriprefix="sofia/" dialprefix="" strip=""/>
		<dial-gateway uriprefix="loopback/" dialprefix="" strip=""/>
	</dial-gateways>

	<!-- IQ request aliases.  Used mainly for testing purposes or for controlling a rayo call via the console -->
	<aliases>
		<alias name="ping" target="external"><![CDATA[<iq type="get"><ping xmlns="urn:xmpp:ping"/></iq>]]></alias>
		<alias name="dial" target="server" args="2"><![CDATA[<dial xmlns="urn:xmpp:rayo:1" from="$1" to="$2"/>]]></alias>
		<alias name="answer" target="call"><![CDATA[<answer xmlns="urn:xmpp:rayo:1"/>]]></alias>
		<alias name="hangup" target="call"><![CDATA[<hangup xmlns="urn:xmpp:rayo:1"/>]]></alias>
		<alias name="join" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" call-uri="xmpp:$1"/>]]></alias>
		<alias name="join_mixer_duplex" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="duplex"/>]]></alias>
		<alias name="join_mixer_send" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="send"/>]]></alias>
		<alias name="join_mixer_recv" target="call" args="1"><![CDATA[<join xmlns="urn:xmpp:rayo:1" mixer-name="$1" direction="recv"/>]]></alias>
		<alias name="unjoin_mixer" target="call" args="1"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1" mixer-name="$1"/>]]></alias>
		<alias name="unjoin" target="call"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1"/>]]></alias>
		<alias name="unjoin_call" target="call" args="1"><![CDATA[<unjoin xmlns="urn:xmpp:rayo:1" call-uri="xmpp:$1"/>]]></alias>
		<alias name="stop" target="component"><![CDATA[<stop xmlns="urn:xmpp:rayo:ext:1"/>]]></alias>
		<alias name="output_bad" target="call"><![CDATA[<output xmlns="urn:xmpp:rayo:output:1" repeat-time="100"></output>]]></alias>
		<alias name="pause" target="output"><![CDATA[<pause xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
		<alias name="resume" target="output"><![CDATA[<resume xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
		<alias name="speed-up" target="output"><![CDATA[<speed-up xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
		<alias name="speed-down" target="output"><![CDATA[<speed-down xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
		<alias name="volume-up" target="output"><![CDATA[<volume-up xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
		<alias name="volume-down" target="output"><![CDATA[<volume-down xmlns="urn:xmpp:rayo:output:1"/>]]></alias>
		<alias name="receivefax" target="call"><![CDATA[<receivefax xmlns="urn:xmpp:rayo:fax:1"/>]]></alias>
		<alias name="sendfax" target="call" args="1"><![CDATA[<sendfax xmlns="urn:xmpp:rayo:fax:1"><document xmlns="urn:xmpp:rayo:fax:1" url="$1"/></sendfax>]]></alias>
		<alias name="record" target="call"><![CDATA[<record xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
		<alias name="record_pause" target="record"><![CDATA[<pause xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
		<alias name="record_resume" target="record"><![CDATA[<resume xmlns="urn:xmpp:rayo:record:1"/>]]></alias>
		<alias name="prompt_barge" target="call">
			<![CDATA[
				<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
					<output xmlns="urn:xmpp:rayo:output:1" repeat-times="5">
						<document content-type="application/ssml+xml">
							<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
						</document>
					</output>
					<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
						<grammar content-type="application/srgs+xml">
							<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
						</grammar>
					</input>
				</prompt>
			]]>
		</alias>
		<alias name="prompt_no_barge" target="call">
			<![CDATA[
				<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="false">
					<output xmlns="urn:xmpp:rayo:output:1" repeat-times="5">
						<document content-type="application/ssml+xml">
							<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
						</document>
					</output>
					<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
						<grammar content-type="application/srgs+xml">
							<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
						</grammar>
					</input>
				</prompt>
			]]>
		</alias>
		<alias name="prompt_long" target="call">
			<![CDATA[
				<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
					<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
						<document content-type="application/ssml+xml">
							<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
						</document>
					</output>
					<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
						<grammar content-type="application/srgs+xml">
							<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
						</grammar>
					</input>
				</prompt>
			]]>
		</alias>
		<alias name="prompt_multi_digit" target="call">
			<![CDATA[
				<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
					<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
						<document content-type="application/ssml+xml">
							<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
						</document>
					</output>
					<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
						<grammar content-type="application/srgs+xml">
							<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
						</grammar>
					</input>
				</prompt>
			]]>
		</alias>
		<alias name="prompt_terminator" target="call">
			<![CDATA[
				<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
					<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
						<document content-type="application/ssml+xml">
							<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
						</document>
					</output>
					<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
						<grammar content-type="application/srgs+xml">
							<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
						</grammar>
					</input>
				</prompt>
			]]>
		</alias>
		<alias name="prompt_input_bad" target="call">
			<![CDATA[
				<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
					<output xmlns="urn:xmpp:rayo:output:1" repeat-times="100">
						<document content-type="application/ssml+xml">
							<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
						</document>
					</output>
					<input xmlns="urn:xmpp:rayo:input:1" mode="dtf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
						<grammar content-type="application/srgs+xml">
							<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
						</grammar>
					</input>
				</prompt>
			]]>
		</alias>
		<alias name="prompt_output_bad" target="call">
			<![CDATA[
				<prompt xmlns="urn:xmpp:rayo:prompt:1" barge-in="true">
					<output xmlns="urn:xmpp:rayo:output:1" repeat-time="100">
						<document content-type="application/ssml+xml">
							<![CDATA[<speak><p>Please press a digit.</p></speak>]]]]><![CDATA[>
						</document>
					</output>
					<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000" terminator="#">
						<grammar content-type="application/srgs+xml">
							<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><item repeat="1-4"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></item></rule></grammar>]]]]><![CDATA[>
						</grammar>
					</input>
				</prompt>
			]]>
		</alias>
		<alias name="input" target="call">
			<![CDATA[
				<input xmlns="urn:xmpp:rayo:input:1" mode="dtmf" initial-timeout="5000" inter-digit-timeout="3000">
					<grammar content-type="application/srgs+xml">
						<![CDATA[<grammar mode="dtmf"><rule id="digit" scope="public"><one-of><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item></one-of></rule></grammar>]]]]><![CDATA[>
					</grammar>
				</input>
			]]>
		</alias>
		<alias name="input_voice_yesno_unimrcp" target="call">
			<![CDATA[
				<input xmlns="urn:xmpp:rayo:input:1" mode="voice" recognizer="unimrcp">
					<grammar content-type="application/srgs+xml>
					<![CDATA[
						<grammar xmlns="http://www.w3.org/2001/06/grammar"
							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
							xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
							xml:lang="en-US" version="1.0">
								<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
					]]]]><![CDATA[>
					</grammar>
				</input>
			]]>
		</alias>
		<alias name="input_voice_yesno_unimrcp_timeout" target="call">
			<![CDATA[
				<input xmlns="urn:xmpp:rayo:input:1" mode="voice" recognizer="unimrcp" max-silence="5000" initial-timeout="5000">
					<grammar content-type="application/srgs+xml>
					<![CDATA[
						<grammar xmlns="http://www.w3.org/2001/06/grammar"
							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
							xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
							xml:lang="en-US" version="1.0">
								<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
					]]]]><![CDATA[>
					</grammar>
				</input>
			]]>
		</alias>

		<alias name="input_voice_yesno_pocketsphinx" target="call">
			<![CDATA[
				<input xmlns="urn:xmpp:rayo:input:1" mode="voice" recognizer="pocketsphinx" max-silence="5000" initial-timeout="5000">
					<grammar content-type="application/srgs+xml>
					<![CDATA[
						<grammar xmlns="http://www.w3.org/2001/06/grammar"
							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
							xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
							xml:lang="en-US" version="1.0">
								<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
					]]]]><![CDATA[>
					</grammar>
				</input>
			]]>
		</alias>

		<alias name="input_voice_yesno_default" target="call">
			<![CDATA[
				<input xmlns="urn:xmpp:rayo:input:1" mode="voice" max-silence="5000" initial-timeout="5000">
					<grammar content-type="application/srgs+xml>
					<![CDATA[
						<grammar xmlns="http://www.w3.org/2001/06/grammar"
							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
							xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"
							xml:lang="en-US" version="1.0">
								<rule id="yesno"><one-of><item>yes</item><item>no</item></one-of></rule></grammar>
					]]]]><![CDATA[>
					</grammar>
				</input>
			]]>
		</alias>

	</aliases>

</configuration>