5.6. Advanced Call-Handling Applications
Here are some call-handling applications that, while a little more advanced, your users may well insist on having.
5.6.1. Call Parking and Orbit
Call parking is a form of hold and transfer offered on some PBXs. It allows calls to be placed on hold at ad hoc virtual extensions (i.e., parked) until the intended recipient of the transfer can be located. She then dials the virtual extension and is connected with the holding caller.
Orbit adds a bit of functionality to call parking by causing the holding call to eventually ring back at the phone where it was parked to begin with (orbiting) or perhaps ring another phone in a programmed sequential group .
5.6.2. Project 5.2. Set Up Call Parking
Where do calls go when they get parked? Parking zones. In reality, these zones are just extensions that Asterisk sets up and tears down using its built-in parking application. The extensions themselves cannot be used for any other purposeso, if you define a particular range of extension numbers to be used for parking, those numbers are off-limits as "real" extensions.
By default, Asterisk gives you 20 parking zones, extensions 701-720. The way you park a call in progress is to transfer it to extension 700, and it will automatically be parked in the lowest available parking zone, starting with 701.
To enable call parking, you'll just need to make sure:
The contents of features.conf (or parking.conf ) should look like this:
[general] parkext => 700 parkpos => 701-720 context => parkedcalls
Don't forget to issue a "restart now" at the Asterisk CLI.
Try calling into your PSTN interface from a second telephone company line or from your cell phone. When your ring group from Project 4.2 rings, answer the call on one of the SIP phones, then perform a transfer to extension 700. On the Cisco 7960, this is done by pressing the More softkey, then the Transfer softkey, then dialing 700, then pressing the Dial softkey. A spoken voice will tell you which park extension is going to hold the call. Then, press the Transfer softkey again to complete the park. The call with your cell phone will cease on the 7960, but the softPBX is keeping the call on hold, parked at extension 701. Subsequent calls would be parked at 702, 703, and so on.
Now, go get yourself a cup of coffee or a refreshing ice water. When you return, assuming your cell phone hasn't run out of battery power, that call will still be parked. To unpark it and resume it, call 701 from one of your SIP phones.
184.108.40.206 Put that call in orbit
To add an orbit-style timer to the parking zone, so that the holding call automatically rings back to the parker , add the following to features.conf :
parkingtime => 120
Now, parked calls will orbit back to the parker after exactly 2 minutes. This will help if, in the course of getting that cup of coffee, you forgot you parked a call.
5.6.3. Automatic Call Return
ACR is a function generally ascribed to the PSTN, especially when caller ID isn't available. By dialing a DTMF code on the phone, *69 in many areas, a PSTN subscriber can automatically return the call of the last person to have called his line. (This is a function of SS7's CLAS feature set.) Some PBXs support a similar function.
5.6.4. Hunt Groups and Ring Groups
Hunt groups are logical, sequential groups of endpoints that ring individually when the phone before them in the sequence is busy or unavailable. In a group of three phones, phone B will ring only when phone A is busy, and phone C will ring only when phones A and B are both busy.
Ring groups , conversely, are groups of phones that ring simultaneously until one of them is answered , connecting the call. Then the rest of the phones stop ringing until the next call comes to the ring group. An example of a ring group configuration using Asterisk is given in Chapter 4.
5.6.5. Project 5.3. Set Up a Private Hunt Group
220.127.116.11 What you need for this project:
To configure Asterisk for a sequential hunt group of private phones, let's start with the extension configuration ( extensions.conf ) for the IP phones used in the last couple of examples:
exten => 103,1,Dial(SIP/103,40,r) exten => 104,1,Dial(SIP/104,40,r)
Consider that extensions 103 and 104 both ring a SIP phone for 40 seconds each, individually. A hunt group would ring them both, one at a time for a certain duration, in sequence. Here's a bit of dial-plan that establishes a sequential ring group at extension number 100 consisting of SIP phones 103 and 104:
exten => 100,1,Dial(SIP/103,10,r) exten => 100,2,Dial(SIP/104,10,r)
So, 100's first priority is to attempt to connect the call on SIP phone 103. It rings that phone for 10 seconds before giving up and going on to its next priority, which is to ring SIP phone 104. It's the second property of the exten declaration that assigns a prioritycheck out Chapter 17 for the details on the exten declaration in Asterisk.
18.104.22.168 Add cell phone bridging to this hunt group
It's not just private phones that can be the destination for a sequential hunt group. You can add outside dialing instructions, too. The following configuration adds a third sequence in the hunt group, the dialing of a PSTN phone number. This could be a cell phone, which would have the effect of making you very hard not to get hold of when somebody dials your 100 extension:
exten => 100,3,Dial(Zap/1/12165241234,40,r)
5.6.6. Hold Queues
When more people are calling into a system than there are attendants to answer their calls, those inbound callers must be put on hold until an attendant becomes available to deal with them. The hold queue is a call-ordering application that keeps people waiting in line in the same order in which the phone system originally fielded their calls. This way, people who called in after you don't get on the phone with an attendant before you do. Hold queues are most common in call centers where lots of people are answering a very high volume of calls simultaneously. If you've ever called the electric company or insurance company to ask a question about your bill, then you've almost certainly made your way through a hold queue.
A directory application in telephony is the same as a directory in the phone book sense or in the network object sense. If you've ever dealt with LDAP, Novell NDS, or Microsoft Active Directory, then the concept of an online directory should be familiar. In the case of telephony, the directory provides subscribers and inbound callers alike with information about how to reach people on the phone system. This information is presented either on an endpoint's display, in a web-based or PC application, or through audible interactive voice reponse prompts in a phone connected to the host system.
Most telephone system directories allow you to search for a contact's extension by "spelling" her name using the alpha-equivalent dial-pad technique or by choosing from a list of departments in order to narrow a large directory down to a particular contact in several steps. Once found, most directories can dial the contact's extension or phone number and connect the user by transferring the call.
Presence isn't so much an application as a genre of applications designed to make it easier to find a particular phone user. This may mean ringing his desk phone and cell phone simultaneously or sequentially, or it may mean simply allowing him to notify an attendant when he's available to receive calls. It may also mean publishing information about his availability, or presence, in a directory application. This information might be the user's current location or possibly a list of people from whom he is willing to receive phone calls at the moment.
This is the rough extent of presence applications in traditional telephony. Presence is implemented much more completely in VoIP than in PBX settings, thanks to standards that more capably deal with presence issues. One such standard is SIMPLE, or SIP Instant Messaging Presence Leveraging Exensions.
When a call is bridged , it is simultaneously connected to more than one endpoint. This could mean it is bridged between two users on separate phones or bridged between two phones on behalf of a single user. Why would a single user ever want to field the same call on two phones at once? People don't call themselves, after all.
Well, really, it's quite useful. Beginning a call on the desk phone, bridging it to a cell phone, walking out the building and driving away while continuing the call on that cell phone, then returning to the office and resuming the call on the desk phone, all without any disconnection or interruption of the callthat's an obvious "killer app" for bridging. But there are other uses for itrecording calls, for example, requires bridging, because both the person talking and the recording device need a connection to the call. This function is fairly rare among traditional PBX systems, but many who have it swear by it.