Tuesday, 11 September 2012

CME Media Resources - Conference Bridge


There are two types of conferences supported by CME

Ad-hoc Conferences

In ad-hoc conferences, the initiator will use Conf softkey to dial parties and join them into conference (there are other advanced methods to establish conference as well) . Ad-hoc conferences can be completed using software CFB or hardware CFB.

Software CFB

- Software CFB uses router CPU  
- Software resources can provide a max of 3 participants (SIP, SCCP, or PSTN) with G711 codec only. For mixed codecs transcoder should be invoked. In case XCODER isn't available, conference can't be completed.  
- The max number of software ad-hoc simultaneous conferences depends on CME platform.
- Each phone can be part of one conference at a time

For software CFB nothing needs to be configured since its enabled by default and can't be disabled. A workaround to disable it is to enable hardware CFB without configuring DSP resources.

To change some default configuration for software CFB:

Number of Conference Sessions and Gain

As mentioned earlier, the maximum number of conferences is platform dependent. However, this can be limited manually using,

telephony-service
 max-conferences max-conference-number [gain -6 | 0 | 3 | 6]

The gain keyword offers the option to raise the volume of the stream for all call legs (VoIP/Tele).

Note: Although its applied under SCCP CME, its applicable for phone SIP/SCCP phones.

Modify Conference End Call behavior

By default, once the initiator disconnects the call, all conference parties will be disconnected (regardless if they are SCCP/SIP/Tele). This behavior can be changed per phone.

ephone phone-tag
 keep-conference [drop-last] [endcall] [local-only]
!
voice register pool pool-tag
 keep-conference

For SCCP initiators, here are the available options:
  1. no keep-conference: This is the default mode, where the conference is dropped once initiator hangs up or press EndCall softkey. Also, initiator can use Conf softkey to drop the last participant
  2. keep-conference (No keywords used): The initiator can use EndCall softkey to terminate the conference or hang up to disconnect from conference while other two parties are connected. Conf softkey can be used to break the conference but stay connected to both parties while one is on-hold
  1. drop-last: This changes the action of Conf softkey which will disconnect the last party from conference.
  1. Endcall: This changes the action of Endcall softkey which will disconnect the initiator from conference while keeping other parties connected. The same will be the case if initiator hangs up
  1. local-only: When the initiator disconnects, parties will remain connected (using transfer) only if one of them is local to CME

For SIP initiators, those options aren't available. Its either all parties disconnected or leave them joined once the initiator disconnects.

Its very important to know that keep-conference feature requires call transfer to enabled. Once the initiator disconnects, call transfer will be initiated to join the remaining parties together. This isn't a problem in case all phones are part of same CME system since transfer is allowed. However, if one of the parties is remote (e.g. SIP trunk), in this case call transfer (either blind or consult) should be enabled to keep the other parties connected.

Note: During call conference, the display on initiator will be showing last called number. Also, on parties, initiator will be displayed as calling number. On initiator screen, Conference keyword will be displayed in the place of system message. In case the initiator disconnects, the display will be updated to show the on-call parties as calling numbers (assuming keep-conference is enabled).

Note: MOH isn't suppressed from the conference call incase any of the parties places the call on-hold

Hardware CFB

- Once hardware CFB is enabled, software CFB will be disabled.  
- Allow more than 3 participants per conference  
- Does not support the local-consult transfer method (transfer-system local-consult command)  
- In case of multi-codec legs, CFB can do transcoding as well as conferencing (it won't invoke separate XCODER)  
- Hardware CFB isn't supported for SIP phones. SIP phones will still use software CFB with max of 3 participants in case SIP phone is initiator. However, SIP phones can be parties of hardware conference (SCCP phone will be initiator).
- Each phone can be part of one conference at a time  
- For CFB to work, DNs should be configured to act as bridges with conference ad-hoc/meetme feature enabled. Those DNs can't have other features such as call forward and can't be assigned to ephones.  
- Once conference is triggered, each party will be transferred to one of those conference DNs acting as its bridge. Therefore, the number of conference DNs configured should be enough to accommodate the max number of participants configured combined with max number of conference sessions.  
- Those DNs can't be single lines (conference ad-hoc/meetme command won't be taken and will throw error). They can be either dual or octo lines. E.g. for one conference with 5 parties, we should have 3 dual-line conference DNs or one octo-line conference DN.

ephone-dn  20  octo-line
 number 3020
 description **** HW CFB ***
 conference ad-hoc

