0% found this document useful (0 votes)
230 views23 pages

Call Routing Logic in Unity Connection & MWI Tshooting

Unity Connection uses call routing logic to determine how incoming calls are handled. It checks whether calls contain a redirecting ID, treating those as forwarded calls and others as direct calls. Based on this, appropriate direct or forwarded routing rules are applied. Direct rules route calls from users and unknown callers to sign-in or opening greetings, while forwarded rules route calls from user extensions to user greetings or from unknown extensions to the opening greeting. Unity Connection then checks IDs against its database and applies rules to route calls accordingly.

Uploaded by

Safari Books
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
230 views23 pages

Call Routing Logic in Unity Connection & MWI Tshooting

Unity Connection uses call routing logic to determine how incoming calls are handled. It checks whether calls contain a redirecting ID, treating those as forwarded calls and others as direct calls. Based on this, appropriate direct or forwarded routing rules are applied. Direct rules route calls from users and unknown callers to sign-in or opening greetings, while forwarded rules route calls from user extensions to user greetings or from unknown extensions to the opening greeting. Unity Connection then checks IDs against its database and applies rules to route calls accordingly.

Uploaded by

Safari Books
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 23

Call Routing Logic in Unity Connection

This document is to help you understand the call routing logic used by Unity Connection.  

Flow diagram

Step 1:

As soon as unity connection gets the call from CUCM, it checks whether the call contains a redirecting ID
or not. If the call contains a redirecting ID then unity connection treats it as a forwarded call and if not
then it is a direct call for unity.
Step 2:

Based on whether the call is forwarded or direct call, CUC will apply the appropriate routing rule.

==> Direct routing rules handle calls from users and unidentified callers, which are dialed directly to
Unity Connection. The default rules for direct calls are:

(a)  Attempt Sign-In—Calls from users are routed to the user sign-in conversation.

(b) Opening Greeting—Calls from unidentified callers are routed to the Opening Greeting.

==> Forwarded routing rules handle calls that are forwarded to Unity Connection either from a user
extension or from an extension that is not associated with a user account (such as a conference room).
The default rules created by CUC for forwarded calls are:
(a)  Attempt forward—All calls forwarded from a user extension are routed to the user greeting.
(b) Opening Greeting—Calls forwarded from an extension that is not associated with a user account is
routed to the Opening Greeting. Opening greeting routing rule just routes the call to the default system
call handler "Opening greeting".

Step 3:
Unity connection then checks the redirecting ID or the calling ID into its database to see whether it
recognizes the number or not and based on that it will apply the routing rule. If for a forwarded call the
unity connection does not recognize the caller ID it selects the routing rule "opening greeting" and
similarly if a user presses the message button on the phone, the call would come to CUC as a direct call
with no redirecting ID and if the caller ID exists in the unity database CUC will select the routing rule
"Attempt SignIn".

Note: Please do not confuse "opening greeting" routing rule with the Opening greeting call handler.
They both are different but used together to answer calls from unidentified callers.

Port Status Monitor:


The best tool used in troubleshooting is remote port status monitor, which can download from the link
below:
http://www.ciscounitytools.com

In our environment, you can find Remote port status monitor on the Tool server 171.194.9.88/8.88

Below are some of the lab examples explaining the port status monitor output for different types of
calls:
(a). Direct call:
1. Direct call from an identified caller when he presses the message button on the phone:
06:22:18, New Call, CallerId=1000, CalledId=7777,  RedirectingId=,  AltRedirectingId=,  Origin=16, 
Reason=1,  CallGuid=8247897155A44071929903606F086C82,  CallerName=,  LastRedirectingId=, 
AltLastRedirectingId=,  LastRedirectingReason=1,  PortDisplayName=CUCMSIP-1-001,[Origin=Unknown],
[Reason=Direct]

In the above output, you can see that the call has no redirecting ID so unity treats it as a direct call. The
port, which answered the call, is "CUCMSIP-1-001".
06:22:18, Changed the current search by extension search space from <No scope> to 'cuc Search Space'
({30c32fdd-7b96-4bd3-ab23-699d7bc745eb})
06:22:18, AttemptSignIn
06:22:18, State - AttemptSignIn.cde!Dummy
06:22:18, Event is [NULL]
06:22:18, SubSignIn
06:22:18, Subscriber Sign-In
06:22:18, State - SubSignIn.cde!AnswerPhone
06:22:18, Event is [TrueEvent]
06:22:18, State - SubSignIn.cde!AuthenticateUser
06:22:18, -->SubAuthenticate

