5.9. Creating a Digital Receptionist

So far, our incoming calls are routed to extension 250, Ellen Ripley. Ellen has been gracious at playing receptionist, but she has her own work to do. How do you configure Asterisk to take over as a reliable, always courteous digital receptionist?

Instead of routing all incoming calls to Ellen, program your dialplan to route calls according to an interactive menu, and then record suitable greetings and instructions. (See the next recipe to learn how to use Asterisk to record custom prompts.)

Fire up your trusty text editor and open /etc/asterisk/extensions.conf. Change the [pstn-test-in] context to look like this:

	[pstn-test-in]
	;interactive menu for incoming calls
	exten => s,1,Answer()
	exten => s,2,Set(TIMEOUT(digit)=5)
	exten => s,3,Set(TIMEOUT(response)=15)
	exten => s,4 Background(local/main-greeting)
	
	;user extensions
	exten => 1,1,Goto(local-users,250,1)
	exten => 2,1,Goto(local-users,251,1)
	exten => 3,1,Goto(local-users,252,1)

	;send the caller back to the beginning
	;if they enter an invalid option
	exten => i,1,Playback(local/invalid-option)
	exten => i,2,Goto(s,2)

	;hangup if the timeouts are exceeded
	exten => t,1,Hangup

Now, record the greetings that will be played for callers. The first one is main-greeting, which says something like "Thank you for calling Excellence Itself, Limited. Please press 1 to speak to Ellen Ripley. Press 2 for Sarah Connor, or press 3 for Dutch Schaeffer."

invalid-option responds to incorrect key presses with "I'm sorry, that is not a valid option. Please listen to the available options and try again."

Reload the new dialplan:

	asterisk1*CLI> dialplan reload

Call your server from an outside line and take your new digital receptionist for a test drive.

There's a whole lot going on here in a few lines:

	Set(TIMEOUT(digit)=5)
	Set(TIMEOUT(response)=15)

Asterisk will hang up if the user takes too long to enter key presses, or too long to respond at all. The defaults are 5 seconds and 10 seconds.

The Background command plays a soundfile, then stops playing the soundfile when it is interrupted by a key press from the caller and goes to the next step in the dialplan.

The t, or timeout extension is a special extension that tells Asterisk what to do when timeouts are exceeded.

The i, or invalid extension handles incorrect input from callers.

When a caller is routed to a valid user's extension, that's the end of the road. Then, someone either picks up the call, or it goes to voicemail.