Chapter 5. Dialplan Basics

Table of Contents

Dialplan Syntax
Contexts
Extensions
Priorities
Unnumbered priorities
Priority labels
Applications
A Simple Dialplan
The s Extension
The Answer(), Playback(), and Hangup() Applications
Our First Dialplan
Building an Interactive Dialplan
The Background(), WaitExten(), and Goto() Applications
Handling Invalid Entries and Timeouts
Using the Dial() Application
Adding a Context for Internal Calls
Using Variables
Global variables
Channel variables
Environment variables
Adding variables to our dialplan
Pattern Matching
Pattern-matching syntax
Pattern-matching examples
Using the ${EXTEN} channel variable
Enabling Outbound Dialing
Includes
Conclusion

Everything should be made as simple as possible, but not simpler.

--Albert Einstein (1879–1955)

The dialplan is truly the heart of any Asterisk system, as it defines how Asterisk handles inbound and outbound calls. In a nutshell, it consists of a list of instructions or steps that Asterisk will follow. Unlike traditional phone systems, Asterisk’s dialplan is fully customizable. To successfully set up your own Asterisk system, you will need to understand the dialplan.

If you have attempted to read some sample dialplans and found them overwhelming, or if you’ve tried to write an Asterisk dialplan and had no success, help is at hand. This chapter explains how dialplans work in a step-by-step manner and teaches the skills necessary to create your own. The examples have been designed to build upon one another, so feel free to go back and reread a section if something doesn’t quite make sense. Please also note that this chapter is by no means an exhaustive survey of all the possible things dialplans can do; our aim is to cover just the fundamentals. We’ll cover more advanced dialplan topics in later chapters.