2. Direct call from a user who exists on CUCM but does not exist in Unity connection:
Call, CallerId=1002, CalledId=7777,  RedirectingId=,  AltRedirectingId=,  Origin=16,  Reason=1, 
CallGuid=E42E8E826A89434887A5F74B7F372D3E,  CallerName=,  LastRedirectingId=, 
AltLastRedirectingId=,  LastRedirectingReason=1, PortDisplayName=CUCMSIP-1-004,[Origin=Unknown],
[Reason=Direct]

In the above output you can see that the call has no redirecting ID so unity treats it as a direct call. The
port which answered the call is "CUCMSIP-1-004".
06:26:51, Changed the current search by extension search space from <No scope> to 'cuc Search Space'
({30c32fdd-7b96-4bd3-ab23-699d7bc745eb})
06:26:51, Changed the current search by name search space from <No scope> to 'cuc Search Space'
({30c32fdd-7b96-4bd3-ab23-699d7bc745eb})
06:26:51, AttemptSignIn  
#### Attempt Signin here is not the Attempt signin forward routing rule but is referring to the
conversation defined by default under the Attempt Sign in routing rule####
06:26:51, State - AttemptSignIn.cde!Dummy
06:26:51, Event is [NULL]
06:26:51, PHTransfer
06:26:51, State - PHTransfer.cde!LoadInfo
06:26:51, Event is [TrueEvent]
06:26:51, PHGreeting
06:26:51, State - PHGreeting.cde!PlayGreeting
06:26:51, Call answered if needed
06:26:51, playing greeting for Call Handler:  Opening Greeting  

Since the user does not exist in CUC, call gets transfered to opening greeting default system call handler

(b). Forwarded call:


1. Call forward no answer to Voice Mail from a user whose mailbox is there on CUC:
06:41:04, New Call, CallerId=1002, CalledId=7777,  RedirectingId=1000,  AltRedirectingId=,  Origin=16, 
Reason=4,  CallGuid=F57EEA0314C94CBD9579A9EA374C7222,  CallerName=,  LastRedirectingId=, 
AltLastRedirectingId=,  LastRedirectingReason=4, PortDisplayName=CUCMSIP-1-007,[Origin=Unknown],
[Reason=Forward No Answer]
The above output shows that the call has a redirecting ID so unity treats it as a forwarded call. The port
which answered the call is "CUCMSIP-1-007 and the reason for redirection is also there which is
"Forward No Answer".
06:41:05, Changed the current search by extension search space from <No scope> to 'cuc Search Space'
({30c32fdd-7b96-4bd3-ab23-699d7bc745eb})
06:41:05, Changed the current search by name search space from <No scope> to 'cuc Search Space'
({30c32fdd-7b96-4bd3-ab23-699d7bc745eb})
06:41:05, AttemptForward
06:41:05, State - AttemptForward.cde!Dummy
06:41:05, Event is [NULL]
06:41:05, PHTransfer
06:41:05, State - PHTransfer.cde!LoadInfo
06:41:05, Event is [TrueEvent]
06:41:05, PHGreeting
06:41:05, State - PHGreeting.cde!PlayGreeting
06:41:05, Call answered if needed
06:41:05, Playing greeting for Subscriber:  Aseem Annand
### Since user with extension 1000 exists on CUCM, direct forward rule forwards the call to the
Subscriber mailbox ###
2. Port Status monitor output in case of a call to auto attendant:
04:42:18, New Call, CalledId=7777,  RedirectingId=6789,  AltRedirectingId=,  Origin=16,  Reason=4, 
CallGuid=A316F53211264D2BBA6C17ECA6FE4BAA,  CallerName=,  LastRedirectingId=, 
AltLastRedirectingId=,  LastRedirectingReason=4, PortDisplayName=CUCMSIP-1-010,[Origin=Unknown],
[Reason=Forward No Answer]
04:42:18, Changed the current search by extension search space from <No scope> to 'cuc Search Space'
({30c32fdd-7b96-4bd3-ab23-699d7bc745eb})
04:42:18, Changed the current search by name search space from <No scope> to 'cuc Search Space'
({30c32fdd-7b96-4bd3-ab23-699d7bc745eb})
04:42:19, AttemptForward
04:42:19, State - AttemptForward.cde!Dummy
04:42:19, PHTransfer
04:42:19, State - PHTransfer.cde!LoadInfo
04:42:19, Event is [TrueEvent]
04:42:19, PHGreeting
04:42:19, State - PHGreeting.cde!PlayGreeting
04:42:19, Call answered if needed
04:42:19, Playing greeting for Call Handler:  AutoAttendant_Aseanand
Similarly you can collect the outputs for other types of calls as well like Call forward ALL, Call Forward
Busy etc.

