Simplified PLAR on CUCM

Sometimes it is necessary to have a phone dial a preset destination any time it goes off hook. This is common in lobby phones, or the push button intercoms used on doors and gates. This configuration is called Private Line Automatic Ringdown, or PLAR. The way Cisco has handled this is to have you create a calling search space (CSS) that contains a single partition that contains an empty translation pattern with the called party mask set to the destination you want the phone to ring to. While this works fine, it can require a huge number of partitions and calling search spaces if you need to configure a lot of PLAR phones.

Starting with CUCM 8, there is is a feature that allows you to achieve this with only 2 partitions and Calling Search Spaces, plus translations, no matter how many source/destination sets you have. This significantly reduces complexity and the likelihood of error. A configuration example follows. Continue reading

UCCX Automatic Call Distribution (ACD) Part 3

In previous posts, we have looked at setting up the queues, skills, and agents for an ACD (Automatic Call Distribution) call center. In this post, we will take a look at setting up a very basic queuing script from a template, and creating an application to use it.

Continue reading

UCCX Work Timer Expired Not Ready Reason Code

I recently ran into a situation where agents in a call center that had a Work timer and reason codes enabled where going into Not Ready with a system reason code: 32758 (Work Timer Expired).

The agents and queue were configured so that the agents would become available again after the work timer, and the majority of the time they were. What we discovered, with TACs help was that these were instances of a non-ACD call in or out to the agent phone being active when the work timer expires.

The agent states in a normal scenario would be as follows: The agent is in a Ready state, a call is presented, and they go into the Reserved state while the phone is ringing. Once the call is answered, they go into the Talking state, followed by the Work state when they hang up, and the 10 seconds later they go into the Ready state.

In the cases where we were seeing “Work Timer Expired,” the agent starts in a Ready state, goes through the reserved and talking states as above, and Work when they hang up. Then they either place an outbound call or receive a call directly to their extension, not through UCCX. Once the work timer expires, they are placed in the Not Ready (Work Timer Expired) state for the duration of the non-ACD call, and when that call is completed, they are returned to the Ready state.

In short, assuming the agent and queue are correctly configured with Auto Available, the 32758 (Work Timer Expired) reason code should be read as equivalent to the non-ACD Call reason code.

Check out my other UCCX posts.

Addressing Challenges Specific to Multi-Site Deployments

Deploying Unified Communications Manager to geographically diverse sites adds a number of challenges not experienced in single-site deployments. The primary new challenges are:

  • Bandwidth usage and call quality over WAN links
  • Availability during WAN outages
  • Call routing to the PSTN, especially for emergency numbers
  • Potential for overlapping dial plans

After the cut, we will take a brief look at each of these issues, and some ways to to overcome them.

Continue reading

Configuring Local Route Groups

Local Route Groups were introduced in CUCM 7 as a cleaner way to configure PSTN routing for multiple sites. Prior to Local Route Groups, the only way to route calls out a local gateway was to configure a partition for each site, and configure the various PSTN patterns in each one. With local route groups, you can tie a route group to a device pool, and then send route patterns to a route list that includes the “Standard Local Route Group.” Calls matching that pattern will then use the local route group configured for their device pool.

Configuration  example after the cut.

Continue reading

UCCX System Prompt List

There are two types of prompts in Cisco Unified Contact Center Express, User and System. System prompts are used for some sample scripts, and as a quasi-TTS engine that allows the reading of numbers, time, currency, and some other functions.

You can also use system prompts in your scripts, using SP[promptname.wav] instead of P[promptname.wav]. Some of my most used system prompts are ICM/ICMMusic_30.wav and ICM/ICMMusic_60, 30 and 60 second loops of hold music. I usually also use goodbye.wav before disconnecting if there is an error or something like a menu times out.

If you want copies of the prompts, except for some reason the MoH files, you can download the prompt repository from Cisco here.

Below the jump is a complete list of UCCX System Prompts. Continue reading

Problems with MoH and Conferencing with Recording Profiles

On a UCM system I have worked on, we were running into problems with both Music on Hold and ad-hoc conferencing when a recording profile was applied to DNs. Music on Hold would not play, and conferences could not be initiated. The problem turned out to be codec related: parts of the call were G.722, parts G.711. Once the recording starts, it locks the codec for the call. If MoH or a conference tries to renegotiate it, you get the behavior we experienced.

To correct this, we chose the option to disable G.722 on the phones that were set to be recorded, so there was no need for codec renegotiation. You could also disable G.722 on the cluster, but the customer did not want to take that option.

Blocking Calls by Caller ID in CUCM

Administrators of a phone system are sometimes called on to block calls coming from specific numbers, such as telemarketers or other harassing calls.

