Let’s say that your company wants to prohibit dialing 900-numbers by its employees and visitors.  The official name for numbers in this NPA within the North American Numbering Plan is "Premium-Rate Telephone Numbers".

Traditionally, you would use Telephony Class of Service to accomplish this goal.  With Lync Server 2010, that would entail you making sure that 1-900-xxx-xxxx is not included in any Route with an associated PSTN Usage that is applied to the Voice Policies applied to any users which you wish to prohibit dialing this number.  Then, if a user without a PSTN Usage associated with a Route that has a Match Expression that includes 900xxxxxxx, then the caller would receive a Fast Busy signal, and receive a notification in the Lync client that the number is not valid.    That meets the requirement to prohibit access to the numbers, but it is kind of a clunky administrative response to a bad call attempt.


A more elegant and flexible way of accomplishing the organization’s goal, however, might be to use an Unassigned Number Range and an Unassigned Number Announcement.

To do this, simply create number ranges for numbers that you wish to prohibit.  Then, assign an announcement to the range(s), and you are in business.

Benefits of this approach:


  • Customizable Announcement which can either be a file or Text-to-Speech
  • Customizable call forwarding action after the announcement is played
  • A Monitoring Server CDR entry for the call so that you will know exactly which number the employee/visitor actually tried to call


Step 1. (Optional) Make Sure You Can Normalize 900 Numbers.


If you don’t already have a Normalization Rule in the Dial plan to cover these
numbers, then you can use this:


MATCH EXPRESSION:                   ^1?(900|976)([2-9]\d{2}\d{4})$

If you already have a sufficient rule, then skip this step.

Step 2. Create Announcement

New-CsAnnouncement -Parent service:ApplicationServer:lyncpool.catapultsystems.com  -Name "Announce_USPremiumeRateNumbers" -TextToSpeechPrompt "We are sorry, but the Premium Rate Number you dialed is prohibited.  If you need to reach this number, please notify your manager.  Thank you." -Language "en-US"

Step 3. Create Unassigned Number range(s)

New-CsUnassignedNumber -Identity "Range_USPremiumRate_900″ -NumberRangeStart "+19000000000″ -NumberRangeEnd "+19009999999″ –AnnouncementService ApplicationServer:lyncpool.catapultsystems.com -AnnouncementName  "Announce_USPremiumRateNumbers"


One of your additional options in the New-CsAnnouncement command is to add a SIP Address to forward the call to after the announcement has been played.  If you have an Operator or Receptionist Response Group Workflow configured, then use its SIP address to send the call to.

For all practical purposes, you could start the number range at +1900200000 instead of +19000000000, since in the NANP, only 2-9 are valid first digits in the Nxx.

You might notice that my Normalization Rule match expression includes 976.  Technically, 976 is not in use in the NANP, but premium numbers used to exist in that range, and it never hurts to block something that has no current legitimate use.