Forward Routing Rule remote port monitor sample for Known User in CUC.
01:21:30, New Call, CalledId=1519040000,  RedirectingId=61292265745,  AltRedirectingId=, 
Origin=16,  Reason=4,  CallGuid=094F006C1C7643B2888D80FFED4D8E86,  CallerName=, 
LastRedirectingId=,  AltLastRedirectingId=,  LastRedirectingReason=4, 
PortDisplayName=IPTUC94U2-SGE1-048,[Origin=Unknown],[Reason=Forward No Answer]
01:21:30, AttemptForward
01:21:30, State - AttemptForward.cde!Dummy
01:21:30, Event is [NULL]
01:21:30, PHTransfer
01:21:30, State - PHTransfer.cde!LoadInfo
01:21:30, Event is [TrueEvent]
01:21:30, PHGreeting
01:21:30, State - PHGreeting.cde!PlayGreeting
01:21:30, Call answered if needed
01:21:30, Playing greeting for Subscriber:  Girish Nair
01:21:33, Event is [HangupEvent]
01:21:34, State - PHGreeting.cde!DoHangup
01:21:34, Event is [HangupEvent]
01:21:34, Idle

Forward Routing Rule/Attempt Forward/ >> User Greeting


 
 
05:14:39, New Call, CalledId=1511030000,  RedirectingId=5183838947,  AltRedirectingId=,  Origin=16,  Reason=4, 
CallGuid=D917948A32474BB1A16EAB018C42D863,  CallerName=,  LastRedirectingId=,  AltLastRedirectingId=, 
LastRedirectingReason=4,  PortDisplayName=IPTUC13U2-1-076,[Origin=Unknown],[Reason=Forward No Answer]   
// Call coming in @ IPTUC13U2-1-076
05:14:39, AttemptForward                                                                                                                                                               
//Attempt Forward
05:14:39, State - AttemptForward.cde!Dummy
05:14:39, Event is [NULL]
05:14:39, PHTransfer
05:14:39, State - PHTransfer.cde!LoadInfo
05:14:39, Event is [TrueEvent]
05:14:39, PHGreeting
05:14:39, State - PHGreeting.cde!PlayGreeting                                                                                                                            
//Play Greeting Event
05:14:40, Call answered if needed
05:14:40, Playing greeting for Subscriber:  Carrie Benson                                                                                                         
//Greeting being played
 
05:14:45, No DTMF received
05:14:45, Playing greeting for Subscriber:  Carrie Benson
05:14:54, No DTMF received
05:14:55, Playing greeting for Subscriber:  Carrie Benson
05:14:55, Event is [RecordMsgEvent]
05:14:55, State - PHGreeting.cde!VideoAudioCheck   
05:14:55, Event is [FalseEvent]
05:14:55, State - PHGreeting.cde!CheckForPostGreeting                                                                                                          
//Post Greeting Event
05:14:55, Event is [TrueEvent]                                                                                                                                                         
//There was a post greeting setup “Please do not share account related information…..”
05:14:55, State - PHGreeting.cde!PlayPostGreeting                                                                                                                    
//Post Greeting being played
05:15:06, Event is [NULL]
05:15:06, State - PHGreeting.cde!RecordMsgCheck
05:15:06, Event is [NULL]
05:15:06, State - PHGreeting.cde!RecordMsg                                                                                                                              
//Record Message Event
05:15:12, Event is [TrueEvent]
05:15:12, State - PHGreeting.cde!RunEditMsg
05:15:12, -->MessageEditing
05:15:12,         State - MessageEditing.cde!CheckEditOption
05:15:12,         Event is [TrueEvent]
05:15:12,         State - MessageEditing.cde!PlayAfterMessageEditMenu
05:15:12,         Event is [FalseEvent]
05:15:12,         State - MessageEditing.cde!PlayAfterMessageEditMenu_Audio
05:15:14,         Event is [HangupEvent]
05:15:14,         State - MessageEditing.cde!SetHangupFlag
05:15:14,         Event is [TrueEvent]
05:15:14,         State - MessageEditing.cde!CheckMsgLength
05:15:14,         Event is [ManyEvent]
05:15:14,         State - MessageEditing.cde!SendMsg                                                                                                                   
05:15:14,         Event is [TrueEvent]
05:15:14,         State - MessageEditing.cde!CheckForMsgSentRecording
05:15:14,         Event is [NULL]
05:15:14,         State - MessageEditing.cde!ConfirmSend                                                                                                            
// Message sending confirmed by pressing #
05:15:14,         Event is [HangupEvent]                                                                                                                                            
//Phone hangup
05:15:14, <--MessageEditing
05:15:14, Event is [HangupEvent]
05:15:14, State - PHGreeting.cde!DoHangup
05:15:14, Event is [HangupEvent]
05:15:14, Idle
 
 
Direct Routing Rule >> Identified User >> Sub Sign-in
 
