Monday, 20 August 2012

CME Supplementary Services

In this note, we aren't covering supplementary services from signaling perspective (H323, SIP, or MGCP). Instead, we will be covering them from functional perspective.

Let's start with call forwarding.

Call Forwarding

CF can be triggered using different methods:

Call Forwarding Type
How to Set Final Destination?
All Calls (CFA)
Phone softkey or router configuration
No Answer (CFNA)
Router configuration
Busy (CFB)
Router configuration
Night Service (during night service hours)
Router configuration


CFA setting is synchronized between CME and the phone (SCCP/SIP). This means that if the configuration is applied in CME, it will reflect in phones display that CFA is set to destination number. Similarly, in case CFA is set at phone level using softkey, the associated commands will be applied automatically in CME.

For SCCP endpoints, this is inherently done since SCCP is master-slave protocol (more details are covered in "IP Telephony Protocols" note). The challenge is using SIP endpoints since its peer-to-peer protocol.

In SIP here are the working scenarios:

  1. When Call Forward All is configured on Cisco Unified CME with the call-forward b2bua all command, the configuration is sent to the phone which updates the CfwdAll soft key to indicate that Call forward All is enabled.
  2. When a user enables Call Forward All on a phone using the CfwdAll soft key, the URI for this service (CFA) and the destination number are sent to CME. CME updates its voice register pool and voice register dn configuration with the call-forward b2bua all command to be consistent with the phone configuration.
  3. Call Forward All supports KPML so that a user does not need to press the Dial or # key, or wait for the interdigit timeout, to configure the Call Forward All number. CME collects the Call Forward All digits until it finds a match in the dial peers.

Those types can be enabled together in one phone. In this case the evaluation order is as follow:

1. Call forward night-service
2. Call forward all
3. Call forward busy and call forward no-answer

Note: CF configuration is ignored when the DN is part of hunt group

When CF is applied to a DN, it will be applied for all dial-peers of that DN (primary and secondary extensions including the ones created by dialplan-pattern command). However, you can enable selective call forwarding to apply to one of the dial-peers. This is applicable for SCCP CFB & CFNA only.

call-forward busy target-number [primary | secondary] [dialplan-pattern]
call-forward noan target-number [primary | secondary] [dialplan-pattern]

By default, forwards to non-local numbers are blocked by CME. This can be enabled globally using call-forward pattern command which is used to define the non-local destination patterns where CME calls can be forwarded to.

Note: Although this command is applied under telephony-service, its used for both SCCP and SIP phones

Note: Call forward is supported from SIP to SCCP, SIP to SIP, SCCP to SIP.

Call Forward Unregistered (CFUR) - CME 8.6

This feature will enable CF for SIP DNs which are unregistered. A DN is considered unregistered in one of the following conditions:

  1. None of its associated phones  is registered.
  1. Its not associated to any phone

For SCCP phones, in earlier versions of CME, a busy tone was played for callers when the callers are unable to reach the SCCP phone number. In CME 8.6 and later versions, a fast busy tone is played instead of a busy tone for callers who are unable to reach the phone.

Note: As we mentioned earlier, the time required to mark the phone as unregistered depends on keepalive timer settings. During this time CFUR won’t be triggered. It will be used ONLY once the phone is marked as unregistered.

Call Transfer
Some Call Transfer Terminologies:
  1. Transferee The person who is being transferred.
  1. Transferor The person who invokes the transfer.
  1. Transfer-to The person who becomes the final recipient of the call after the transfer has been completed.
  1. Consultation call The call between the transferor and transfer-to parties.
  1. Transfer commit at connect The act of completing the (consultative) transfer after the transferor and transfer-to party have talked to each other.
  1. Transfer commit at alerting The act of completing the (consultative) transfer during the time that the transfer-to party's phone is ringing. In this case, a consultation call is placed but is abandoned before the transfer-to party answers the phone
  1. Blind transfer The act of invoking a call transfer without first checking to see if the transfer-to party is available.

