this is what my gateway look like:
<gateways>
<gateway name="whatever">
<param name="username" value="1001"/>
<param name="realm" value="THE REALM AGAINST UPON WHICH THE HASH WILL BE BUILT"/>
<param name="password" value="password"/>
<param name="extension" value="auto_to_user"/>
<param name="context" value="public"/>
<param name="proxy" value="IP ADDRESS OR DOMAIN"/>
<param name="register" value="true"/>
<param name="register-transport" value="tcp (or udp)"/>
<param name="retry-seconds" value="15"/>
</gateway>
</gateways>
This should work... If you get Not Found, try looking at your server's log.
you also should create an outgoing gateway, even if you're not registering, like:
assuming the outgoing gateway will not auth-challenge you:
<gateway name="outgoing_gw">
<param name="username" value="none"/>
<param name="realm" value="whatever"/>
<param name="password" value="none"/>
<param name="context" value="public"/>
<param name="proxy" value="IP ADDRESS OR DOMAIN"/>
<param name="register" value="false"/>
<param name="register-transport" value="tcp (or udp)"/>
<param name="retry-seconds" value="15"/>
</gateway>
Adding it to the external is a good idea, so the final config will be:
<gateways>
<gateway name="whatever">
<param name="username" value="1001"/>
<param name="realm" value="THE REALM AGAINST UPON WHICH THE HASH WILL BE BUILT"/>
<param name="password" value="password"/>
<param name="extension" value="auto_to_user"/>
<param name="context" value="public"/>
<param name="proxy" value="IP ADDRESS OR DOMAIN"/>
<param name="register" value="true"/>
<param name="register-transport" value="tcp (or udp)"/>
<param name="retry-seconds" value="15"/>
</gateway>
<gateway name="outgoing_gw">
<param name="username" value="does_not_matter_will_not_be used_but_must_be_set"/>
<param name="realm" value="SAME AS PROXY"/>
<param name="password" value="does_not_matter_will_not_be used_but_must_be_set"/>
<param name="context" value="public"/>
<param name="proxy" value="IP ADDRESS OR DOMAIN"/>
<param name="register" value="false"/>
<param name="register-transport" value="tcp (or udp)"/>
<param name="retry-seconds" value="15"/>
</gateway>
</gateways>
Once this is working and you see it REGED, calls will be coming in (as per "context") on the public dialplan... the you just need to bridge it like:
<extension name="forward call">
<condition field="destination_number" expression="^(whatever your regexp is)$">
<action application="info"/>
<action application="bridge" data="sofia/gateway/outgoing_gw/$1"/>
<action application="hangup"/>
</condition>
</extension>
I hope I was able to help..
Enjoy freeSWITCH, it's fantastic!
David