cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
1980
Views
9
Helpful
24
Replies

Re-rerouting calls back to CUCM based on calling number

KhanalZ
Level 1
Level 1

Little background: Recently E911 call failed in our environment. CER Pub GUI was not accessible for some reason and Sub was not taking over. Calls went through after restarting both servers from CLI. We found later from TAC that we lost the logs after the reboot that could tell us what caused the issue.

Now, we are considering establishing a routine daily test call to 911 from a specific test DN but instead of sending such calls to PSAP, I would like to re-route that call back from CUBE to a DN or IVR in our CUCM based on calling number, without affecting actual 911 calls. This way we can confirm calls are hitting the CUBE but routing them back to an internal extension.

Can someone tell me what I need to do in CUBE without affecting normal call flows. Is it all about dial peers or something else is required? Or is there a better way to test/simulate 911 calls.

Thanks

 

 

4 Accepted Solutions

Accepted Solutions

Something along the way with this should work.

 

voice class e164-pattern-map 200
 description E164 Pattern Map for calling number 5555
  e164 5555
!
voice class dpg 200
 description Dial-peer Group for specific calling number 5555
 dial-peer 200
!
voice translation-rule 200
 rule 1 /^911$/ /4444/
!
voice translation-profile TEST911-OUT
 translate called 200
!
voice class server-group 1
 ipv4 <CM IP 1> preference 2
 ipv4 <CM IP 2> preference 1
 ipv4 <CM IP 3> preference 3
 description Inbound calls to CUCM
 huntstop 1 resp-code 404 to 404
!
voice class sip-options-keepalive 1
 description Used for Server Group SIP OPTIONS PING
!
dial-peer voice 100 voip
 description Incoming Dial-Peer from 5555
 session protocol sipv2
 destination dpg 200
 incoming calling e164-pattern-map 200
 voice-class codec 1
 dtmf-relay rtp-nte sip-kpml
 no vad
!
dial-peer voice 200 voip
 description Outbound Dial-Peer to CM for test 911 calls
 translation-profile outgoing TEST911-OUT
 session protocol sipv2
 session server-group 1
 destination-pattern BAD.BAD
 voice-class codec 1
 voice-class sip options-keepalive profile 1
 dtmf-relay rtp-nte sip-kpml
 no vad

 



Response Signature


View solution in original post

After thinking of what you wrote again I think that I might have misread your post. The issue that you brought forward is if I’m not mistaken that you can’t make the match in the inbound direction for the 5555 calling number since CER changes it to an ELIN. With that I think you’d need to configure the testing device to be in a specific location so that it presents a specific ELIN, it doesn’t even need to be a proper DID number as the call would never be sent to PSAP. Then change the E164 map used to match the calling number to this ELIN. That should make this work as you want it.



Response Signature


View solution in original post

If you read the document that I shared with you on the 6:th of June you would see the order of matches for calls on dial peers. URI match is higher in priority than incoming calling number.

Also as you haven’t shared your complete running configuration it’s not possible for anyone on the community to know what other dial peers you might have that could affect the proposed solution. If you want to get a full rundown of your configuration please share it in an attached plain text file.



Response Signature


View solution in original post

Please share your complete running configuration and the output from these debugs running all in parallel, debug ccsip message, debug ccsip non-call, debug voip ccapi inout, debug voip dial-peer and debug voip translation in two separate text files.



Response Signature


View solution in original post

24 Replies 24

If you’re making the call from a specific directory number and that number isn’t going to be used for anything else you’ll need to create a specific dial peer that is to be used in the inbound direction. On this dial peer use DPG configuration to send the call to one or more dial peer(s) that passes the call back to CM. In CM you’ll then need to construct a set of translation patterns to use the route by calling number function that CM have. As an alternative you could use a specific dial peer on the outbound direction in your SBC to modify the called number from 911 to the DN you want to receive the call in CM. That way you don’t have to use the route by calling number construct in CM. This would IMO be a simpler solution.



Response Signature


eyalraba
Cisco Employee
Cisco Employee

What's the current dial-peer you have for matching 911 calls?

To match calls based on calling number in CUBE we can use answer-address, however this has the least preference in matching, the incoming called-number takes priority.

Cisco Unified Border Element Configuration Guide Through Cisco IOS XE 17.5 - Dial-Peer Matching [Cisco Unified Border Element] - Cisco