SiteC#show call leg active summary
G  L     Elog A/O FAX T Codec       type        Peer Address       IP R:
G17B4  L 372      N   ORG     T33    g711ulaw    TELE        P3002
G17B9  L 374      N   ORG     T24    g729r8      VOIP        P3001              135.9.75.10:18688
G17B4  L 377      N   ORG     T21    g711ulaw    TELE        P3020
G17B9  L 378      N   ORG     T21    g729r8      TELE        P3020
G0     L 379      N   ORG     T21    g711ulaw    VOIP        P                  142.6.66.254:2000
G0     L 37D      N   ORG     T21    g729r8      VOIP        P                  142.6.66.254:2000
G17C6  L 37E      N   ANS     T17    g711ulaw    TELE        P32143003
G17C6  L 37F      N   ORG     T17    g711ulaw    TELE        P3020
G0     L 380      N   ORG     T17    g711ulaw    VOIP        P                  142.6.66.254:2000

- Since the parties will be transferred to conference DNs, then CME call transfer should be enabled (especially for external parties to join).  
- Once the conference is established, the display on all parties will show To Conference.  
- If any party disconnect from conference, the audio stream of other remaining parties won't break and will remain connected to CFB. If the number of remaining parties become 2, the CFB will be release and the stream will break to reconnect directly between parties as point-to-point call. Also, the display will be updated with new DNs.  
- The keep-conference feature under ephones/voice pools is ignored. If the  initiator disconnects from conference, other parties will remain connected through CFB as long as the number of participants is more than 2.  
- Also, max-conferences option under telephony-service is ignored. The max number of conferences depends on dspfarm configuration.  
- Similar to software CFB, MOH isn't suppressed from conference  
- Conference initiator should have at least one dual-line or two single-line DNs to be able to start conference.  
- Initiator with octo-line DN will select an idle channel from that DN to establish new call. In case free line isn't available, the conference can't be completed. CME won't select idle channels from other DNs within the same phone similar to single/dual lines behavior.  
- CME admin can assign admin role to any of the ephones within a conference. The conference administrator can:
1. Dial in to any conference directly through the conference number
2. Use the ConfList soft key to list conference parties
3. Remove any party from any conference

Meet-Me

- In meet-me conferences, the creator presses MeetMe soft key before dialing the conference number. Other meet-me conference parties only dial the conference number to join the conference.  
- In case software CFB is used, Meet-Me conferences can't be completed.  
- Max number of Meet-Me conference parties is 32 for G711 codec and 16 for G729 codecs

Conference Softkeys

The RmLstC, ConfList, Join, and Select soft keys are not supported for software-based conferencing. Only Conf softkey is supported with software CFB.

- ConfList: Lists all parties in a conference. For meet-me conferences, this soft key is available for the creator only unlike Ad-hoc. Press Update to update the list of parties in the conference  
- Join: Joins an established call to an Ad-hoc conference. You must first press Select to choose each connected call that you want to join in a conference, then press Join to join the selected calls to the conference.  
- RmLstC: Removes the last party added to the conference. This soft key works for the creator only.  
- Select: Selects a call or conference to join to a conference and selects a call to remove from a conference. The creator only can remove other parties by pressing the ConfList soft key, then use the Select and Remove soft keys to remove the appropriate parties.

Configuration Template

voice-card 0
 dsp services dspfarm
!
voice class custom-cptone CONFERENCE-LEAVE
 dualtone conference
  frequency 1800 3210
  cadence 1000 1000 2000 1000 3000 1000
voice class custom-cptone CONFERENCE-JOIN
 dualtone conference
  frequency 1210 2800
  cadence 3000 1000 2000 1000 1000 1000
!
sccp local
sccp ccm identifier version 7.0
sccp
!
sccp ccm group
 description HARDWARE CONFERENCE BRIDGE
 bind interface
 associate ccm priority
 associate profile register
 switchback method graceful
!
dspfarm profile conference 
 codec g711ulaw
 codec g711alaw
 codec g729ar8
 codec g729abr8
 codec g729r8
 codec g729br8
 maximum conference-participants
 maximum sessions
 conference-join custom-cptone CONFERENCE-JOIN
 conference-leave custom-cptone CONFERENCE-LEAVE
 associate application SCCP
!
telephony-service
 conference hardware
!!!!... Define the digits that can be used during conference to mute/unmute. You can mute and unmute your phone using the phone's mute button also. You must unmute the phone in the same way that you muted it, either with the keypad or the mute button.
 sdspfarm conference mute-on mute-off           
 sdspfarm units
 sdspfarm tag
 max-ephones 10
 max-dn 20
 ip source-address port 2000
 transfer-system full-consult