12:56:07, New Call, CalledId=1519040000,  RedirectingId=,  AltRedirectingId=,  Origin=16,  Reason=1, 
CallGuid=0DEFC7540C5548839E5F6521E6C256B2,  CallerName=Alfonso Kong Cher Ooi,  LastRedirectingId=, 
AltLastRedirectingId=,  LastRedirectingReason=1,  PortDisplayName=IPTUC94U2-SGE1-109,[Origin=Unknown],
[Reason=Direct]                                // No Redirecting ID -> Direct Routing Rule
12:56:07, AttemptSignIn                                                                                                                                                                   
//Identified User >> Sign In Attempt
12:56:07, State - AttemptSignIn.cde!Dummy
12:56:07, Event is [NULL]
12:56:07, SubSignIn                                                                                                                                                                           
// Sign In Event
12:56:07, Subscriber Sign-In
12:56:07, State - SubSignIn.cde!AnswerPhone
12:56:07, Event is [TrueEvent]
12:56:07, State - SubSignIn.cde!AuthenticateUser
12:56:07, -->SubAuthenticate                                                                                                                                                          
// Authentication Event
12:56:07,         State - SubAuthenticate.cde!TryCounter
12:56:07,         Event is [NULL]
12:56:07,         State - SubAuthenticate.cde!GatherID
12:56:07,         Event is [FalseEvent]
12:56:07,         State - SubAuthenticate.cde!LoadSubscriberMinimalData
12:56:07,         Event is [NULL]
12:56:08,         State - SubAuthenticate.cde!GatherPIN                                                                                                               
// User is being asked for Pin
12:56:08,         -->SubAuthenticatePW                                                                                                                                            
//Entered Pin is authenticated
12:56:08,                 State - SubAuthenticatePW.cde!ValidatePwd
12:56:14,                 Subscriber sign-in successful. Alias - ZK5AYJO. Extension - 6566782157. Caller Id - 6566782157.  
// User signed in successfully     
12:56:14,                 Event is [TrueEvent]
12:56:14,                 State - SubAuthenticatePW.cde!ReturnAuthenticated
12:56:14,                 Event is [Authenticated]
12:56:14,         <--SubAuthenticatePW
12:56:14,         Event is [Authenticated]
12:56:14,         State - SubAuthenticate.cde!ReturnAuthenticated
12:56:14,         Event is [Authenticated]
12:56:14, <--SubAuthenticate
12:56:14, Event is [Authenticated]
12:56:14, State - SubSignIn.cde!RunSignInUtil
12:56:14, -->SubSignInUtil
12:56:14,         State - SubSignInUtil.cde!CheckAccountLocked
12:56:14,         Event is [FalseEvent]
12:56:14,         State - SubSignInUtil.cde!CheckExpiredAndNew
12:56:14,         Event is [NULL]
12:56:14,         State - SubSignInUtil.cde!CheckForExpirationWarning
12:56:14,         Event is [NULL]
12:56:14, <--SubSignInUtil
12:56:14, Event is [NULL]
12:56:14, State - SubSignIn.cde!RunSignInUtil_default
12:56:14, Event is [NULL]
12:56:14, State - SubSignIn.cde!RunNextConv
12:56:14, -->SubMenu
12:56:14,         Subscriber Mailbox (Alfonso Kong Cher Ooi)
12:56:14,         State - SubMenu.cde!VideoAudioCheck
12:56:14,         Event is [FalseEvent]
12:56:14,         State - SubMenu.cde!MapTemplate
12:56:14,         Event is [NULL]
12:56:14,         State - SubMenu.cde!SetSubConversations
12:56:14,         Event is [NULL]
12:56:14,         State - SubMenu.cde!RunSubMessageBookmark
12:56:14,         -->SubMsgBookmark
12:56:14,                 State - SubMsgBookmark.cde!CheckForMsgBookmark
12:56:14,                 Event is [FalseEvent]
12:56:14,         <--SubMsgBookmark
12:56:14,         Event is [FalseEvent]
12:56:15,         State - SubMenu.cde!
RunAddAlternateExtensions                                                                                                            
12:56:15,         -->AddAlternateExtensions
12:56:15,                 State - AddAlternateExtensions.cde!
CheckAlternateExtensionAddEnabled                                                         
12:56:15,                 Event is [TrueEvent]
12:56:15,                 State - AddAlternateExtensions.cde!CheckCurrentExtension
12:56:15,                 Event is [FalseEvent]
12:56:15,         <--AddAlternateExtensions
12:56:15,         Event is [FalseEvent]
12:56:15,         State - SubMenu.cde!CheckAlternateGreeting
12:56:15,         Event is [FalseEvent]
12:56:15,         State - SubMenu.cde!CheckForSignInOverGreeting
12:56:15,         Event is [FalseEvent]
12:56:15,         State - SubMenu.cde!RunMsgCount
12:56:15,         -->SubMsgCount
12:56:15,                 State - SubMsgCount.cde!CountMailboxMessages
12:56:15,                 Event is [NULL]
12:56:15,                 State - SubMsgCount.cde!
GetMailboxStatus                                                                                                // Mailbox status
12:56:15,                 Event is [YesEvent]
12:56:15,                 State - SubMsgCount.cde!SayHello_WithShortCut
12:56:15,                 Event is [NULL]
12:56:15,                 State - SubMsgCount.cde!RunCheckBroadcastMsg_WithShortCut
12:56:15,                 -->SubBroadcastMessage
12:56:15,                         State - SubBroadcastMessage.cde!CheckForBroadcastMessage
12:56:15,                         Event is [NULL]
12:56:15,                 <--SubBroadcastMessage
12:56:15,                 Event is [NULL]
12:56:15,                 State - SubMsgCount.cde!AnnounceMsgCount
12:56:16,                 Event is [TimeoutEvent]
12:56:16,         <--SubMsgCount
12:56:16,         Event is [TimeoutEvent]
12:56:16,         State - SubMenu.cde!CheckMailStoreMounted
12:56:16,         Event is [FalseEvent]
12:56:16,         State - SubMenu.cde!CheckJumpToNewMessages
12:56:16,         Event is [FalseEvent]
12:56:16,         State - SubMenu.cde!AnnounceMenu
12:56:20,         Event is [TT1Event]
12:56:20,         State - SubMenu.cde!RunNewMsgStack
12:56:20,         -->SubNewMsgStack
12:56:20,                 State - SubNewMsgStack.cde!CheckTotalMsgCount
12:56:20,                 Event is [NULL]
12:56:20,                 State - SubNewMsgStack.cde!AnnounceMsgs
12:56:21,                 Event is [NULL]
12:56:21,                 State - SubNewMsgStack.cde!CheckOfferMsgTypeMenu
12:56:21,                 Event is [NULL]
12:56:21,                 State - SubNewMsgStack.cde!MessageTypeMenu
12:56:23,                 Event is [TT1Event]
12:56:24,                 State - SubNewMsgStack.cde!SetPlayVoiceStackTrue
12:56:24,                 Event is [NULL]
12:56:24,                 State - SubNewMsgStack.cde!PlayMsgStack
12:56:25,                 -->SubMsgPlay_Standard
12:56:25,                         State - SubMsgPlay_Custom.cde!MapTemplate
12:56:25,                         Event is [NULL]
12:56:25,                         State - SubMsgPlay.cde!MsgRoot
12:56:25,                         Event is [NULL]
12:56:25,                         State - SubMsgPlay.cde!ValidMsgStreams
12:56:25,                         Event is [NULL]
12:56:25,                         State - SubMsgPlay.cde!MessageHeaderDispatchCheck
12:56:25,                         Event is [NULL]
12:56:25,                         State - SubMsgPlay.cde!MessageHeader
12:56:26,                         Event is [TimeoutEvent]
12:56:27,                         State - SubMsgPlay.cde!MessageBody
12:56:29,                         Event is [TimeoutEvent]
12:56:29,                         State - SubMsgPlay.cde!MessageFooter
12:56:33,                         Event is [TimeoutEvent]
12:56:34,                         State - SubMsgPlay.cde!MsgMenu
12:56:34,                         Event is [NULL]
12:56:34,                         State - SubMsgPlay.cde!MsgMenuStd
12:56:39,                         Event is [TT3Event]
12:56:40,                         State - SubMsgPlay.cde!SetExitProperties_Delete
12:56:40,                         Event is [NULL]
12:56:40,                         State - SubMsgPlay.cde!MessageExit_CheckMarkNew
12:56:40,                         Event is [FalseEvent]
12:56:40,                         State - SubMsgPlay.cde!
MessageExit_CheckMarkRead                                                                                     // Unread messages have been
marked as read
12:56:40,                         Event is [TrueEvent]
12:56:40,                         State - SubMsgPlay.cde!MessageExit_MarkRead
12:56:40,                         Event is [TrueEvent]
12:56:40,                         State - SubMsgPlay.cde!MessageExit_CheckToggleUrgency
12:56:40,                         Event is [FalseEvent]
12:56:40,                         State - SubMsgPlay.cde!MessageExit_CheckUndelete
12:56:40,                         Event is [FalseEvent]
12:56:40,                         State - SubMsgPlay.cde!MessageExit_RouteToAction
12:56:40,                         Event is [ExitDelete]
12:56:40,                         State - SubMsgPlay.cde!CheckUseDelItmFldr
12:56:40,                         Event is [TrueEvent]
12:56:40,                         State - SubMsgPlay.cde!GetMailboxStatus1
12:56:40,                         Event is [YesEvent]
12:56:40,                         State - SubMsgPlay.cde!MsgDelConfirmCheck
12:56:40,                         Event is [FalseEvent]
12:56:40,                         State - SubMsgPlay.cde!
DeleteMsgWithoutConfirm                                                                                          
12:56:40,                         Event is [TrueEvent]
12:56:40,                         State - SubMsgPlay.cde!MsgDeleted
12:56:41,                         Event is [NULL]
12:56:41,                 <--SubMsgPlay_Standard
12:56:41,                 Event is [NULL]
12:56:41,                 State - SubNewMsgStack.cde!AnnounceEndOfMsgs
12:56:41,                 Event is [NULL]
12:56:41,                 State - SubNewMsgStack.cde!MsgExitCount
12:56:41,                 Event is [NULL]
12:56:41,                 State - SubNewMsgStack.cde!CheckTotalMsgExitCount
12:56:41,                 Event is [NULL]
12:56:41,         <--SubNewMsgStack
12:56:41,         Event is [NULL]
12:56:41,         State - SubMenu.cde!ResetMsgCount
12:56:41,         Event is [NULL]
12:56:41,         State - SubMenu.cde!COSAndMsgCount
12:56:41,         Event is [NULL]
12:56:41,         State - SubMenu.cde!CheckMailStoreMounted
12:56:41,         Event is [FalseEvent]
12:56:41,         State - SubMenu.cde!CheckJumpToNewMessages
12:56:41,         Event is [FalseEvent]
12:56:41,         State - SubMenu.cde!AnnounceMenu                                                                                                  // User
hangup the call
12:56:44,         Event is [HangupEvent]
12:56:44, <--SubMenu
12:56:44, Event is [HangupEvent]
12:56:44, State - SubSignIn.cde!HangupThePhone
12:56:44, Event is [HangupEvent]
12:56:44, Idle
Introduction:
This document is to help you understand the concept of MWI when CUC is integrated
with CUCM with the help of process diagram and sample traces.
 
