Blocking Calls by Caller ID in CUCM

PBX administrators 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 routed. 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.


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, but I have never gotten the chance to.

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 those 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.

UCCX Automatic Call Distribution (ACD) Part 2

In my last post, we looked at configuring UCCX Queues, Skills, and Resource Groups. In this post, we will look at Agents, Supervisors, and Teams. These are how UCCX manages the call center employees. Agents (or Resources) are the people that  answer the incoming phone calls, or are assigned outgoing calls. Supervisors are usually the call center managers, although this capability may be assigned to other people, such as marketing, HR, or IT employees. Teams are administrative groupings of agents, supervisors, and queues.

Configuring Agents (Resources)

In UCCX, agents are referred to a Resources. A Resource can be assigned skills, be assigned to a Resource Group, or both. Agents are the people that calls are directed to, based on skills or resource groups.

The Agent capability cannot be assigned directly to a user; to make a CUCM user a call center agent, find the end user in UCM end users, and assign the user’s phone as a controlled device. Once you click save, you will be able to select a line from any of the controlled devices as the IPCC (IP Contact Center, one of the various names UCCX has had) extension. The extension used for UCCX must not be shared, and should be the first line on the phone. Once a UCM end user has an IPCC extension assigned, they have the agent ability assigned automatically. Continue reading

UCCX Automatic Call Distribution (ACD) Part 1

Automatic Call Distribution, or ACD, is one of the most fundamental features of any call center software. It includes taking calls, queuing them until a qualified agent it is available, and transferring the call to that agent. There are a number of components that make up ACD in UCCX, which I will address over several posts. This page assumes you have installed UCCX, and run through the UCCX initial setup.

Queues, Resource Groups, and Skills

In this post, we will deal with queues, and the ways to assign agents to them.

Resource groups are a static group of agents that can be assigned to one or more queues.

Skills based routing can be configured to require an agent to be assigned one or more skills, and at a minimum level, before calls can be routed to them, and route the calls to agents based on the skill level assigned to them. Queues can be configured to route based on a number of functions based on the agent’s skill level, high to low, low to high, and based on weighting. Continue reading

UCCX Architecture