Until Communications Manager 8.x, the only way to block incoming calls based on the calling number was to use an H.323 or SIP gateway, and use translation rules on the gateway to reject the number. While there are still good reasons to do this, starting in 8.0, UCM has the ability to block or reroute based on calling number via the “Route Next Hop By Calling Party Number” feature on translation patterns.

Depending on the circumstances, blocking at the gateway may still be your best option, but by configuring it in UCM, you can apply the same blocked numbers to multiple gateways.

The rest of this post, we will build an example of the configuration described in this Technote.

We are assuming a basic setup with all internal phones in a partition called “Internal_DNs_PT,” a gateway with a CSS “Inbound_Routes_CSS” that searches for translations in a partition called “Inbound_Routes_PT”

Call flow for inbound calls:

  • PRI to MGCP Gateway
  • Receiving 10 digits from Telco
  • Translation pattern in “Inbound_Routes_PT” Translates 123555XXXX to XXXX
  • CSS “Internal_Routes_CSS” finds 4 Digit DNs in the Internal_DNs_PT.

Goal: Block all inbound calls from (890)555-1212.

Step 1: Create a Partition named “Blocked_Numbers_PT” and CSS named “Block_By_Calling_CSS”.

Step 2: Create a Translation Pattern in “Blocked_Numbers_PT,” with a pattern of “!” to match all calls, and a CSS that includes Internal_DNs_PT. This allows any calls not specifically blocked to be routes. No actual number translations should be performed.

Step 3: Modify the translation pattern in Inbound_Routes_PT to use the Block_By_Calling_CSS, and select the option to “Route Next Hop by Calling Party Number.”

xlate-for-blockingAt this point, a call comes in, 10 digits are presented from the Telco, the translation pattern in Inbound_Routes_PT strips the initial digits to leave the 4 digit extension. UCM then looks in Blocked_Numbers_PT, finds the ! pattern, which does not make any changes, but searches Internal_DNs_PT for the extension, and passes the call on.

Step 4: Create translation patterns in Blocked_Numbers_PT with the number to be blocked as the pattern, remembering to include any access codes, etc. that the number would have at that point, and the Route Option set to Block This Pattern with the error you want.

blocking-xlate

Alternatively, you could translate the called number to a security officer or something similar. I personally want to route one to Unity Connection or a CCX application playing this recording.

Once you have this configured, you can test it by blocking a number you have control over, like your cell phone, and making sure it is blocked.

If you want to only block calls to a specific number, leave the 123555XXXX to XXXX translation pattern using a CSS searching the Internal_DNs_PT, and then create more specific translations that route through the blocking configuration.

For instance, creating a translation pattern for 1235550987 to XXXX using Block_By_Calling_CSS, and the “Route Next Hop by Calling Party Number” option will only block calls to 1235550987 from the numbers in Blocked_Numbers_PT, but allow the numbers to call other DNs. An instance where you might use this if a FAX machine keeps calling a voice line, and you want to prevent those calls while still allowing FAXs to be sent to legitimate FAX machines.

Interested in learning more about CUCM? Check out our other posts here.

Configuring Users with Mobile Connect (Single Number Reach)

Mobile Connect is Cisco’s trade name for what is often called Single Number Reach, or SNR. It extends a call to a user’s desk phone out to up to ten other phones, such as home and cell phones. This allows an employee to disseminate a single number, which can always be used to reach the user. This benefits customers and business partners, since they don’t need to try multiple numbers to reach someone, and the employee, since there is no way for the caller to know if you are in the office, at home, or on a golf course.

To do this, UCM makes calls to the PSTN for each off net destination, which requires some planning.While a call is being extended, this ties up one channel per remote destination, up to 10, plus the incoming call, if it is a PSTN call. Once the user answers on a remote device, up to 2 channels are taken up, one for the inbound call, one for the remote device, assuming they are both PSTN devices. The additional trunk usage should be taken into consideration before enabling Mobile Connect.

System Setup

The only real non-default setting for mobility is to create a new softkey template that includes the Mobility softkey. Normally, I would copy the “Standard User” softkey template to something like “Mobility User” and add the Mobility softkey to the On Hook, and Connected call states.

User Setup

Setting up Mobile Connect can be a bit frustrating due to some order of operation considerations. To remember the order of operations, I use the mnemonic UPPeD, standing for User, Phone, (Remote Destination) Profile, and (Remote) Destination.

Continue reading

Default routing options

There are a number of different ways you can implement a default route in IOS. The method you choose depends on the circumstances (routing protocol used, equipment being configured, etc.) and your design goals (such as static vs. dynamic routing.)

ip default-gateway

The ip default-gateway command only works on a device not running IP routing. The most common uses of this command are L2 switches and access points, although it could theoretically be used on something like a voice gateway with only one connection, and the no ip routing command configured. Frankly, I cannot think of any advantage or doing this over a static route. Continue reading