What is MWI?
MWI stands for message waiting indicator. When a caller leaves a message for a
subscriber, Cisco Unity connection notifies the phone system to activate the MWI on the
subscriber's phone which is done by turning on the red light of the phone along with a
blinking message icon on the Phone.
Components Involved:
Process Flow:

1. Call comes to IP phone and since user does not answer/busy, it goes to Voice mail.
2. When the call reaches CUC and user has to leave a voice mail, conversation
manager answers the call. Caller leaves a message for the user.
3. NotifyQ is informed about the new message.
4. Connection Notifier's main function is to keep a check on the NotifyQ . When an
event is placed in it, connection Notifier will check the user's mailbox to determine
whether their MWI should be on or off. It then compares that with what state we
currently think the light is in and, if it needs to change, queues the task.
5. In case of new message, the NotifyQ gets filled. Since the NotifyQ is actively being
monitored by connection notifier service it instructs the Conversation manager to notify
the phone system about the new message by sending a SIP NOTIFY message with
Request URI header of user’s CUC extension & a skinny notification in case of Skinny
integration.
6. When the subscriber listens to the message, Cisco Unity connection notifies the
phone system to deactivate the MWI on the phone
Traces:

SIP integration:
>>>> Conversation manager on CUC initiates the SIP stack to send out a SIP notify to
CUCM:

NOTIFY sip:[email protected] SIP/2.0


From: sip:10.106.117.132;tag=185be2450fa4498f9ad928a998f4cc11
To: sip:[email protected]
Via: SIP/2.0/TCP
10.106.117.133:5060;branch=z9hG4bK83d91e663e4d47768465116b5a37666c
Max-Forwards: 70
Contact: sip:10.106.117.133:5060
Call-ID: [email protected]
CSeq: 300 NOTIFY
Event: message-summary
Content-Length: 73
Content-Type: application/simple-message-summary

Messages-Waiting: yes
Voice-Message: 4/0 (0/0)
Fax-Message: 0/0 (0/0)

>>>> Message waiting manager creates a message waiting process for that extension:

91495542.000 |10:12:37.303 |SdlSig   |SsInfoReq                              |


wait                           |MessageWaiting(2,100,134,2267308) |
MessageWaitingManager(2,100,133,1) |2,100,14,8121954.2863^10.106.117.133^*    |
[R:N-H:0,N:0,L:0,V:0,Z:0,D:0] Type=0 Key=0 Node=2 Party=44401597 DevId=(2,81,1)
CSS=947a4fc1-c861-eb04-090f-c80b57cff533 dn=ti=1nd=216181pi=0si1 FeatId=122
FeatVal=2 WhichLamps=0 LampPersis=0 Signal=0 Cause=0 clientCodeReq=F
authCodeReq=F numVoiceMsgNew=4 numVoiceMsgOld=0 numVoicePriNew=0
numVoicePriOld=0 numFaxMsgNew=0 numFaxMsgOld=0 numFaxPriNew=0
numFaxPriOld=0 FDataType=0opId=0ssType=0
SsKey=0invokeId=0resultExp=Fbpda=F