UCCX is an application server in the Cisco’s Unified Communications suite that provides basic or advanced IVR, call queuing, Automatic Call Distribution (ACD), agent management like reporting and recording (both built in, and using the Quality Management and Advanced Quality Management products. The basic components required to process calls in UCCX are a Unified Communications Manager cluster, gateways for PSTN access, and a UCCX node or HA cluster.

A CCX HA cluster is based on a Publisher/Subscriber relationship, like UCM, but is an active/passive cluster. One node performs all call processing and the other node is available as a hot standby. When a failover occurs, either administrative, based on a failure, or for instance if a node is restarted, the node will stay active until something causes it to fail back the other node. This is because, since calls can be actively terminated to the UCCX server, failover can cause an interruption of call processing. When a failover occurs, call that are terminated to the CCX server will be lost, while calls actively talking to agents should not be.

The basis of call handling in UCCX is the application, which is a combination of a script, one or more triggers, and zero or more parameters. There are also prompts, queues, agents, and a lot of other pieces, but they center around these 3.

Scripts: Created by a dedicated editor (Cisco Unified CCX Editor) can preform a wide variety of call handling operations (answer calls, transfer calls, collect DTMF digits, play prompts, etc.), interact with CCX queues and agents, process data, etc.

Triggers: CTI route points registered with Unified CM. Ports are used to route a call to a specific application. Triggers can also set the language in a multi-language environment, and can be referenced in a script, so the script can handle calls to individual triggers differently.

Parameters: Values that can be fed to a script to customize it for a specific application.

A single script can be used for multiple applications. For instance, a script could be created that answers a call, plays a welcome prompt, and places the caller in a queue, playing music on hold and a periodic announcement until an agent becomes available. The company using it needs 2 call flows, one for sales, and one for repairs. The call flows are identical, except that the welcome prompt should reflect the department called, and the callers should be placed in the queues called “sales” and “repairs,” respectively. Rather than create a separate script for each department, a single script can be used, that expects parameters for the welcome prompt and the queue name. Then, “sales” and “service” applications are created, with the appropriate values configured as parameters. Then, triggers are assigned to each of them, say 1000 for sales, and 1001 for service. When a person called 1000, UCM rings the trigger 1000 on CCX, and CCX handles the call using the application (script and parameters) assigned to that trigger.

Note that it is possible to create a single script, single application, with multiple triggers, and route the call based on that. I tend to prefer the first way, as it tends to allow for easier administration.

Over some upcoming posts, I will take a deeper dive into these topics, and provide some examples.

Cisco Unified Contact Center Express (UCCX) Initial Setup

Unified Contact Center Express (UCCX) is the solution for small to medium (up to 400 agents) call centers in Cisco’s Unified Communications suite.  It runs on the same UCOS platform that Unified Communications Manager and Unity Connection run on, the initial install is identical. This post takes you from the end of that install to a point where you can configure applications to process calls.

Once UCCX is installed, it will run through a setup wizard when you first log in to the web interface. Before the wizard is run, a CUCM AXL user needs to be configured, and a license file obtained. Continue reading

Cisco Unified Contact Center Express (UCCX) Install

Starting with version 8.0, UCCX is based on the same hardened Red Hat Enterprise Linux  version that CUCM and Unity Connection are based on. The install follows the same steps that they do. Since UCCX is still licensed based on license MAC, pretty much everything you enter here will be used to calculate the license MAC, so make sure you have the correct settings.

UCCX Install Platform Installation Wizard

Select “Proceed” to the perform the platform configuration. If you select “Cancel,” the install will proceed without configuring the platform. When the server is booted again, it will prompt you to complete the platform configuration. This is useful to stage subscribers, or deploying remote servers where you cannot complete the install.

Continue reading

Enterprise License Manager (ELM) Tutorial

Cisco is moving the UC suite to licensing through Enterprise License Manager, or ELM. Currently, Unified Communications Manager and Unity Connection licensing is managed through ELM. IM & Presence is not directly licensed, it is tied to UCM licensing. Other products like Contact Center Express (UCCX) continue to use traditional licensing.

ELM can be run as a co-resident application on UCM or Unity Connection, BE 5000, or BE 6000. It can also be run as a separate server. Cisco recommends a co-resident installation for a single app, and a separate server when running multiple applications, or multiple clusters. Co-resident ELM is supported in any of these configurations, but not recommended.

Co-resident ELM is installed when CUCM or Unity Connection is installed. The stand-alone server is installed from the same media as CUCM and Unity Connection by selecting is in the product to install screen.

We will walk through requesting and apply a demo license, and adding a product instance to ELM.

When you navigate to the IP address or hostname of the server you are running ELM on, you will see the following:

Click “Cisco Enterprise License Manager,” and you get the ELM login.

When you log in, you will get the dashboard, which will show that you are in demo mode until you apply licenses. For this demo, we will get a demo license from Cisco, which include 20 CUWL Pro UCM and Unity Connection licenses, as well as 5 Telepresence rooms.

The first step will be to create a license request in ELM, so expand License Management, and click licenses. ELM is able to register PAKs directly from the interface, as well as plan for licenses and generate requests. In this case, we are going to generate a license request, then use it to request the demo license.

From the licenses screen, select “Other Fulfillment Options,” then “Generate License Request.” The license request window opens.

Copy the text to your clipboard, or download it as a file. Next, we will go to, click “Get Demo,” then select “Unified Communications Products,” then “Cisco Unified Communications Demo License Version 9.x.” On the next page, paste in the license request text that was copied from your ELM server, and click “Next.”

On the next page, confirm your email address, registration information, and accept the licensing agreement.

Once you click “Get License,” an email will be sent to you with a zip file attached. Extract the .bin file in the zip file, then go back to the ELM licenses page, and select “Other Fulfillment Options,” then “Fulfill Licenses from File.” Click “Browse,” select the .bin file you downloaded, enter a description if you want, and click “Install.”


Adding a Product Instance to ELM

Now we have the license installed, but the applications are not yet using ELM for licensing. To do this, you add a product instance in ELM. Expand “Inventory,” then click “Product Instances.”

When you click “Add,” The Product Add window opens, allowing you to enter a name, description, IP address or hostname, and authentication information for the product instance you want to add.

The credentials needed are the platform administrator credentials, the ones used for OS Admin, DRS, etc.

When you click OK, ELM will go out to the server you are adding, and update the server to look to ELM for licensing. Once this is done, the page will inform you it is done.

Viewing License Usage in ELM

Once the licenses are synchronized, you can view details of license usage. If licenses at a lower level than those installed are required, the higher level licenses can be borrowed, as seen here. UCM has one user configured, with a single phone, mobility and Presence enabled. This requires an enhanced license, which is “borrowed” from the CUWL Pro licenses that are installed.


Changing the IP address of a server licensed by ELM

One of the benefits of ELM is that you do not need to re-host licenses if you change platform settings, since licensing is no longer tied to a license MAC. However, if you need to change the IP address, you need to follow the proper procedure on ELM. Before you change the IP address, delete the product instance from ELM, follow the proper procedure to update the IP address, and then go through the process to add the product back to ELM. If you do not delete the product instance before updating the IP address, you will get an error adding the instance back into ELM. The fix for this is to run the command “license client reset registration” on the console of the licensed product. Once you run this, the product can be added back into ELM.

Check out the updates for UC 10 Prime License Manager.