I’ve done my fair share of CallManager Express (CME) installations over the years, many of which were for small businesses. I usually get to try and replace an old battleship of a phone system that has been running for a long time but has either finally given up the ghost or can’t be repaired due to the company being out of business. When I do replace these units, the usual desire is to make it behave the same way as the old system. For the most part, this is a pretty easy proposition. That is, until it comes to auto attendants. The automated recording that helps callers find the correct extension or leave a message is becoming an important part of the small business as employers start cutting back on expenses and use fewer people and more technology. One case recently that had me baffled was a request for an on-demand auto attendant.
This particular customer had an old phone system that had finally failed. They had decided on a CME system to replace it. One feature they said they could not live without was the ability to toggle on a recording to handle calls. This usually happened during lunch or during a meeting when all people at the office would be involved in some manner or another. The receptionist wanted to push a button and enable the recording until the meeting or lunch had passed, then come back and toggle off the recording to allow calls to be answered by a human being again. I nodded along slowly as the wheels started turning, because to my knowledge there was no feature inherent to the system that would do this.
After some thinking and planning and more than a few failed lab mockups, I finally found the answer in a combination of unlikely related features. The first involved handling incoming calls to multiple phones in a manner that would allow redirection of calls. This isn’t possible with parallel hunt groups in CME, as logging a phone into a hunt group changes all the forwarding behaviors of the phone. It will only obey the hunt list settings and ignore almost everything else, include call-forward all. The second issue was finding a way to have the auto attendant answer the call when invoked, as the standard method of using auto attendants either involve enabling it for all calls at all times or using a schedule to enable specific greetings after hours or on holidays. As an aside, this is the real value in a solutions integrator. It’s easy enough to check a few boxes and type a few lines to get something to work the way it says it will on the box. A real integrator will make a system behave how the user wants it to behave, regardless of whether or not there’s a checkbox to do it.
Step 1: Fix Incoming Call Behavior
This ended up being the most technology-dependent part of the equation. CME used to have a hard time handling a parallel (or broadcast) hunt group that rang a group of phones at one time. Prior to CME 4.3, this feature was only available for SIP phones. After 4.3, Cisco finally ported the parallel hunt group to SCCP phones (my preferred method for configuring phones in CME). The only catch was that the phone hunting behavior followed the rules for hunt groups. In order to make the incoming calls do something else, I had to find a way to make the calls ring multiple phones without a hunt group. The answer actually came to me when I found an old page referencing a hacked together broadcast hunt group prior to CME 4.3. This ingenious solution used a group of overlaid directory numbers (DNs) to mimic a broadcast hunt group. A group of DNs was necessary because a DN in CME can only be single or dual-line. With a dual line phone, two calls can hit the phone at once. The third call is forced off to voice mail or some other behavior as dictated by the call forwarding configuration. The second part of this solution was delivered in CME 4.0 – the octo line.
For those not familiar, the octo line creates a special DN capable of handling eight simultaneous incoming and outgoing calls across multiple extensions. This looks to me like an attempt to create a basic form of call queuing in CME. By creating a construct to handle more than two calls at once, you’ve in effect created something to can do basic call center call routing. In this case, I created one octo-line DN and put it on the two phones used by reception at this business:
ephone-dn 1 octo-line number 100 description Outside Call name Outside Call
Now I can make the calls ring on two phones without creating a hunt group. That also means I can call-forward the phones as needed.
Step 2: Invoke Auto Attendant On Demand
This one was a bit trickier. Enabling an auto attendant for a dialed number is easy. How do we make that number only work when toggled? Time schedules were out for this customer, as they were never sure when they were going to need to enable the auto attendant. That means I have to find a way to call the auto attendant DN when needed. But how to do that on CME? The answer came to me in a flash of insight – night service.
Night service is a configuration setting that allows a system to be configured for a time schedule when the participating phones will ring in a special manner or pattern. The idea is that when a business is closed, a designated phone can be monitored by personnel, such as janitorial staff or second shift, and be answered without modifying the open hours configuration. In this case, we’re going to use the night service code to invoke the night service configuration when needed. Normally, this command would be used when night service is active in order to disable it. Here, we’re doing the exact opposite. Also one more thing to note – the night service code command requires the code to be prefixed with an asterisk. That works well, as the asterisk isn’t usually dialed as part of a number, so this signals that it’s something special. I usually use either the extension number (as below) or the last four digits of the main telephone number as a mnemonic trigger. The first part of the config is easy:
telephony-service night-service code *100
Now, we need to go back to the octo-line DN that we previously configured and add an additional setting to control the night service function. In this instance, I’m using 501 as the pre-configured auto attendant dial-in number:
ephone-dn 1 octo-line call-forward night-service 501
The only remaining task to make this a true “push button” service is to enable a speed dial on the ephone itself. That part is also easy:
ephone 1 speed-dial 1 *100 label Auto Attendant
Now all the user needs to do is push the button on their phone labeled “Auto Attendant” and it will enable night service for all incoming calls. Pushing the button again will disable it. You can also add the command night-service bell to the ephone-dn in order to display a message that night service is active.
There are a number of other tricks that you can do with the basic building blocks presented by CME to make it behave just like a customer’s old phone system. This should allow you to ease any transition and allay any fears they might have. After all the users are comfortable with the new phones and phone behavior, you can start introducing new features to them like unified messaging or single number reach. People are very open to change once they figure out nothing has really changed.
Tom, thanks for posting this. You just solved a problem that I’ve been perplexed with for over a year with one of my CME systems. The Norstar systems all had this type of feature and as I replace them the physicians’ offices don’t like giving it up. As luck would have it I have a new CME system arriving this week so I’ll have time to lab it up.
This is a great post. I had never used the ‘night-service bell’ command, but it would have come in handy a few months ago.
Thanks for posting this.
My experience has been that when you assign the same DN to multiple phones so that they all ring and show BLF when that “line” goes off-hook, you have to set every phone to night mode (push the speed-dial button you described) or the other phones still ring.
How can this be done with CUCM or/and CUCX ? is it possible ?