>>>> Message waiting process sends out the da request:

91495542.001 |10:12:37.304 |AppInfo  |MessageWaiting::sendDaReq


dialingPattern=216181 dialingPartition=33b00713-6550-607d-3c37-61a716556c28
voiceMailbox= orig digitString=216181, cmDeviceType 0

>>>> Message waiting process asks the DB layer to update the MWI status:

91495545.000 |10:12:37.304 |SdlSig   |DbVoiceMailUpdtReq                     |


initialized                    |Db(2,100,208,1)                  |
MessageWaiting(2,100,134,2267308) |2,100,14,8121954.2863^10.106.117.133^*    |
[T:N-H:0,N:0,L:0,V:0,Z:0,D:0] 02000000 01010101 04000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00617043 b0ce9c90 f02cc086
00000000

91495545.001 |10:12:37.304 |AppInfo  |DB: CFastAccess(EXEC dblSetMwi_)


91495545.002 |10:12:37.304 |AppInfo  |DB: SQL1[execute procedure
dblSetMWIEx('216181', '33b00713-6550-607d-3c37-61a716556c28', 2, 1, 4, 0, 1, 0, 0,
1, 0, 0, 1, 0, 0)]
Skinny integration:
 
>>> VM port sends out a stationinit message with the MWI notification:
 
This notification message from CUC contains the target extension, MWI extension and
message count.
 
12:52:07.094 |StationInit: (0002591) StationMwiNotificationMessage mwiTarget=28439
mwiCtrl=481099 msgsWaiting=1 totalVm(-1/-1) priVm(-1/-1) totalFax(-1/-1) priFax(-1/-
1)|4,100,50,1.1761524357^10.226.240.14^CiscoUM1-VI39
 
 >>> CUCM respond back with MWI response:
 
12:52:07.096 |StationD:    (0002591) TX StationMwiResponse: mwiTarget=28439
result=0.|4,100,50,1.1761524357^10.226.240.14^CiscoUM1-VI39
Troubleshooting MWI:
(a). Checklist under telephony integration:
1. Check Telephony: Cisco Unity Connection Administration, in the Related Links list in
the upper right corner of any Telephony Integrations page, click Check Telephony
Configuration and click Go.

2. On CUC port group, make sure that the port group has check “register with SIP
server” and “Enable message waiting indicator”.
3. Choose Telephony Integrations > Ports in Cisco Unity Connection Administration
page and Confirm that there are voice−messaging ports for the phone system
integration that are assigned to send MWI requests.

4.  If you are having a CUC PUB/SUB setup, then make sure you have ports created for
SUB as well on CUC.
5.   Make sure that the order of CUCM servers is correct in port group on CUC. Browse
to:
Telephony integration >>>> Port group >>>> Edit >>> Servers
It should be in accordance with the CM group assigned to the device pool associated
with the SIP trunk/Voice Mail ports.

