[Freeswitch-users] Free Switch Guidence

Amon Ghupta aghupta at gmail.com
Fri Sep 1 15:26:13 PDT 2006

imfanee at yahoo.co.uk wrote:

> Dear Sir,
> I need a little of you guide…
> I have installed freeswitch under windows. Now for make a simple call
> what I have to do. Tell me in simple as I don’t know any thing about
> freeswitch and to make a H323 to IAX call what I have to do.
> I have visited the IRC channel also documentation but still I cant
> understand.
> I ll b thankfull for your help.
> Fanee
Have you looked at the dial plan?
And the JavaScript modules
http://www.voip-info.org/wiki/view/FreeSwitch+Javascript+Session ?
Async Test

new_session = new Session("", "exosip", "888 at");

for(x = 0; x < 3; x++) {
    if(new_session.ready) {
	console_log("hello " + new_session.state + "\n");
	new_session.speak("cepstral", "david", "Hello I am a prank caller generated from javascript, boo");
	console_log("hello " + new_session.state + "\n");
console_log("bye " + new_session.state + "\n");
Call Test
new_session = new Session(session, "exosip", "888 at");
bridge(session, new_session);
session = new Session("", "exosip", "888 at");
session2 = new Session(session, "exosip", "3920 at");
bridge(session, session2, 60000);

//jsrun outtest.js


The Definitive Guide To XML Dialplan:

The "dialplan" section of the freeswitch.xml meta document may contain
several contexts

<?xml version="1.0"?>
<document type="freeswitch/xml">
<section name="dialplan" description="Regex/XML Dialplan">
<!-- the default context is a safe start -->
<context name="default">

<!-- one or more extension tags -->


<!-- more optional contexts -->

The important thing to remember is that the dialplan is parsed once when
the call hits the dialplan parser in the RING state. With one pass
across the XML the result will be a complete list of instructions
installed into the channel based on parsed <action> or <anti-action> tags.

Those accustomed to Asterisk may expect the call to follow the dialplan
by executing the applications as it parses them allowing data obtained
from one action to influence the next action.
This not the case with the exception being the %{api func} {api arg}
field type where an pluggable api call from a module may be executed as
the parsing occurs but this is meant to be used to draw realtime info
such as date and time or other quickly accessible information and shold
*not* be abused.

The anatomy of an <extension> tag.

Text wrapped in [] indicates optional and is not part of the actual code.
a '|' inside [] indicates mutiple possible values and also is not part
of the code.
Text wrapped in {} indicates it's a description of the parameter in
place of the param itself.

<extension name="{exten_name}" [continue="[true|false]"]>

continue=true means even if an extension executes to continue
parsing the next extension too

The {exten_name} above may anything but if it's
an exact match with the destination number the parser will leap to this
to begin the searching that does not mean it will execute the extension.

Searching will either begin at the first extension in the context or at
the point
the the parser has jumped to in the case described above.

Each condition is parsed in turn first taking the 'field' param.
The parser will apply the perl regular expression to each 'field' param

If the expression matches, it will parse each existing <action> tag in
turn and add
the data from the <application> tags to the channels todo list.

If a matched expression contains any data wrapped in () the variables
$1,$2..$N will be valid and expanded in any of 'data' params from the
subsequent action tags.

If the expression does NOT match, it will parse each <anti-action> tag
in turn and add
the data from the <application> tags to the channels todo list.

    * NOTE* since there was no match the () feature is not availabe in

The 'break' param indicates how to behave in relation to matching:

    * ) 'on-true' - stop searching conditions after the first successful
    * ) 'on-false' - stop searching after the first unsuccessful match.
    * ) 'always' - stop at this conditon regardless of a match or
    * ) 'never' - continue searching regardless of a match or non-match.

<condition field="[{field name}|${variable name}|%{api func} {api arg}]"
expression="{expression}" break="[on-true|on-false|always|never]">
<action application="{app name}" data="{app arg}"/>
<anti-action application="{app name}" data="{app arg}"/>

<!-- any number of condition tags may follow where the same rules apply -->

Please post these question to freeswitch-users at lists.freeswitch.org so
others can benefit from the answers.

More information about the FreeSWITCH-users mailing list