<?xml version="1.0" encoding="utf-8"?>
<include>

	<context name="from-voip">
		<extension name="to-pstn">

		<!-- retrieve group and hunting parameters if present -->
		<condition field="destination_number" expression="([0-9a-zA-Z]+)(-g=[a-zA-Z0-9]+)?(-h=[a|A])?(-fax)?" break="never">
			<action inline="true" application="set" data="group=$2"/>
			<action inline="true" application="set" data="hunting=$3"/>
			<action inline="true" application="set" data="faxcall=$4"/>
		</condition>

		<!-- check if there is a group and set a default if not present -->
		<condition field="${group}" expression="^-g=([a-zA-Z0-9]+)$" break="never">
			<action application="set" data="group=$1"/>
			<anti-action application="set" data="group=$${pstn_default_group}"/>
		</condition>

		<!-- check if there is a hunting policy and set a default if not present -->
		<condition field="${hunting}" expression="^-h=([a|A])$" break="never">
			<action application="set" data="hunting=$1"/>
			<anti-action application="set" data="hunting=${pstn_default_hunting}"/>
		</condition>

		<!-- Do the actual pstn dialing -->
		<condition field="destination_number" expression="^([0-9a-zA-Z]+)">

			<action application="set" data="hangup_after_bridge=yes" /> 
			<action application="answer" /> 
			<action application="export" data="nolocal:tone_detect_hits=1" /> 
			<action application="set" data="fax_enable_t38_request=true" /> 
			<action application="set" data="fax_enable_t38=true" /> 
            		<action application="export" data="nolocal:execute_on_answer_1=tone_detect fax_disable_ec 2100 r +5000 disable_ec 1" />
            		<action application="export" data="nolocal:execute_on_answer_2=t38_gateway peer ced_preamble" />

			<action application="set" data="hangup_after_bridge=yes"/>
			<action application="bridge" data="freetdm/${group}/${hunting}/$1"/>
			<action application="hangup" data="${originate_disposition}"/>
		</condition>
	</extension>
</context>

<context name="from-pstn-to-sip">
        <extension name="to-sip">
                <!-- handle the case where there might not be destination number at all -->
                <condition field="destination_number" expression="^(.{1,})$" break="never">
                        <action application="set" data="destnumber=$1"/>
                        <anti-action application="set" data="destnumber=unknown"/>
                </condition>
                
                <!-- Dial to the gateway user (it may ring multiple registrations, first answer wins) -->
                <condition field="destination_number" expression="^(.*)$">
                        <action application="set" data="hangup_after_bridge=yes" />
                        <action application="set" data="tone_detect_hits=1" />
                        <action application="export" data="fax_enable_t38_request=true" />
                        <action application="export" data="fax_enable_t38=true" />
                        <action application="tone_detect" data="faxdisable 1100 r +5000 disable_ec 1"/>
                        <action application="export" data="execute_on_answer=tone_detect fax_disable_ec 2100 r +5000 t38_gateway 'self nocng'" />
                        <action application="set" data="sip_contact_user_replacement=${destnumber}"/>
                        <action application="set" data="hangup_after_bridge=yes"/>
			<!-- <action application="bridge" data="sofia/internal/${destnumber}@${sip_remote_ip}:${sip_remote_port}"/>-->
                        <action application="bridge" data="${sofia_contact($${gwuser}@$${domain})}"/>
                        <action application="hangup" data="${originate_disposition}"/>

                </condition>
        </extension>
</context>

<context name="from-pstn-to-h323">
        <extension name="to-h323">
                <!-- handle the case where there might not be destination number at all -->
                <condition field="destination_number" expression="^(.{1,})$" break="never">
                        <action application="set" data="destnumber=$1"/>
                        <anti-action application="set" data="destnumber=unknown"/>
                </condition>

                <!-- Dial to the gateway user (it may ring multiple registrations, first answer wins) -->
                <condition field="destination_number" expression="^(.*)$">
                        <action application="set" data="hangup_after_bridge=yes" />
                        <action application="set" data="tone_detect_hits=1" />
                        <action application="export" data="fax_enable_t38_request=true" />
                        <action application="export" data="fax_enable_t38=true" />
                        <action application="tone_detect" data="faxdisable 1100 r +5000 disable_ec 1"/>
                        <action application="export" data="execute_on_answer=tone_detect fax_disable_ec 2100 r +5000 t38_gateway 'self nocng'" />
                        <action application="set" data="sip_contact_user_replacement=${destnumber}"/>
                        <action application="set" data="hangup_after_bridge=yes"/>
                        <action application="bridge" data="opal/h323:${destination_number}@${h323_remote_ip}"/>
                        <action application="hangup" data="${originate_disposition}"/>
                </condition>
        </extension>
</context>

</include>