Here is our existing DP for 911 calls. 

dial-peer voice 911 pots
trunkgroup Local
description Emergency Services Calls
destination-pattern 911
forward-digits all

Do you think we can make use of translation profile to get around this issue like :

create a translation profile to translate 911 called number to lets say 999 and apply that to inbound leg and route call back to CUCM for 999?

 

KhanalZ
Level 1
Level 1

Thanks a lot Roger for the ideas. Greatly appreciated. Could you elaborate more on dial peer on outbound direction in SBC as you stated. As I mentioned in my post, I only want to route the 911 call from that specific extension lets say 5555 to another extension 4444 once call arrives at the CUBE. I can create specific inbound dial peer to match the calling number. However, not sure what would the outbound dial peer (cube to cucm leg) be like. I want to do it without affecting normal call flows including 911 for the rest of the users.

Thanks

Something along the way with this should work.

 

voice class e164-pattern-map 200
 description E164 Pattern Map for calling number 5555
  e164 5555
!
voice class dpg 200
 description Dial-peer Group for specific calling number 5555
 dial-peer 200
!
voice translation-rule 200
 rule 1 /^911$/ /4444/
!
voice translation-profile TEST911-OUT
 translate called 200
!
voice class server-group 1
 ipv4 <CM IP 1> preference 2
 ipv4 <CM IP 2> preference 1
 ipv4 <CM IP 3> preference 3
 description Inbound calls to CUCM
 huntstop 1 resp-code 404 to 404
!
voice class sip-options-keepalive 1
 description Used for Server Group SIP OPTIONS PING
!
dial-peer voice 100 voip
 description Incoming Dial-Peer from 5555
 session protocol sipv2
 destination dpg 200
 incoming calling e164-pattern-map 200
 voice-class codec 1
 dtmf-relay rtp-nte sip-kpml
 no vad
!
dial-peer voice 200 voip
 description Outbound Dial-Peer to CM for test 911 calls
 translation-profile outgoing TEST911-OUT
 session protocol sipv2
 session server-group 1
 destination-pattern BAD.BAD
 voice-class codec 1
 voice-class sip options-keepalive profile 1
 dtmf-relay rtp-nte sip-kpml
 no vad

 



Response Signature


I tested with above configuration but it didn't work the way it was expected. Incoming call from CUCM does not match the dial peer 100 but it matches another dial peer which uses voice class URI. And as a result, dial peer 200 is not matched. Is it because URI takes precedence over other methods? What options do I have to make it work without breaking the prod system?

If you read the document that I shared with you on the 6:th of June you would see the order of matches for calls on dial peers. URI match is higher in priority than incoming calling number.

Also as you haven’t shared your complete running configuration it’s not possible for anyone on the community to know what other dial peers you might have that could affect the proposed solution. If you want to get a full rundown of your configuration please share it in an attached plain text file.



Response Signature


I have attached the subset of the config relevant to this issue. For privacy reason, I have modified certain information.

Here, I setup a test phone with the number 5555552222. I have configured e.164 pattern, dpg, translation pattern and dial peers as per your recommedation. Per translation rule 200, if i call 92024655568 from my test phone it should translate to +15555552224 and ring an IVR i have setup for the testing purpose. I choose to translate 92024655568 in place of actual 911 number because I wanted to avoid CER in the call path.

When I checked the logs, I find the inbound call matching DP 10 and outbound matching 9101. Since DP 10 uses URI, I know it takes precedence and no further matching takes place.

I would be so grateful if you could provide the solution without requiring to make big changes in the existing config.

Thank you

You need to change the way you match inbound calls on DP 10 so that it has an equal match priority of your new inbound dial peer. To do so and still have that dial peer match any other calls than the specific test number you can do something like this.

voice class e164-pattern-map 10
  e164 +T
  e164 .T
!
dial-peer voice 10 voip
 no incoming uri via 10
 incoming calling e164-pattern-map 10

Apart from this there is no need for you to have a specific dial peer for 4 digit calls to CM. You can combine the patters in the 1000 and 1001 e164 dial plan maps to have DP 1000 handle both calls in +E.164 format and 4 digit format. With that you can simplify your configuration and remove dial peer 1001 and the 1001 e164 dial plan map.