!
ephone-dn dn-tag [dual-line | octo-line]
 number number [secondary number] [no-reg [both | primary]]
 conference {ad-hoc | meetme}
 no huntstop [channel]
!
ephone-template
 conference add-mode [creator]           !!!... Enable adding parties to conference. By default both creator and participants can add parties to conference.
 conference drop-mode [creator | local]           !!!... Default is conference never drops. You can tune it to drop conference when creator drops or when the last local participants drops.
 conference admin           !!!... Configures the ephone as the conference administrator
 softkeys connected {[Acct] [ConfList] [Confrn] [Endcall] [Flash] [HLog] [Hold] [Join][LiveRcd] [Park] [RmLstC] [Select] [TrnsfVM] [Trnsfer]}
 softkeys hold {[Join] [Newcall] [Resume] [Select]}
 softkeys idle {[Cfwdall] [ConfList] [Dnd] [Gpickup] [HLog] [Join] [Login] [Newcall] [Pickup][Redial] [RmLstC]}
 softkeys seized {[CallBack] [Cfwdall] [Endcall] [Gpickup] [HLog] [MeetMe] [Pickup][Redial]}
!
ephone
 conference add-mode [creator]
 conference drop-mode [creator | local]
 conference admin
 ephone-template

Saturday, 8 September 2012

CME Media Resources - Transcoding


CME support transcoding between G711 and G729 for the following features:

  1. 3-way Ad-Hoc software conferencing
  2. Call-Forward or Call-Transfer (one leg of a hairpin call is using G711 while the other is using G729).
  3. MoH (G711 MoH stream is transcoded to G729 phone)
  4. CUE (G729 calls forwarded to CUE which is using G711 only should be transcoded)

Restrictions
  • Meet-me conferencing not supported
  • Multiple-party ad-hoc conferencing not supported

By default codec configuration on SCCP phones will be used for internal calls within CME. Also, it will always be used in best effort mode trying to achieve minimum bandwidth and DSPs utilization. For external calls crossing trunks, codec configuration won't be used at all. External codec will be used by SCCP phones. This has been changed by introducing dspfarm-assist keyword which will force codec configuration to be used in internal and external negotiations.

If the codec g729r8 dspfarm-assist command is configured for a SCCP phone and a DSP resource is not available when needed for transcoding, a phone registered to the local Cisco Unified CME router will use G.711 instead of G.729r8. This is not true for nonSCCP call legs; if DSP resources are not available for the transcoding required for a conference, for example, the conference is not created.

Configuration Steps

1) Configure DSP resources

For C5510 DSP Resources

voice-card slot
 dsp services dspfarm
!
sccp local interface-type interface-number
sccp ccm ip-address identifier identifier-number
sccp ip precedence value
sccp
sccp ccm group group-number
 bind interface interface-type interface-number
 associate ccm identifier-number priority priority-number
 associate profile profile-identifier register device-name
 keepalive retries number
 switchover method {graceful | immediate}
 switchback method {graceful | guard timeout-guard-value | immediate | uptime uptime-timeout-value}
 switchback interval seconds
!
dspfarm profile profile-identifier transcode
 codec codec-type
 maximum sessions number
 associate application sccp
 dspfarm connection interval seconds >>> Time to monitor media inactivity before deleting RTP stream
 dspfarm rtp timeout seconds >>> Time to wait before termination RTP session due to errors such as port unreachable

For C549 DSP Resources

voice-card slot
 dsp services dspfarm
!
sccp local interface-type interface-number
sccp ccm ip-address priority priority-number
sccp
!
dspfarm transcoder maximum sessions number
dspfarm

2) Register DSP resources with CME to act as DSP host

telephony-service
 ip source-address ip-address [port port] [any-match | strict-match]
 sdspfarm units number
 sdspfarm transcode sessions number
 sdspfarm tag number device-number

Note: You can unregister all active calls’ transcoding streams with the sdspfarm unregister force command

Friday, 7 September 2012

CME Additional Features - Part 2


Softkeys

CME allow the customization of softkeys displayed on SCCP or SIP phones in different call states. This is done using templates which are then assigned to phones. The next table will show phone states: 
Call State
Available Softkeys
Idle
Redial, CFwdAll, DND, PickUp, GPickUp, Newcall, Login
Seized
Redial, CFwdAll, PickUp, GPickUp, EndCall
Alerting
Acct, EndCall, CallBack
Connected
Acct, Confrn, Hold, Trnsfr, Endcall, Flash, Park

*** Seized call state is the initial dial tone state after going off-hook to place an outbound call. Alerting is the state after the telephone number has been dialed and the user is waiting for the called number to answer.