The difference between blind transfer and Transfer commit:
  1. Usually, the calling party information sent in the call setup request toward the transfer-to party. In the blind case, this is the transferee, and in the commit at alerting/connect case, it's the transferor (This affect billing since billing is based on calling number in SETUP message). After connected state, calling party information will be the transferee number in both transfer types (it won't have impact on billing since the CDR is already generated based on SETUP message calling number)
  1. The blind transfer doesn't involve doing a call replace operation. Once you press on transfer softkey/button, you won't here any dial tone to enter the new number. You just need to enter the new number silently and the call between transferee and transfer-to will be placed automatically.
In CME, call Transfer has four types:

  1. Blind: Calls are transferred without consultation using the Cisco proprietary method and a single phone line.
  2. full-blind: Calls are transferred without consultation using H.450.2 standard methods.
  3. full-consult: Calls are transferred with consultation using H.450.2 standard methods and a second phone line if available. Calls fall back to full-blind if the second line is unavailable.  
  1. local-consult: Calls are transferred with consultation using Cisco proprietary method and a second phone line if available. Calls fall back to blind if the second line is unavailable.

In case SIP protocol is used for transfer, blind and full-blind will work in the same way similarly full-consult and local-consult. The type of call transfer can be configured globally or per DN.

Note:  Transfer by directory is supported by full-consult or blind transfer. If you want to transfer using directory/placed/missed/received calls, the transfer-system needs to be set at full-consult for this to work appropriately.

By default, transfers to non-local numbers are blocked by CME. This can be enabled globally using transfer-pattern command which is used to define the non-local destination patterns where CME calls can be transferred to.

Note: Although this command is applied under telephony-service, its used for both SCCP and SIP phones

In case you would like to enable transfers globally and block them per user, you can use one of the following methods:
  1. Block transfers per phone
  2. Limit the max number of digits can be dialed per phone (e.g. in US limiting the number of digits to 8 won't allow LD or International calls).

Another feature is Call Transfer Recall. In case the transfer-to number isn't answering, the call will be recalled after recall timer expiry. In case the transferor is busy, recall will retry for 3 times (one every 15 sec) then the call is disconnected.

Notes: Restrictions for Recall feature:
  1. Transferor and transfer-to parties should be in the same CME
  2. Recall timer should be less than CFNA timeout configured on the transfer-to phone.
  3. This feature isn't supported if transfer-to DN has CFB enabled or part of hunt-group.

Configuration Template

 transfer-system {blind | full-blind | full-consult | local-consult}
 transfer-pattern transfer-pattern [blind]          !!!... In case consultive transfer is enabled globally, blind transfer can be applied to specific patterns using blind keyword
 call-forward pattern pattern
 timeouts transfer-recall seconds
 calling-number local          !!!... This command will replace the calling-party name/number with the forwarding-party name/number for hairpin forwarded calls.
 transfer-digit-collect {new-call | orig-call}
ephone-dn dn-tag [dual-line]
 number number [secondary number] [no-reg [both | primary]]
 call-forward all target-number
 call-forward busy target-number [primary | secondary] [dialplan-pattern]
 call-forward noan target-number timeout seconds [primary | secondary] [dialplan-pattern]          !!!... Timeout setting defines the duration that a call can ring with no answer before the call is forwarded to the target number
 call-forward night-service target-number
 call-forward max-length length          !!!... Limit the max number of digits that can be dialed for the destination forward-to number
 no forward local-calls          !!!... Prevent call forwarding between DNs in the same CME
 transfer-mode {blind | consult}
 timeouts transfer-recall seconds
ephone-template template-tag
 transfer-pattern blocked
 transfer max-length digit-length          !!!... Limit the max number of digits that can be dialed for the destination transfer-to number
ephone phone-tag
 ephone-template template-tag
voice register global
 call-feature-uri cfwdall service-uri          !!!... Define SIP URI for CFA to be sent from SIP endpoint to SIP CME when CFA is configured using cfwall sofkey.
voice register dn dn-tag
 call-forward b2bua all directory-number
 call-forward b2bua busy directory-number
 call-forward b2bua mailbox directory-number
 call-forward b2bua noan directory-number timeout seconds
 call-forward b2bua unregistered directory-number         
voice register template template-tag
 transfer-attended          !!!... Enables the soft key for attended transfer on SIP phones
 transfer-blind          !!!... Enables a soft key for blind transfer in a SIP phone template
 voice register pool pool-tag
 template template-tag