Teams Direct Routing Extension Transfer Failed

Copper Contributor
Hello Guys,

Is it possible to transfer Teams Direct Routing call to Teams user via their user extension?.

Apparently, it only works only by searching via Teams contacts and it doesn't work when I put Teams user extension.

Any idea?

Thanks.
13 Replies

Hi @Adityo Prabhaswara H. 

yes it is possible. All depends on the way how you have setup the dial plan for dialing extensions for your Teams users and then basically how your SBC handle the transfer message from Teams proxy. If you mean with extension the full dialed number I would focus on the SBC setup you have for your Direct Routing. 

 

Hi@Adityo Prabhaswara H. 

 

As suggested by @DaveChomi , do the below.

 

. Add Normalization rule in as per your extension and set internal extension as "False".

 

With required PSTN usage (default Global) and route.

 

Then in SBC, route it back to Teams with Full E164 Format. It is workaround to reach back teams by extension. You have to create calling number / called number rule for the same as well.

 

Audio code or RIbbon?

 

Find below example

 

User Dial Plan : "User Dial Plan"

Create the normalization rules for your extensions.

$NR1=New-CsVoiceNormalizationRule -identity Global/User Dial Plan -description “Extension” -pattern ‘^8(\d{3})$’ -Translation ‘8$1’ -InMemory -IsInternalExtension $false

8XXX is my extenson here

Add Normalization rule globally

Set-CsTenantDialPlan -identity Global/User Dial Plan -normalizationrules @{Add=$NR1}

Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="Extension"}

New-CsOnlineVoiceRoute -Identity "Extension" -NumberPattern ".*" -OnlinePstnGatewayList <sbc_domain> -Priority 1 -OnlinePstnUsages "Extension"

Assign permission to ur voice policy

Set-CsOnlineVoiceRoutingPolicy -Identity "Local" -OnlinePstnUsages @{Add="Extension"}

Set-CsOnlineVoiceRoutingPolicy -Identity "National" -OnlinePstnUsages @{Add="Extension"}

Set-CsOnlineVoiceRoutingPolicy -Identity "International" -OnlinePstnUsages @{Add="Extension"}

Hi @DaveChomi , @Mufarak 

 

I get the idea how it works but I think it is more than that because I am also doing integration with IP/PBX system and call transfer works well to this system extensions.

 

Let's say I have 2XXX format for Teams extension and 3XXX for IP/PBX system extension. When I am transferring the call to IP/PBX extension, it is working well without problems but not for Teams extension. It always shown "couldn't reachable" message when failing.

 

One more thing, I also thought that when I transfer call to Teams extension, it automatically recognizes the extension and not forward to SBC.

 

Any idea? Thanks. 

Hi@Adityo Prabhaswara H. 

 

What is Line URI for users in Teams? is it just E.164 right?

 

Treat 2XXX and 3XXX as PBX extension and create dial plan normalization accordingly and send to SBC.

 

IF you set internal extension as false, then it will send to SBC as per route

 

If you want to transfer by Extension to Teams, you have to route the calls to SBC to process back with E164 Format as i mentioned earlier.

 

Check the pcap in SBC if you are sending to SBC for 2XXX

 

 

@Adityo Prabhaswara H. 

I was also living under impression that life could be easier with Transfer to Teams user :) no way

Teams counts on fact that you wanna have in hands how the REFER message will be handled but they also count on that you will send them the REFER back to handle it properly. No matter if it is user or extension on your PBX it will simply all the time send the REFER to your Teams SBC.


I would recommend to setup on Teams SIP interface (IP Profile) to "handle locally" REFER messages and the same thing also to setup on PBX interface (IP profile). If you have setup already REFER rule in ip routing which should resend all REFER messages to Teams proxy then it should work as described earlier. 

I currently have such behavior:

Teams user transfer PSTN call to user -> SBC catch it -> send back the REFER to Teams -> Teams handle REFER inside 

Teams user transfer PSTN call to PBX extension -> proper dial plan needs to be set to normalize number -> SBC catch it -> send back to Microsoft Teams proxy -> Proxy creates new invite and send it back to your SBC -> SBC handle it as new call to local PBX 

Teams user transfer PSTN call to Teams user extension -> proper dial plan needs to be set to normalize number -> SBC catch it -> send back to Microsoft Teams proxy ->Teams handle it as number of Teams user

 

All is just based on current findings of my setup. One checkbox in different way and you can have different behavior. ;) 

 

BTW. I am doing integration with CUCM and also with Openscape Voice in three regions differently. So no worries I have my headaches too :D 

Hi @Mufarak,

 

Of course it is E.164.

 

I have this kind of setup for TEL URI "TEL:+2XXX" to all Teams user extension and I also setup internal extension as false globally. Do I have to set internal extension as true for this "2XXX" format perhaps? So it won't get thrown into SBC.

Hi @DaveChomi 

 

Thanks! your explanation is great and also using AudioCodes language..hehe

 

I believe that I already put REFER rule in IP Routing correctly so it will be "handled locally" since it was written in manual guide. Let me do double check and re-test again to find out this further. I get the idea of REFER flow you explained.

 

Thanks again!

@Adityo Prabhaswara H. 

Internal Extension parameter set on true or false will not result in different behavior of routing the call. I believe that this parameter has only some effect if you have OptimizeDeviceDialing in place of the dialplan. Reading the documentation I assume this is just for ignoring the need of prefix access code for external call (if set). 

Hi@Adityo Prabhaswara H. 

 

Are you using User Dial Plan for the Users? Normally how i setup is.

 

User tel URI : +62191012XXX By Default Service Country Dial Plan applies and will create user dial plan with 2XXX & 3XXX with internal set to false. if i set to false and configure pstn usage and route, it will route the calls to GW.

 

From there, we will divert back to Teams. with Prefix as +6219101 2XXX . Its workaround. Hope you know how Online Dial Plan works but still check the below links for understanding. Apart from Service Location dial plan, we can create User Dial plan as per our requirements. If internal extension is set to false, it will route the calls to PSTN GW only .

 

https://blog.insynctechnology.com.au/skype-business-cloud-pbx-tenant-dial-plans-landed

 

 

Hi@DaveChomi ,

 

Since you mentioned working with CUCM, have you tried sending " Call naswered elsewhere" SIP message To / From CUCM & with Teams using SBC.

 

In Call Forking ( Ribbon Language) :) and Remote Profile feature , parallel ringing is enabled, above will help to logs the calls as answered.  If we answer in Teams, Cisco will log as answered call and vice versa. Have you came across this requirement.

 

 

 

 

Hi @Mufarak

 

Actually, I am using Tenant Dial Plan since I want to override and prevent normalization from default Service Dial Plan.

 

Anyway, it seems that i can get it working now, i just need a proper REFER routing in SBC then it goes correctly as @DaveChomi said.

@Mufarak 

So having remote profile for Cisco phone number set to Teams number? Like having ringing my phone but also my Teams client? Interesting :) Not yet but seems to me like something I need to test :) 

@Adityo Prabhaswara H. 

With Service Dial Plan you mean country specific Service Dial plan based on location of the user? I thought that country service dial plan is basically merged with user defined tenant dial plan or global tenant dial plan. Anyway all the time as merged and service one in place. Isn't it like that?