You can block some softkey features using feature blocked command. The softkeys will still appear on phone display but they won't be functional. This is supported for SCCP phones ONLY.

For features that aren't listed under feature blocked command, you can remove the associated softkey from the template as a workaround to disable them.

Note: Any softkey that is not explicitly defined in the template will be removed.

Also, you can remove softkey display using no softkey command. I don't recall any scenario where its required !!!

Also, just would like to highlight that phone line keys can have one of the following roles:

  • Line Buttons
  • Speed Dials
  • BLF Speed Dials
  • URL Service Buttons
  • Feature Buttons

The following URL Services types are supported:

  1. myphoneapp: My phone application configured under phone user interface.
  1. em: Extension Mobility.
  1. snr: Single Number Reach.

Inside myphoneapp service there are multiple functions present:

• add, modify, or delete Speed Dial
• add, modify, or delete Fast Dial
• add, modify, or delete BLF Speed Dial
• change SNR DN
• perform after-hour login
• reset the phone

Feature buttons includes all softkeys functions (Hold, Answer, DND, cfwall, etc).

Configuration Template

ephone-template template-tag
 softkeys alerting {[Acct] [Callback] [Endcall]}
 softkeys connected {[Acct] [ConfList] [Confrn] [Endcall] [Flash] [Hlog] [Hold] [Join][LiveRcd] [Park] [RmLstC] [Select] [TrnsfVM] [Trnsfer][iDivert]}
 softkeys hold {[Join] [Newcall] [Resume] [Select][iDivert]}
 softkeys idle {[Cfwdall] [ConfList] [Dnd] [Gpickup] [Hlog] [Join] [Login] [Newcall] [Pickup][Redial] [RmLstC]}
 softkeys remote-in-use {[CBarge] [Newcall]}
 softkeys ringing {[Answer] [Dnd] [HLog][iDivert]}
 softkeys seized {[CallBack] [Cfwdall] [Endcall] [Gpickup] [Hlog] [MeetMe] [Pickup][Redial]}
 features blocked [CFwdAll] [Confrn] [GpickUp] [Park] [PickUp] [Trnsfer]
 url-button index type | url [name]           !!!... This command can have one of the types mentioned above (myphoneapp, em, snr) or URL (e.g. external directory URL) BUT not both
 feature-button index feature-identifier
!
ephone phone-tag
 ephone-template template-tag
!
voice register template template-tag
 softkeys connected {[Confrn] [Endcall] [Hold] [Trnsfer]}
 softkeys hold {[Newcall] [Resume]}
 softkeys idle {[Cfwdall] [Newcall] [Redial]}
 softkeys seized {[Cfwdall] [Endcall] [Redial]}
 url-button [index number] [url location] [url name]
 feature-button [index] [feature identifier]
!
voice register pool pool-tag
 template template-tag

Speed Dials

I believe every one knows what is speed dialing and why we use it. Its to simplify dialing frequently used numbers. Therefore, I am going to cover directly the types of speed dials in CME.

  1. Local Speed Dials

This is a system level list of speed dials which will be presented to all phones registered to CME. Users can browse this list from their phones by navigating to Directories > Local Speed Dial Menu.

To configure this list:
1. Create an XML file using this template. The file should be named as speeddial.xml.
Local Speed Dial
2. Using TFTP upload this file to CME's flash using copy tftp: flash: command
3. Enable HTTP server in CME using ip http server command
4. Point HTTP server to CME flash memory using ip http path flash: command

Note: Before this configuration, Local Speed Dial Menu won't be present under directories. Also, you can’t copy the XML file from flash to system:/its/vrf1 which is default path for CME files.

  1. Personal Speed Dials

This menu includes speed dials created per phone based on user's preference. Users can browse this list by navigating to Directories > Local Services >Personal Speed Dials Menu.

ephone phone-tag
 fastdial dial-tag number name name-string
!
voice register pool pool-tag
 fastdial dial-tag number [name name-string]

  1. Speed Dial Buttons and Abbreviated Dialing

You can assign speed dial buttons to user's phones which will be associated with line keys. The first configured speed dial button will be associated with the first free line key.

Assuming that line keys are fully consumed, in this case you can still configure speed dial buttons, however, they aren't assigned to line keys. You can dial them using Abbreviated Dialing softkey which is available in Seized state of the phone. The user will dial the configured speed-tag then press Abbr Dial softkey.

ephone phone-tag
 speed-dial speed-tag digit-string [label label-text]
!
telephony-service
 directory entry {directory-tag number name name | clear}
!
voice register pool pool-tag
 speed-dial speed-tag digit-string [label label-text]