If the server list on CUC is not in accordance with the CCM group defined on the trunk
then CUCM will send out a 503 service unavailable in response to the Notify from CUC.
Here is a snippet from the traces:
>>>> CUC sends out a Notify to CUCM:
 
NOTIFY sip:[email protected] SIP/2.0
From: sip:10.106.117.133:5060;tag=03d2231777d0465aa329d31db6e02e16
To: sip: [email protected]
Via: SIP/2.0/TCP
10.106.117.133:5060;branch=z9hG4bKa8092e71a93d41f68862e887250d29a2
Max-Forwards: 70
Contact: sip: 10.106.117.133:5060
Call-ID: [email protected]
CSeq: 300 NOTIFY
Event: message-summary
Content-Length: 73
Content-Type: application/simple-message-summary
 
Messages-Waiting: yes
Voice-Message: 1/1 (0/0)
Fax-Message: 0/0 (0/0)
 
>>>>>> CUCM will response with a 503 service unavailable error:
 
SIP/2.0 503 Service Unavailable
Via: SIP/2.0/TCP
10.106.117.132:5060;branch=z9hG4bK76d6868527bc46c9814f2b52390d0325
From: sip:10.106.117.133:5060;tag=8979f8a2d55640cf8e710118dbe4dda3
To: sip:[email protected];tag= 1877519591
Date: Mon, 03 Feb 2016 15:42:31 GMT
Call-ID: [email protected]
CSeq: 300 NOTIFY
Warning: 399 LODKSCUCMUCSPUB01 "Unable to find a device handler for the
request received on port 35410 from 10.106.117.133"
Content-Length: 0
 
7. If the issue is specific to certain users then make sure that the user is associated with
the correct phone system on CUC.

8.  You can try doing a resync of MWI if MWI is not working for any of the users:
9. Make sure that the MWI numbers defined on CUC are same as to what you have defined on
CUCM.
Telephony integration >>>> Port Group >>>> MWI on & off extension
Note: In case of SIP integration MWI numbers are not created as CUC uses Notify message.
(b). Things to check on CUCM:
Skinny Integration:

1. If SCCP integration is there, then make sure the voice mail ports should have the
CSS which has the partition of the phones.
2. Dial the MWI on extension then dial MWI off extension, if the phone led become red
after dialling MWI on, then the disappear after dial MWI off that means MWI on & off
configured properly on you cucm.
3. Make sure that the MWI on and off numbers are unique and should verify it by
checking in from route plan report on CUCM.
SIP integration:
1. Check the following on the SIP trunk security profile:
-              Accept Out-of-Dialog REFER
-              Accept Unsolicited Notification
-              Accept Replaces Header
In case of SIP integration, CUC sends SIP notify messages to the phone system to turn
the MWI on or OFF so “Accept unsolicited notification” should be checked under SIP
profile assigned to the trunk.
2. The calling search on the trunk should have the partition assigned to the directory
number of user.
(c). Things to check on CUC for Platform issues:
1.    Make sure the connection notifier service is activated on the primary server.
2.    Cluster health check: Make sure the cluster is in healthy status with the output of
the command "show cuc cluster status"
In unity connection cluster, while both servers can answer the calls and take messages
but the connection notifier service responsible for MWI is activated only on the primary
server and not on the secondary.
A good status would look something like:

show cuc cluster status

Server Name    Member ID Server State Internal State Reason


-------------  ---------  ------------  --------------  ------
pubcuc  0          Primary       Pri Active      Normal
subcuc  1          Secondary     Sec Active      Normal
A bad cluster can look something like this:

Server Name    Member ID Server State  Internal State  Reason


-------------  ---------  ------------  --------------  ---------------------
ccanslev01cuc  0          Secondary     Pri Failover    Critical Service Down
ccavcltv01cuc  1          Secondary     Sec Active      Normal
3. Verify the enterprise dbreplication, a healthy cluster should have the replication status
as 2.
You can check the replication using the command “utils dbrelication runtimestate” and is
similar to what you have on CUCM or CUPS.

4. Check the the MWI Port Activity:

Step 1  In Cisco Unity Connection Serviceability, on the Tools menu, click Reports.
Step 2  On the Serviceability Reports page, click Port Activity Report.
Step 3  On the Port Activity Report page, select the applicable options for the report.
Step 4  Click Generate Report.

5. In case of any delay in MWI, make sure that the CUC server is synched with an NTP
stratum at a value less than 3 using the output of the command "Utils ntp status".
Thank you

You might also like