Dialplan overview
The Dialplan engine in FreeSWITCH is an incredibly flexible piece of software. If you have a background of using other switching systems, you are probably used to the Dialplan being tied to a somewhat flat, static set of logic statements—you pre-program a set of decisions in the switch's native language (that is, answer calls, play files, collect digits, and transfer calls) and this happens for every call. Anything that cannot be done using the pre-built commands and logic statements available in that switch, well, just cannot be done.
In FreeSWITCH, Dialplan processing is actually done by the loadable module. The logic in this module is called every time a call is handled, and you can even load multiple Dialplan modules so as to process calls in a different way, depending on the logic you need. This is a very important distinction between FreeSWITCH and other systems, and it is often overlooked. By making Dialplan processing modular, a new form of freedom is introduced...