Adding to this, phone users can configure their own speed dial  and fast dial lists using two methods:
1. Phone User Web Interface
2. From the phone itself by navigating to Services Button > MyPhoneApps > Speed Dials.

ephone-template template-tag
 phone-ui speeddial-fastdial
!
ephone phone-tag
 phone-ui speeddial-fastdial

Note: EM users can add speed dials from the phone after login but not Fast dial

Similar to call park monitoring you can monitor speed dials using m feature in ephones. Example:

ephone-dn 1
 number 5001
 name PH-01
!
ephone-dn 2
 number 5002
 name PH-02
!
ephone 1
 button 1:1 2m2
 speed-dial 1 5002
!
ephone 2
 button 1:2

iDivert

This feature allows you to immediately divert a call to a voice messaging system. Calls can be diverted in Hold, Ringing, or Active states. iDivert is supported in SIP phones Only.

No configuration is required to disable or enable iDivert, however, as workaround to disable iDivert is to remove its softkey.

Restrictions

  • iDivert is disabled when CFA is active
  • Both calling and called parties can use iDivert feature
  • In case iDivert is pressed before CFNA timeout, the call will be sent to voicemail
  • In case of conference, if one party pressed iDivert, other conference parties will hear his voicemail greeting

Templates

There is nothing much about this since we have already been using it. Templates have different types:

  1. E-Phone Template
  1. E-Phone DN Template
  1. Voice Register Pool Template

Note: Configuration at phone or DN level will override the one at template level

Configuration Template

ephone-template template-tag
 [command]
!
ephone phone-tag
 ephone-template template-tag
!
ephone-dn-template template-tag
 [command]
!
ephone-dn dn-tag
 ephone-dn-template template-tag
!
voice register template template-tag
 [command]
!
voice register pool pool-tag
 template template-tag

IP Phone Options

As mentioned before, line keys can have the following functions:

  • Line Buttons
  • Speed Dial Buttons
  • BLF Speed Dial Buttons
  • Feature Buttons
  • URL Service Buttons

The assignment of functions to keys is following first configured fist assigned model. In CME 8.6, you can define which keys can perform which functions using button-layout feature.

ephone template template-tag
 button-layout [button-string] [button-type]
!
ephone phone-tag
 ephone-template template-tag
!
voice register template template-tag
 button-layout [button-string] [button-type]
!
voice register pool pool-tag
 template template-tag

E.g.

ephone-template 10
 button-layout 1 line
 button-layout 2,5 speed-dial
 button-layout 3,6 blf-speed-dial
 button-layout 4,7,9 feature
 button-layout 8,11 url
!
voice register template 5
 button-layout 1 line
 button-layout 2,5 speed-dial
 button-layout 3,6 blf-speed-dial
 button-layout 4,7,9 feature-button
 button-layout 8,11 url-button

In CME 8.5, you can block the display of some options from Phone User Interface. Those are:

  • EM
  • MyPhoneApp
  • Local Directory (also if you disable local directory from telephony-service, it won't be displayed)
  • Call History (Missed Calls, Received Calls, Placed Calls)

ephone phone-tag or ephone template template tag
 exclude [em | myphoneapp | directory | call-history]

Note: EM & MyPhoneApp can  be accessed using Services phone key.

Optionally, you can customize the contents of header bar on phone display using the following configuration template:

ephone-dn dn-tag
 description display-text
!
voice register pool pool-tag
 description string

In case the description isn't configured, the number assigned to first button will be used in header bar.

Note: For SIP Phones, this feature is supported for phone models 7960/7940.

You can modify the system message (which appears in prompt and status area)  as well as set a screen sever for the phone using the following configuration template:

telephony-service
 system message text-message
 url idle url idle-timeout seconds          !!!... Specify the location of screen sever image as well as refresh intervals

Another feature is to customize the feature buttons which are Messages, Directories, Services, and Information (i).  The function of those buttons depends on the URL associated to them. We have seen how we changed the URL of Directories feature button to point to CUCM.

telephony-service
 url {directories | information | messages | services} url
!
ephone template template-tag
 url {directories | information | messages | services} url
!
voice register global
 url {directory | service} url

Note: Settings button can't be customized since it depends on the local phone.

Caller ID Blocking

We have higlighted this in different section at IOS level. Here are we considering it again at IOS and CME levels.

dial-peer voice tag [pots | voip]
 clid strip
 clid strip name
!
telephony-service
 caller-id block code code-string          !!!... The user can use a pre-defined code to block caller-id display for certain outbound calls
!
ephone-dn dn-tag
 caller-id block