Telephone system:FreeSWITCH tricks
This page provides a couple of tricks to ease working and debugging with FreeSWITCH
Contents
config snippets
dial by incoming domain
Typically, FreeSWITCH only looks at the destination number, so 1200@ackspace.nl
is treated the same as 1200@illegaleshow.nl
.
This snippet routes all calls destined to either the illegaleshow.nl domain or the illegaleshow extension to 1200 in its own dialplan.
Note that there aren't many sip_to_host examples on the net (or the alternative sip_req_host for that matter)
<extension name="Illegale show"> <condition regex="any"> <!-- sip_req_host --> <regex field="${sip_to_host}" expression="illegaleshow.nl"/> <regex field="destination_number" expression="^illegaleshow$"/> <action application="set" data="domain_name=illegaleshow.nl"/> <action application="transfer" data="1200 XML illegaleshow"/> </condition> </extension>
dial-string for Skinny and SIP
TODO: SCCP..
command line examples
You can run command line commands either as fs_cli -x "COMMAND"
or by running the command line interface fs_cli
and typing the COMMAND there
user_exists and user_data
Note that directory users have an id
and optionally, a number-alias
. Both can be used to register and check if it exists in the directory.
Typical for desk phones:
user_exists id 100 ackspace.nl
- true
Typical for soft-phones (SIP client):
user_exists id ackspace ackspace.nl
- true
Number from name or number
user_data 100@ackspace.nl attr number-alias
anduser_data ackspace@ackspace.nl attr number-alias
- 100
Name from name or number
user_data 100@ackspace.nl attr id
anduser_data ackspace@ackspace.nl attr id
- ackspace
dial-string and sofia_contact
There is a user/
endpoint that uses the user's (or more regularly, the directory domain's) dial-string value to lookup the dial string address of the dialed user. This string usually contains the sofia_contact
command:
sofia_contact ackspace@ackspace.nl
- sofia/external/sip:ackspace@123.456.789.0:9876;transport=udp;user=phone;fs_nat=yes
Note: the contact URI only works on the registered user (use a number instead of a name if the user registered numerically; it happens, see Fritz!Box)