Upload
vannga
View
226
Download
0
Embed Size (px)
Citation preview
Cisco Mobile Collaboration Solutions
Sriram Sivaramakrishnan, Network Consulting Engineer
CCSCOL-2650
• Introduction to Mobile Collaboration Solutions
• Service Provider Mobile Integration Overview
• Service Provider Mobile Integration Call Flows
• Customer Requirements
• UC Solution
• Troubleshooting issues faced in SMI setup
• Q and A
Agenda
• What’s Fixed Mobile Convergence (FMC) and Fixed Mobile Substitution (FMS) ?
• How does “Forced-On” PBX calls work ?
• How to leverage UC components (Cisco Unified Communications Manager, Cisco Unity Connection, Cisco Unified Border Element, Cisco MediaSense) and Scripting (TCL/Python) to accomplish customer requirements ?
• Advantages of using FMC solution
Session Objectives
Customer Overview
• Customer has remote users who don’t have IP Phones registered to Cisco Unified CM environment
• Remote users use mobile smartphone for all “office” calls
• Calls currently routed and handled by the Telco
Overview Of Current Landscape
Lack of Management, Recording and Reporting for Mobile Users
• Technical Issue: No Jabber on Mobile Device
• User/Management Preference
• UC Connectivity Issues/Security Policies
• Impact to Customer
• Higher cost call activity
• Unable to record calls → Loss of Quality Assurance, Compliance
• Separate call reports → Additional Costs for Compiling and Correlating
• Device-stored Voicemails → Lack of Reporting and Backup
Customer’s Business Issues
Mobile Collaboration SolutionsFixed Mobile Convergence (FMC): Linking User's Enterprise and Mobile
What is fixed mobile convergence?
Integrating or linking a user's mobile device with their enterprise line
Enterprise Line
Mobile Voice
Network
(Carrier)
PSTN
Mobile Device
Mobile Collaboration Solutions
Fixed Mobile Substitution (FMS): Enabling User's Enterprise Line on Mobile Device
What is fixed mobile substitution?
Enterprise Line
Moving or enabling the enterprise line on the user's mobile device
Mobile Voice
Network
(Carrier)
PSTN
Mobile Device
Service Provider Mobile Integration Overview• Service Provider Mobile Integration (SMI) integrates the cell phone (handset) to the
Cisco UC infrastructure in the back end
• Service Provider intercepts call from/to SMI handset and sends it to Cisco UBE
• Cisco UBE integrates with Cisco Unified CM to handle it as a VoIP call
• Sprint solution :
http://shop.sprint.com/mysprint/services_solutions/details.jsp?detId=mobile_integration&catId=solution_ip_convergence_mobility&catName=IP%2520WAN%2520Convergence%2520-%2520Mobility&detName=Mobile%2520Integration
Considerations:
Software/application required on the mobile
device. What device(s) do I need?
WLAN or Mobile Data or both?
Substitution: Do I need an enterprise device?
Answers:
None. Handsets enabled for Provider Mobile
Integration
Connectivity to telco network
No enterprise device is needed on Cisco Unified CM
SMI Call Flows
SMI Call Flows – Inbound Call To SMI
TelcoIP Cloud
PSTN CallerUnified Mobility SNR
SMI Handset
RTP Stream
SMI Call Flows – Outbound Call From SMI
TelcoIP Cloud
PSTN phone
SMI Handset
RTP Stream
SMI Call Flows – Call From SMI To VM Box
TelcoIP Cloud
SMI Handset
RTP Stream
Unity
Cxn
Solution Overview
Customer Requirements
• Recording Prompt for Incoming Calls
• Outbound SMI Calls shouldn’t be recorded
• 25% recording of Incoming Calls
• Cisco Unity Cxn Voicemail boxes for SMI Handsets
• Voicemail Notification for SMI Handsets
• Cisco Unified CM/Cisco Unity Cxn scheduled reporting for SMI Handsets
Customer Requirements
• Recording Prompt for Incoming Calls
• Outbound SMI Calls shouldn’t be recorded
• 25% recording of Incoming Calls
• Cisco Unity Cxn Voicemail boxes for SMI Handsets
• Voicemail Notification for SMI Handsets
• Cisco Unified CM/Cisco Unity Cxn scheduled reporting for SMI Handsets
TCL Script on Cisco UBESIP INVITE for Inbound call to SMI handset SIP INVITE for Outbound call from SMI handset
Received:
INVITE sip:[email protected];user=phone;transport=udp SIP/2.0
To: <sip:[email protected];user=phone>
From: <sip:[email protected]:51040;isup-
oli=61;user=phone>;tag=SDopffd01-127.0.0.1alUtKGp-01044+1+851f006e+16e92d5e
Call-ID: SDopffd01-329fe6994e4cc363069bccef5736419c-c54i532
CSeq: 270039797 INVITE
Max-Forwards: 40
Content-Length: 231
Contact: <sip:[email protected]:5060;transport=udp>
Content-Type: application/sdp
Allow: INVITE, BYE, REGISTER, ACK, OPTIONS, CANCEL, SUBSCRIBE, NOTIFY,
PRACK, INFO, REFER, UPDATE, PUBLISH, MESSAGE
Supported: replaces, timer
P-Asserted-Identity: <sip:[email protected];user=phone>
Expires: 180
Min-SE: 1800
Session-Expires: 1800
Request-Disposition: fork, parallel
Privacy: none
User-Agent: X
P-Charging-Vector: icid-value=032d4c720b58d645c0b398ebd14abbf4
P-Charging-Function-Addresses: ccf="aaa://telco.spectrum.com:3868;transport=tcp"
P-Served-User: sip:[email protected];sescase=term;regstate=unreg
Route: sip:[email protected]:5060;user=phone;lr
<SDP>
Received:
INVITE sip:[email protected];user=phone;transport=udp SIP/2.0
Via: SIP/2.0/UDP X.X.X.X:5060;branch=z9hG4bK43o02s105891lj8hn681.1
To: <sip:[email protected];user=phone>
From: <sip:[email protected]:51040;isup-oli=61;user=phone>;tag=SDk6eb501-
127.0.0.1alUtKGp-01042+1+b09c007d+7ce5d92d
Call-ID: SDk6eb501-5529cf273e94e0e3dead001098fc16ba-c54i532
CSeq: 871042177 INVITE
Max-Forwards: 58
Content-Length: 231
Contact: <sip:[email protected]:5060;transport=udp>
Content-Type: application/sdp
Allow: INVITE, BYE, REGISTER, ACK, OPTIONS, CANCEL, SUBSCRIBE, NOTIFY, PRACK,
INFO, REFER, UPDATE, PUBLISH, MESSAGE
Supported: replaces, timer
P-Asserted-Identity: <sip:[email protected];user=phone>
Expires: 180
Min-SE: 1800
Session-Expires: 1800
Request-Disposition: fork, parallel
Privacy: none
User-Agent: X
P-Charging-Vector: icid-value=8a255ede0b5f28c100b3985af13c0781;orig-
ioi=telco.domain.net
P-Charging-Function-Addresses: ccf="aaa://telco.spectrum.com:3868;transport=tcp"
P-Served-User: sip:[email protected];sescase=orig;regstate=unreg
Route: <sip:[email protected]:5060;user=phone;lr>
<SDP>
Customer Requirements
• Recording Prompt for Incoming Calls
• Outbound SMI Calls shouldn’t be recorded
• 25% recording of Incoming Calls
• Cisco Unity Cxn Voicemail boxes for SMI Handsets
• Voicemail Notification for SMI Handsets
• Cisco Unified CM/Cisco Unity Cxn scheduled reporting for SMI Handsets
Media-Forking
Telco IP Cloud
SNR
SMI Handset Call’s RTP Stream
Cisco UBE media
forked stream
PSTN Caller
Record Percentage Of Calls ?
• Multiple Cisco UBE outbound dial-peers with same preference
• Some enabled for media-forking and the rest not set up for media-forking !
• Ensure circular dial-peer hunting on Cisco UBE (‘dial-peer hunt 1’)
Customer Requirements
• Recording Prompt for Incoming Calls
• Outbound SMI Calls shouldn’t be recorded
• 25% recording of Incoming Calls
• Cisco Unity Cxn Voicemail boxes for SMI Handsets
• Voicemail Notification for SMI Handsets
• Cisco Unified CM/Cisco Unity Cxn scheduled reporting for SMI Handsets
Cisco Unified CM / Cisco Unity Cxn design
• Single Number Reach (SNR) on Cisco Unified CM
• Remote Destination (RD)
• Delay Before Ringing Timer = 0
• Answer Too Soon Timer = 0
• Answer Too Late Timer = 23500 msec (23.5 seconds)
• Maximum Wait Time for Desk Pickup on SNR User = 0 seconds
• Voicemail disabled by Telco on the local SMI handsets
• Voicemail boxes created on Cisco Unity Cxn for the SMI numbers
Customer Requirements
• Recording Prompt for Incoming Calls
• Outbound SMI Calls shouldn’t be recorded
• 25% recording of Incoming Calls
• Cisco Unity Cxn Voicemail boxes for SMI Handsets
• Voicemail Notification for SMI Handsets
• Cisco Unified CM/Cisco Unity Cxn scheduled reporting for SMI Handsets
MWI For SMI user ?
SMTP Smart Host (Relay)
SMI Handset Unity Cxn<SMI_Number>@telco.messaging.com
TelcoSMS
• MWI Disabled for Cisco Unity Cxn User
SMI Supported Features
• Recording Prompt for Incoming Calls
• Outbound SMI Calls shouldn’t be recorded
• 25% recording of Incoming Calls
• Cisco Unity Cxn Voicemail boxes for SMI Handsets
• Voicemail Notification for SMI Handsets
• Cisco Unified CM/Cisco Unity Cxn scheduled reporting for SMI Handsets
Reporting Requirements
• Avg # of Calls Handled/Placed per SMI Handset ?
• # of Incoming Calls to SMI Handsets rolling over to voicemail ?
• Avg # of Voicemails left for SMI Handsets ?
• Promptness of SMI Users in checking their voicemails ?
• Promptness of SMI Users in returning calls based on voicemails ?
Reporting Requirements
• Avg # of Calls Handled/Placed per SMI Handset ?
• # of Incoming Calls to SMI Handsets rolling over to voicemail ?
• Avg # of Voicemails left for SMI Handsets ?
• Promptness of SMI Users in checking their voicemails ?
• Promptness of SMI Users in returning calls based on voicemails ?
Cisco Unified CM Reporting
• Call Detail Records (CDR) !
• Configure external server to push raw CDR files out to, from the CDR Repository (Cisco Unified CM Publisher)
Reporting Requirements
• Avg # of Calls Handled/Placed per SMI Handset ?
• # of Incoming Calls to SMI Handsets rolling over to voicemail ?
• Avg # of Voicemails left for SMI Handsets ?
• Promptness of SMI Users in checking their voicemails ?
• Promptness of SMI Users in returning calls based on voicemails ?
Python Script Host (PSH)
Schedule Script On PSH
Email Option on PSH
Reporting Requirements
• Avg # of Calls Handled/Placed per SMI Handset ?
• # of Incoming Calls to SMI Handsets rolling over to voicemail ?
• Avg # of Voicemails left for SMI Handsets ?
• Promptness of SMI Users in checking their voicemails ?
• Promptness of SMI Users in returning calls based on voicemails ?
Customer Requirements
• Recording Prompt for Incoming Calls
• Outbound SMI Calls shouldn’t be recorded
• 25% recording of Incoming Calls
• Cisco Unity Cxn Voicemail boxes for SMI Handsets
• Voicemail Notification for SMI Handsets
• Cisco Unified CM/Cisco Unity Cxn scheduled reporting for SMI Handsets
Troubleshooting
Some Troubleshooting Pointers
Scenario Underlying Issue Resolution
Custom call handling None TCL script on Cisco UBE
SMI user tries to answer call
immediately when call rings, but
call is disconnected
None. Single Number Reach
functionality to prevent call from
going to cell phone’s voicemail
Voicemail on SMI cell phones
are disabled by Telco – so, set
the ‘Answer Too Soon’ timer on
Remote Destination (RD) config
from default 1500 msec to 0
msec
If SMI user hangs up, caller
hears Music on Hold for a few
seconds and call disconnects
None. Single Number Reach
functionality to transfer call from
cell phone (RD) to desk phone
Cisco Unified CM Administration
> User Management > End
User > set the ‘Maximum Wait
Time for Desk Pickup’ field
from default 10000 to 0
Bulk disabling MWI notification
for SMI users
Bulk Edit from Cisco Unity Cxn
GUI is not an option
Python Script !
Solution Review
FMC bridges the gap between a company’s fixed and mobile workforces
Leverages existing Cisco UC Investment
Forces mobile calls ‘On-Net’ for Monitoring, Recording and Reporting
Custom Call Handling for Mobile Users
Centralized Voicemail
FMC Review
• What problems are we solving for the customer ?
• Alternative to Jabber-on-mobile
• Platform to leverage UC infrastructure and provide custom reports
• Advantages to the customer• Cisco Mobility to integrate Mobile and Desk phone
• Reduced costs
• Better able to understand the customer experience
• Enabling better customer service
The Customer Opportunity
• Challenges with the solution ?
• 911 call from SMI phones will not be routed through UC setup
• More points of failure (Telco / UC)
• MWI is an SMS
• Careful planning of Cisco UBE / MediaSense capacity
Caveats
• Are the services specific to any geography?
• FMC generally is a global feature set
• Unified Mobility on Cisco Unified CM universally available
• Case study is US-based
• Sprint and AT&T – service providers used by customer
• Providers outside the US also offer FMC/Forced-On-PBX services
Services
The Key Takeaways of this presentation were:
FMC/SMI to route all remote users’ calls through UC setup
Single Number Reach (SNR) on Cisco Unified CM to route calls to remote users
TCL script on Cisco UBE for custom call handling
Cisco UBE Media Forking and MediaSense to record calls
Cisco Unity Cxn for voicemails, MWI as SMS
Python Scripting Host (PSH) for custom Voicemail reports
Key Takeaways
Cisco Live San Diego Breakout Sessions
BRKUCC-2060 - Cisco Enterprise Mobile Collaboration (Tuesday, June 9, 8 AM – 10 AM)
Presenter – Matthew Jordy, TME
BRKUCC-2932 - Troubleshooting SIP with Cisco Unified Communications (Tuesday, June 9, 8 AM – 10 AM)
Presenter – Paul Giralt, DSE
BRKUCC-2934 - Implementation and Management of Cisco Unified Border Element(CUBE) Enterprise (Tuesday, June 9, 1 PM – 3 PM)
Presenters – Hussain Ali, TME and John Vickroy, PM
BRKUCC-2270 - Network Media Recording and Streaming with Cisco MediaSense(Wednesday, June 10, 8 AM – 10 AM)
Presenter – Christopher Ward, TME
BRKCCT-2050 – Building, recording and monitoring applications with the MediaSenseAPI (Wednesday, June 10, 1 PM – 3 PM)
Presenter – Ken Rehor, PM
Additional Resources
Summary
Business need for FMC :
Lack of Management, Recording and Reporting for Mobile Users
Technical Issue: No Jabber on Mobile Device
User/Management Preference
UC Connectivity Issues/Security Policies
Impact to Customer
Higher cost call activity
Unable to record calls → Loss of Quality Assurance, Compliance
Separate call reports → Additional Costs for Compiling and Correlating
Device-stored Voicemails → Lack of Reporting and Backup
Summary (1 of 3)
What problems are we solving for the customer ?
FMC bridges the gap between a company’s fixed and mobile workforces
Alternative to Jabber-on-mobile
Platform to leverage UC infrastructure and provide custom reports
Advantages to the customer Reduced costs
Better able to understand the customer experience
Enabling better customer service
Summary (2 of 3)
• SMI Supported Features
• Recording Prompt for Incoming Calls → TCL script on Cisco UBE
• Outbound SMI Calls shouldn’t be recorded → TCL script on Cisco UBE
• 25% recording of Incoming Calls → Dial-peers on Cisco UBE,Media Forking, MediaSense
• Unity Cxn Voicemail boxes for SMI Handsets → Unity Cxn VM / SNR on
Cisco Unified CM
• Voicemail Notification for SMI Handsets → SMTP notification
• Cisco UCM scheduled reporting for SMI Handsets → Cisco Unified CM CDRs
• Unity Cxn scheduled reporting for SMI Handsets → Python Scripting Host (PSH)
Summary (3 of 3)
Participate in the “My Favorite Speaker” Contest
• Promote your favorite speaker through Twitter and you could win $200 of Cisco Press products (@CiscoPress)
• Send a tweet and include
• Your favorite speaker’s Twitter handle @sriram3007
• Two hashtags: #CLUS #MyFavoriteSpeaker
• You can submit an entry for more than one of your “favorite” speakers
• Don’t forget to follow @CiscoLive and @CiscoPress
• View the official rules at http://bit.ly/CLUSwin
Promote Your Favorite Speaker and You Could Be a Winner
Complete Your Online Session Evaluation
Don’t forget: Cisco Live sessions will be available for viewing on-demand after the event at CiscoLive.com/Online
• Give us your feedback to be entered into a Daily Survey Drawing. A daily winner will receive a $750 Amazon gift card.
• Complete your session surveys though the Cisco Live mobile app or your computer on Cisco Live Connect.
Continue Your Education
• Demos in the Cisco campus
• Walk-in Self-Paced Labs
• Table Topics
• Meet the Engineer 1:1 meetings
• Related sessions
Thank you
Supporting Slides
SMI Call Flow - Overview
• Telco intercepts call from/to SMI handset and sends it to CUBE
• CUBE routes call to CUCM
• For calls from SMI Handset, CUCM then routes the call based on the dial plan
• For calls intended to SMI Handset, CUCM uses Single Number Reach (SNR) – RDP/RD conceptto route the call back to CUBE and Telco IP cloud.
• SIP OPTIONS PING between CUBE and Telco, to ensure SIP connectivity between Telco andCisco UC infrastructure.
• Signaling is all SIP !
• Signaling “anchored” through CUCM
• Media flow-through on CUBE (RTP media “anchored” through CUBE)
SMI Call Flows - Review• Call to SMI Handset
• PSTN phone Telco IP Cloud CUBE CUCM RDP/RD CUBE Telco IP Cloud SMI Handset
• Call from SMI Handset
• SMI Handset Telco IP Cloud CUBE CUCM Dial Plan Egress GW / internal number
• Call from SMI Handset to Voicemail
• SMI Handset Telco IP Cloud CUBE CUCM TP Voicemail pilot SIP/SCCP to CUC
SMI – Digit Prefix
• How would CUBE know it’s an SMI-based call or a regular call ?
• Telco adds a prefix (467) to every SMI-based call (from/to SMI handset) and sends it to CUBE
• How would Telco know to send the call to SMI Handset when call is hairpinned through CUBE ?
• CUCM changes the prefix (99999) for call to SMI handset and sends it to Telco IP cloud. Once Telco sees the prefix it is expecting (99999), it will route the call to the SMI handset
Inbound call to SMI - Example
TelcoIP Cloud
PSTN Caller
SNRRDP – 4679195740870RD – 999999195740870
SMI Handset9195740870
RTP Stream
SMI number being called - 9195740870
Called number :
9195740870
Called number :
4679195740870
Called number :
999999195740870
Called number :
999999195740870
Called number :
4679195740870
Strip 99999 prefix and
send to SMI handset
Outbound call from SMI - Example
TelcoIP Cloud
PSTN phone 4085551234
SMI Handset
RTP Stream
Called number :
4085551234
Called number :
4674085551234
Called number :
4674085551234
Called number :
4085551234
Strip 467, append 91 and
route based on existing Dial
Plan (TP, RP)
SMI Handset to VM box - Example
TelcoIP Cloud
SMI Handset
RTP Stream
CUC
Called number :
9193921111
VM Pilot number – 9193921111
Called number :
4679193921111
Called number :
4679193921111
Strip 467, send to VM pilot
number
TCL Scripting on CUBE
Why TCL ?
Provides call-handling options
Configured on the inbound dial-peer on CUBE, matched when call comes in from Telco IP Cloud
Config :
application
service smi flash:smirecording.tcl
dial-peer voice 101 voip
description “Inbound dial-peer with recording prompt”
service smi
incoming called-number <smi-number>
TCL Enhancements
Depending on the direction of the call wrt SMI handset, TCL script can handle and route the call differently
Outbound Call from SMI Handset : P-Charging-Vector field has “orig-ioi=telco.domain.net”
Inbound Call for non-SMI Handset : P-Charging-Vector field does not have “orig-ioi=telco.domain.net”
TCL Script
Accept incoming call
Extract P-Charging-Vector and Called Party Number from SIP INVITE message
If P-Charging-Vector field has “orig-ioi=telco.domain.net” (outbound call from SMI Handset)
Do not play recorded prompt
Send call to CUCM
If P-Charging-Vector field does not have “orig-ioi=telco.domain.net” (call from non-SMI Handset)
Play recorded prompt
Send call to CUCM
Header-passingPrior to 15.x IOS version, voice applications running on CUBE did not have access to headers sent in SIP
requests
SIP Header Support introduces a new command, the header-passing command, to either enable or
disable passing headers from INVITE messages to applications.
The SIP Header Passing feature also provides enhanced inbound and outbound dial-peer matching
services
Config :
voice service voip
sip
header-passing
header-passing enabled header-passing disabled
‘set calledparty [infotag get
leg_dnis]’ returns the SIP URI
‘set calledparty [infotag get leg_dnis]’ returns the
called party number
Enhanced Scriptproc init { } {
global param
global calledparty
set param(interruptPrompt) true
set param(abortKey) *
set param(terminationKey) #
set param(maxDigits) 12
set param(interDigitTimeout) 10
}
proc act_Accept_Inbound_Call_Leg { } {
global calledparty
set legdn [infotag get leg_dn_tag]
puts "leg dn is $legdn"
set dnisuri [infotag get leg_dnis]
puts "original called party uri is $dnisuri"
regexp {sip:(.*)@.*} $dnisuri matchall calledparty
puts "matchall is $matchall"
puts "called party is $calledparty"
set vector [infotag get leg_proto_headers P-Charging-Vector]
puts "vector is $vector"
leg setupack leg_incoming
leg proceeding leg_incoming
leg connect leg_incoming
if {[regexp {orig-ioi=telco.domain.net} $vector] == 1} then {
timer start leg_time 1 leg_incoming
} else {
media play leg_incoming "flash:/RecordingWarning.wav“
regsub {467} $calledparty 555 calledparty
puts "New called number is $calledparty"
}
}
proc act_Connect_Outbound_Call_Leg { } {
global calledparty
puts "Final called party is $calledparty"
leg setup $calledparty callinfo leg_incoming
}
proc act_Is_Call_Setup_Done { } {
set status [infotag get evt_status]
if { $status == "ls_000" } {
call active
} else {
puts "Call Connection Failure"
call close
}
}
proc act_Cleanup { } {
call close
}
init
#----------------------------------
# State Machine
#----------------------------------
set SMIsFSM(st_Call_Init,ev_disconnected) "act_Cleanup,st_Call_Disconnected"
set SMIsFSM(st_Call_Init,ev_setup_indication) "act_Accept_Inbound_Call_Leg,st_Call_Outbound_Call_Leg"
set SMIsFSM(st_Call_Outbound_Call_Leg,ev_media_done) "act_Connect_Outbound_Call_Leg,st_Call_Active"
set SMIsFSM(st_Call_Outbound_Call_Leg,ev_leg_timer) "act_Connect_Outbound_Call_Leg,st_Call_Active"
set SMIsFSM(st_Call_Active,ev_disconnected) "act_Is_Call_Setup_Done,st_Call_Disconnected"
set SMIsFSM(st_Call_Disconnected,ev_disconnected) "act_Cleanup,same_state"
set SMIsFSM(st_Call_Disconnected,ev_media_done) "act_Cleanup,same_state"
set SMIsFSM(st_Call_Disconnected,ev_disconnect_done) "act_Cleanup,same_state"
set SMIsFSM(st_Call_Disconnected,ev_leg_timer) "act_Cleanup,same_state"
fsm define SMIsFSM st_Call_Init
(contd)..
Clipped Recording Prompt
But ….
The recording prompt played from CUBE was clipped for the calling party. For example, if the recorded prompt was “Your call might be recorded”, the calling party heard “might be recorded” when calling a SMI handset
From packet captures from CUBE, CUBE was playing the prompt fully but the RTP channel wasn’t open all the way through to the calling party
Even though it doesn’t seem to be a CUBE issue, can we remediate the issue from CUBE side ?
YES !
Introduce a delay between the Connect and the Recording Prompt being played
Failure CallsHow to handle calls if
SMI dialed an invalid / inaccessible number ?
Mobile user dialed an SMI extension which is not yet configured on the CUCM ?
SMI dialed an invalid / inaccessible number ?
Do not connect the incoming call» if {[regexp {orig-ioi=telco.domain.net} $vector] == 1} then {
» timer start leg_time 1 leg_incoming
» }
If CUBE gets 404 Not Found from CUCM and hunting options have been exhausted, event ‘ev_setup_done’ is generated.
Separate functions for calls from SMI and calls to SMI» proc act_Is_Call_Setup_Done { }
» proc act_Is_Call_to_SMI_Setup_Done { }
Separate FSM states for calls from SMI and calls to SMI» set TopFSM(st_Play_Prompt,ev_media_done) "act_Connect_Outbound_Call_Leg,st_Call_to_SMI"
» set TopFSM(st_Call_Active,ev_setup_done) "act_Is_Call_Setup_Done,st_Call_Disconnected"
» set TopFSM(st_Call_to_SMI,ev_setup_done) "act_Is_Call_to_SMI_Setup_Done,st_Call_Disconnected"
Failure Calls (contd..)
Mobile user dialed an SMI extension which fails ?
Play message that the call failed•proc act_Is_Call_to_SMI_Setup_Done { } {
• set status [infotag get evt_status]
• puts "SMI Call Status is $status"
• if { $status == "ls_000" } {
• puts "In SMI IF Condition"
• puts "The call was successfully setup"
• } else {
• puts "Call to SMI Connection Failure"
• media play leg_incoming "flash:/Error_Prompt.wav"
• }
•}
FSM state for this scenario
• set TopFSM(st_Call_to_SMI,ev_setup_done) "act_Is_Call_to_SMI_Setup_Done,st_Call_Disconnected“
• set TopFSM(st_Call_Disconnected,ev_disconnected) "act_Cleanup,same_state"
• set TopFSM(st_Call_Disconnected,ev_disconnect_done) "act_Cleanup,same_state"
Final TCL Scriptproc init { } {
global param
global calledparty
global matchall
set param(interruptPrompt) true
set param(abortKey) *
set param(terminationKey) #
set param(maxDigits) 12
set param(interDigitTimeout) 10
}
proc act_Accept_Inbound_Call_Leg { } {
global calledparty
global matchall
set legdn [infotag get leg_dn_tag]
puts "leg dn is $legdn"
set dnisuri [infotag get leg_dnis]
puts "original called party uri is $dnisuri"
regexp {sip:(.*)@.*} $dnisuri matchall calledparty
puts "matchall is $matchall"
puts "called party is $calledparty"
set vector [infotag get leg_proto_headers P-Charging-Vector]
puts "vector is $vector"
leg setupack leg_incoming
leg proceeding leg_incoming
if {[regexp {orig-ioi=telco.domain.net} $vector] == 1} then {
timer start leg_time 1 leg_incoming
} else {
leg alert leg_incoming
leg connect leg_incoming
regsub {467} $calledparty 555 calledparty
puts "New called number is $calledparty"
puts "Starting 1 second DELAY_TIMER"
timer start named_timer 1 DELAY_TIMER
}
}
proc act_Play_Prompt { } {
puts "Going to play media that call will be recorded"
media play leg_incoming "flash:/RecordingWarning.wav"
}
proc act_Connect_Outbound_Call_Leg { } {
global calledparty
puts "Final called party is $calledparty"
leg setup $calledparty callinfo leg_incoming
}
proc act_Is_Call_Setup_Done { } {
set status [infotag get evt_status]
puts "Status is $status"
if { $status == "ls_000" } {
puts "The call was successfully setup"
} else {
puts "Call Connection Failure"
call close }
}
proc act_Is_Call_to_SMI_Setup_Done { } {
set status [infotag get evt_status]
puts "SMI Call Status is $status"
if { $status == "ls_000" } {
puts "The call was successfully setup"
} else {
puts "Call to SMI Connection Failure“
media play leg_incoming "flash:/Error_Prompt.wav“ }
}
proc act_Cleanup { } {
call close
}
Init
#--State Machine--------------------------------
set TopFSM(st_Call_Init,ev_disconnected) "act_Cleanup,st_Call_Disconnected"
set TopFSM(st_Call_Init,ev_setup_indication) "act_Accept_Inbound_Call_Leg,st_Call_Outbound_Call_Leg"
set TopFSM(st_Call_Outbound_Call_Leg,ev_leg_timer) "act_Connect_Outbound_Call_Leg,st_Call_Active"
set TopFSM(st_Call_Outbound_Call_Leg,ev_named_timer) "act_Play_Prompt,st_Play_Prompt"
set TopFSM(st_Play_Prompt,ev_media_done) "act_Connect_Outbound_Call_Leg,st_Call_to_SMI"
set TopFSM(st_Call_Active,ev_disconnected) "act_Is_Call_Setup_Done,st_Call_Disconnected"
set TopFSM(st_Call_Active,ev_setup_done) "act_Is_Call_Setup_Done,st_Call_Disconnected"
set TopFSM(st_Call_to_SMI,ev_setup_done) "act_Is_Call_to_SMI_Setup_Done,st_Call_Disconnected"
set TopFSM(st_Call_Disconnected,ev_media_done) "act_Cleanup,same_state"
set TopFSM(st_Call_Disconnected,ev_disconnected) "act_Cleanup,same_state"
set TopFSM(st_Call_Disconnected,ev_disconnect_done) "act_Cleanup,same_state"
set TopFSM(st_Call_Disconnected,ev_leg_timer) "act_Cleanup,same_state"
fsm define TopFSM st_Call_Init
(contd)..
MediaSense and CUBE Media Forking
Cisco MediaSense• Cisco’s recording solution
• SIP signaling to CUBE / CUCM
• Record both RTP streams (customer RTP stream and agent RTP stream) of the call
• Options :
• MediaSense SRE node
• MediaSense Primary/Secondary node
• MediaSense Expansion node
• Max 5 MediaSense nodes in a cluster – Primary, Secondary and 3 Expansion nodes
• Each MediaSense node (Primary/Secondary/Expansion) can store up to 12 TB of recorded media
• Recorded media is not replicated across MediaSense nodes in the cluster
• MediaSense node handling SIP signaling will direct RTP stream to a different MediaSense node if its storage space is getting full
CUBE Media Forking
• CUBE can fork media to recording server
• Can be used in a network-based recording solution to fork active SIP-SIP calls traversing through it.
• Feature supported from Cisco IOS release 15.2(1)T and later
• Supports Cisco’s Open Recording Architecture (ORA)
• CUBE at the network layer would act as a Recording Client
• Cisco MediaSense will act as a Recording Server at the Services Layer
CUBE Config
dial-peer voice 123456 voip
description "Dialpeer pointing to the MediaSense primary recording server"
destination-pattern 99999
session protocol sipv2
session target ipv4:X.X.X.X
session transport tcp
!
dial-peer voice 123457 voip
description "Dialpeer pointing to the MediaSense secondary recording server"
preference 1
destination-pattern 99999
session protocol sipv2
session target ipv4:X.X.X.X
session transport tcp
media class 3
recorder profile 10000
!
media profile recorder 10000
media-recording 123456 123457
!
dial-peer voice 208 voip
description "Call leg from CUBE to Telco to SMI User”
preference 1
destination-pattern ^99999[2-9]..[2-9]......$
session protocol sipv2
session target ipv4:X.X.X.X
voice-class sip profiles 764
voice-class sip bind control source-interface Loopback0
voice-class sip bind media source-interface Loopback0
media-class 3
dtmf-relay rtp-nte
codec g711ulaw
no vad
Record Percentage Of Calls ?
dial-peer voice 208 voip
description "Call leg from CUBE to Telco to SMI User – media forking enabled"
preference 1
destination-pattern ^99999[2-9]..[2-9]......$
session protocol sipv2
media-class 3
!
dial-peer voice 209 voip
description "Call leg from CUBE to Telco to SMI User – no media forking"
preference 1
destination-pattern ^99999[2-9]..[2-9]......$
session protocol sipv2
dial-peer voice 210 voip
description "Call leg from CUBE to Telco to SMI User – no media forking"
preference 1
destination-pattern ^99999[2-9]..[2-9]......$
session protocol sipv2
!
dial-peer voice 211 voip
description "Call leg from CUBE to Telco to SMI User – no media forking”
preference 1
destination-pattern ^99999[2-9]..[2-9]......$
session protocol sipv2
!
dial-peer hunt 1
*** dial-peer hunt enums in the Notes of Slide ***
Calls to SMI Supervisors shouldn’t be recorded ?
Solution : Configure specific outbound dial-peer for every SMI Supervisor. Do NOT enable media forking for these dial-peers !
Dial-peer 211 has no ‘media-class’ configuration on it. Calls to this SMI Supervisor will not be recorded.
dial-peer voice 211 voip
description "Call leg from CUBE to Telco to SMI Supervisor"
huntstop
destination-pattern ^99999XXXXXXXXXX$
session protocol sipv2
session target ipv4:X.X.X.X
voice-class sip asserted-id pai
voice-class sip profiles 764
voice-class sip options-keepalive
voice-class sip bind control source-interface Loopback0
voice-class sip bind media source-interface Loopback0
dtmf-relay rtp-nte
codec g711ulaw
no vad
MWI For SMI user ?
• SMI user is remote to UC infrastructure, so traditional MWI notification will not work
• SMTP Notification on CUC for SMI user !
• ‘To’ address = <SMI_Number>@telco.messaging.com
• telco.messaging.com converts email into SMS for SMI phone number
• Message Text will be something generic like “New Voicemail has been received. Please dial 919-392-1111 to listen to it.”
• 919-392-1111 will be a hyperlink on SMI handset, to dial
• Disable MWI notification for the CUC users
Unity Connection Reporting
• From CUCM CDR, can see if call rolled over to voicemail
• However, no way to ascertain if voicemail was actually left or not
• Option :
• CUC Reports !
• But …
• No automated way from CUC GUI to schedule voicemail report generation
• No automated way from CUC GUI to export voicemail records
Solution :
• Python Scripting Host (PSH) for automating reports
Unity Connection Reporting - Python Scripting Host (PSH)
• http://www.ciscounitytools.com/Applications/CxN/PythonScriptingHost/PythonScriptingHost.html
• Uses CUC DB Proxy service to connect to the CUC database
• Write your own Python script to accomplish the task !
• For Voicemail reports :• Create CSV file with SMI user aliases
• Pass in CSV file to the script
• Connect to CUC Reporting Database (UnityRptDB)
• Pull the voicemail report for every SMI user in the CSV file
• Store the output in a file
• Run VM report on both CUC Pub and Sub, as Reporting DB is not replicated between Pub and Sub
How To Look At CUC DB Structure - CUDLI
Combining CUCM and CUC Reports
How prompt are the SMI agents in returning their voicemails ?
From PSH report, check calling and called party on Voicemail for SMI user
On CUCM CDR, swap the calling and called party numbers and look for call from SMI to caller who
left voicemail
Based on CDR times on PSH and CDR reports, calculate the time lag between time of voicemail
and time of call back => determines promptness of SMI agents in returning their voicemails
However …
A good but not foolproof measure of promptness
Voicemail might have mentioned a different number to call back on
Voicemail might have been a call which didn’t need a call back
In essence :
Combining CUCM and CUC reports provides leverage to customers
• Providers outside the US also offer FMC/Forced-On-PBX services.
• Vodafone One Net (http://www.vodafone.co.uk/business/products-and-services/unified-communication/one-net-business/one-net-business-4/index.htm)
• BT One (http://www.globalservices.bt.com/uk/en/products_category/unified_communications_services)
Services
More Troubleshooting PointersScenario Underlying Issue Resolution
How are 911 calls handled in SMI setup ? None 911 calls are routed directly through Telco
network. 911 calls are not sent to Cisco
UBE/Cisco Unified CM setup by telco.
Caveat – 911 calls from SMI users will not
be captured on Cisco Unified CM CDR.
Bulk modifying SMTP Message Text when a
new voicemail is received
Bulk Edit from Cisco Unity Cxn GUI is not an
option
Python Script !
Call to SMI number results in fast busy or
prompt “The number you are calling is
unavailable right now”
Call not reaching Cisco UC setup Troubleshoot connectivity between Telco
and CUBE
No VM Notification text messages received
by the SMI user
SMTP Notification from CUC via Telco
network did not reach the SMI phone
Troubleshoot SMTP connectivity from CUC
to SMTP Relay, and Telco to translate to
SMS
More Troubleshooting Pointers (contd…)Scenario Underlying Issue Resolution
Duplicate Call Detail Records (CDR) for
some calls to SMI that rolled over to VM
None, as per design CUBE receives 404 Not Found from Telco
and sends that to CUCM. CDR created for
failed call by design
Python Scripting Host not logging in to CUC
Database
CUC Database Proxy Service may have
stopped
Advanced > Connection Administration >
Database proxy: Service Shutdown Timer (in
Days) – 999
This value keeps decrementing every day.
Activate and Start Database Proxy Service
Database Proxy Service will be stopped if
the CUC server is rebooted. Remember
to restart Database Proxy Service after a
CUC server reboot.
Recording playback not working from Cisco
MediaSense Search and Play
Firewall Ports not opened Documentation bug “CSCuq13398 -
Recording Playback ports not documented
in MediaSense Port Usage table”
From tests,
- 16384-32767 (RTP) used as the RTP
source port from MediaSense servers to the
MediaPlayer
- 16384-65535 (RTP) will be used the RTP
destination port on the web browser running
the MediaPlayer