Response Signature


Even after making the changes you recommended the inbound call still matches DP 10 instead of DP 100. Following is the config

voice class e164-pattern-map 1000
e164 +124040610..
e164 +1555555222.
!

voice class e164-pattern-map 10
e164 +T
e164 .T
!
voice class e164-pattern-map 200
description E164 Pattern Map for calling number +15555552222
e164 +15555552222
!
voice translation-rule 200
rule 1 /^920224655568/ /+15555552224/
rule 2 /^9120224655568/ /+15555552224/
rule 3 /92024655568/ /+15555552224/
rule 4 /912024655568/ /+15555552224/
!
voice translation-profile TEST911-OUT
translate called 200


dial-peer voice 10 voip
description CUCM-Inbound
session protocol sipv2
incoming calling e164-pattern-map 10
voice-class codec 1
dtmf-relay rtp-nte sip-kpml
fax-relay ecm disable
fax nsf 000000
ip qos dscp cs3 signaling
no vad
!
dial-peer voice 100 voip
description Incoming Dial-Peer from
session protocol sipv2
destination dpg 200
incoming calling e164-pattern-map 200
voice-class codec 1
dtmf-relay rtp-nte sip-kpml
no vad
!
dial-peer voice 200 voip
description Outbound Dial-Peer to CM for test 911 calls
translation-profile outgoing TEST911-OUT
destination-pattern BAD.BAD
session protocol sipv2
session server-group 1000
voice-class codec 1
dtmf-relay rtp-nte sip-kpml
no vad

 

Change to this then to not have it match the specific number that you use for your test.

voice class e164-pattern-map 10
 e164 +124040610..
 e164 +15555552221
 e164 +15555552223-9



Response Signature


Even after only keeping  +124040610.. in pattern map 10 and applying that to DP 10 and calling from the different test number 5555552225 number gave the same result. still it matches dp 10  

voice class e164-pattern-map 200
description E164 Pattern Map for calling number +15555552225
e164 +15555552225
!
!
voice class dpg 200
description Dial-peer Group for specific calling number +15555552225
dial-peer 200

 

Please share your complete running configuration and the output from these debugs running all in parallel, debug ccsip message, debug ccsip non-call, debug voip ccapi inout, debug voip dial-peer and debug voip translation in two separate text files.



Response Signature


Sorry to bother but I know the solution you provided should work and it has infact worked in my other test environment. Of course I didn't try there with all the dial peers that i have in prod but hoped it would just work fine in the prod. Anyway, as I keep trying this and that,

Received:
INVITE sip:912024655568@10.16.10.19:5060 SIP/2.0
Via: SIP/2.0/TCP 10.16.10.13:5060;branch=z9hG4bK86ccfa31f6df54
From: "test" <sip:+15555552225@test.com>;tag=29825751~d64c732d-9f48-42f9-b0e8-25f1bf3b6a0b-90569150
To: <sip:912024655568@10.16.10.19>
Date: Thu, 08 Aug 2024 23:58:33 GMT
Call-ID: 1d042000-1f0173e5-8612ab-82ef6a0a@10.16.10.13

 

Interface=0x7FEE5323F8D8, Call Info(
Calling Number=sip:+15555552225@test.com,(Calling Name=)(TON=Unknown, NPI=Unknown, Screening=Network, Presentation=Allowed),
Called Number=sip:912024655568@10.16.10.19:5060(TON=Unknown, NPI=Unknown),
Calling Translated=FALSE, Subscriber Type Str=Unknown, FinalDestinationFlag=TRUE,
Incoming Dial-peer=0, Progress Indication=NULL(0), Calling IE Present=TRUE,

Relevant configs are here
-------------------------
voice class e164-pattern-map 200
description E164 Pattern Map for calling number +15555552225
e164 +15555552225
e164 +15555552225T
!
voice class dpg 200
description Dial-peer Group for specific calling number +15555552225
dial-peer 200
!
dial-peer voice 100 voip
description Incoming Dial-Peer from
session protocol sipv2
destination dpg 200
incoming calling e164-pattern-map 200
voice-class codec 1
dtmf-relay rtp-nte sip-kpml
no vad

I just realized that the calls never hit the inbound dial peer 100 even after shutting down dial peer 10 which is strange. It matches dial peer 0 as given above: