Teams Direct Routing - DTMF tones on Inbound Calls not working

%3CLINGO-SUB%20id%3D%22lingo-sub-1003327%22%20slang%3D%22en-US%22%3ETeams%20Direct%20Routing%20-%20DTMF%20tones%20on%20Inbound%20Calls%20not%20working%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1003327%22%20slang%3D%22en-US%22%3E%3CP%3EThe%20other%20day%20of%20Microsoft%20Direct%20Routing%20life%20in%20our%20enterprise%20environment%20and%20another%20nice%20issue%20appeared%20as%20reported%20from%20users.%20Might%20be%20it%20will%20help%20somebody.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ELong%20story%20short%3A%20Microsoft%20accepts%20also%20not%20so%20standard%20DTMF%20type%20value%20than%20the%20more%20usual%20101%20on%20inbound%20calls%20to%20Teams%20users%20from%20PSTN%20side%20but%20at%20the%20end%20it%20sends%20payload%20which%20is%20not%20expected%20by%20on-premise%20SBC%20using%20101.%20I%20believe%20this%20could%20be%20a%20bug%20which%20is%20visible%20in%20very%20specific%20setup%20and%20just%20on%20inbound%20calls.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EJust%20more%20deep%20dive%20for%20those%20who%20likes%20that%20%3A)%3C%2Fimg%3E%3C%2FP%3E%3CP%3EImagine%20that.%20Teams%20User%20receives%20PSTN%20call%20from%20competitor%20conferencing%20service%20and%20needs%20to%20dial%20hash%20sign%20or%20some%20digits%20in%20order%20to%20confirm%20joining%20conference.%20Teams%20user%20press%20desired%20combination%20but%20nothing%20happens.%20Dialpad%20is%20beeping%20but%20other%20side%20does%20not%20receive%20anything.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20love%20Syslog%20viewer%20from%20Audiocodes.%20Already%20helped%20me%20a%20lot.%20So%20jumping%20into%20SIP%20messages%20I%20do%20see%20that%20call%20is%20offering%20in%20INVITE%20payload%20type%20rtpmap%3A96%20for%20telephone-event.%20Ups%2C%20not%20standard%20value%20as%20far%20as%20I%20have%20seen.%20Value%20was%20basically%20coming%20all%20the%20way%20through%20on-prem%20PBX%20from%20our%20voice%20ingress%20of%20one%20remote%20site%20from%20ISDN%20gateway%20which%20was%20setup%20with%20this%20value.%20Well%2C%20not%20a%20problem%20as%20Microsoft%20sends%20as%20response%20INVITE%20where%20obviously%20accepts%20that%20value%20too...%20see%20the%20capture%20with%20response%20from%20Teams%20SIP%20proxy.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20500px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F156574i50BA52B83AA05C75%2Fimage-dimensions%2F500x430%3Fv%3D1.0%22%20width%3D%22500%22%20height%3D%22430%22%20alt%3D%22clipboard_image_0.png%22%20title%3D%22clipboard_image_0.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EOkay%2C%20what%20could%20be%20he%20problem%20then.%20Seeing%20debug%20logs%20of%20the%20SBC%20I%20found%20what%20happened%20actually%20when%20I%20press%20any%20digit%20on%20Inbound%20calls%20to%20Teams.%20Nicely%20written%20%22Totally%20wrong%20payload%22%20%3A)%3C%2Fimg%3E%26nbsp%3B%3C%2FP%3E%3CP%3ETeams%20client%20was%20sending%20payload%20type%20101%20to%20the%20SBC.%20That's%20obviously%20not%20the%20right%20way.%26nbsp%3B%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20594px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F156575i8759A8B8A612CB21%2Fimage-dimensions%2F594x49%3Fv%3D1.0%22%20width%3D%22594%22%20height%3D%2249%22%20alt%3D%22clipboard_image_1.png%22%20title%3D%22clipboard_image_1.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3BSo%20we%20basically%20changed%20the%20payload%20type%20on%20our%20ISDN%20gateway%20to%20provide%20payload%20type%20101%20which%20does%20not%20affect%20anything%20else%20but%20perfectly%20fix%20our%20issue%20with%20Teams%20%3A)%3C%2Fimg%3E%20Probably%20quicker%20solution%20than%20fighting%20over%20Microsoft%20Support.%20But%20I%20believe%20somebody%20will%20catch%20this%20article%20and%20might%20provide%20fix.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1003327%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EDirect%20Routing%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EDTMF%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EInbound%20Calls%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ETeams%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1040000%22%20slang%3D%22en-US%22%3ERe%3A%20Teams%20Direct%20Routing%20-%20DTMF%20tones%20on%20Inbound%20Calls%20not%20working%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1040000%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F263389%22%20target%3D%22_blank%22%3E%40DaveChomi%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ein%20your%20case%20depends%20actually%20what%20has%20been%20returned%20back%20in%20200OK%20as%20reply%20to%20that%20posted%20PT%2096%26nbsp%3B%20RE-INVITE%20from%20TEAMS.%20Maybe%20200OK%20carries%20101%3F%20by%20standard%20TEAMS%20should%20honor%20the%20answer%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EPT%20is%20not%20something%20you%20negotiate%2C%20offerer%20indicates%20what%20PT%20payload%20it%20will%20receive%20and%20would%20prefer%20to%20send%20however%20answerer%20may%20answer%20different%20PT%20and%20offerer%20has%20to%20comply%20sending%20different%20one%2C%20so%20it%20might%20be%20asymmetric.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIf%20your%20%22PSTN%22%20reply%20also%20carries%20PT%2096%20back%20in%20200OK%20that%20would%20be%20expected(but%20not%20mandatory)%20then%20MS%20misbehaves.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ehope%20it%20helps.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CP%3E%3C%2FP%3E%3CP%3Ev%3D0%3CBR%20%2F%3Eo%3D-%200%201%20IN%20IP4%2052.114.73.200%3CBR%20%2F%3Es%3Dsession%3CBR%20%2F%3Ec%3DIN%20IP4%2052.114.73.200%3CBR%20%2F%3Eb%3DCT%3A50000%3CBR%20%2F%3Et%3D0%200%3CBR%20%2F%3Em%3Daudio%2052284%20RTP%2FSAVP%200%2013%2096%3CBR%20%2F%3Ea%3Dice-ufrag%3AnTGe%3CBR%20%2F%3Ea%3Dice-pwd%3A4T8BipohUSo0fd1z%2BZ%2FSOOfd%3CBR%20%2F%3Ea%3Drtcp-mux%3CBR%20%2F%3Ea%3Dcandidate%3A10%201%20UDP%20184544254%2052.114.73.200%2052284%20typ%20relay%20raddr%20xxxxxx%20rport%2050010%3CBR%20%2F%3Ea%3Dcrypto%3A1%20AES_CM_128_HMAC_SHA1_80%20inline%3A6WFePvmprtmBvE9ftmV9BhgDnF8JiOd7o%2FXNAxZ4%7C2%5E31%3CBR%20%2F%3Ea%3Drtpmap%3A0%20PCMU%2F8000%3CBR%20%2F%3Ea%3Drtpmap%3A13%20CN%2F8000%3CBR%20%2F%3Ea%3Drtpmap%3A96%20telephone-event%2F8000%3CBR%20%2F%3Ea%3Dfmtp%3A96%200-16%3CBR%20%2F%3Ea%3Dptime%3A20%3CBR%20%2F%3Ea%3Dmaxptime%3A200%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Ev%3D0%3CBR%20%2F%3Eo%3D-%200%201%20IN%20IP4%2052.114.73.200%3CBR%20%2F%3Es%3Dsession%3CBR%20%2F%3Ec%3DIN%20IP4%2052.114.73.200%3CBR%20%2F%3Eb%3DCT%3A50000%3CBR%20%2F%3Et%3D0%200%3CBR%20%2F%3Em%3Daudio%2052284%20RTP%2FSAVP%200%2013%2096%3CBR%20%2F%3Ea%3Dice-ufrag%3AnTGe%3CBR%20%2F%3Ea%3Dice-pwd%3A4T8BipohUSo0fd1z%2BZ%2FSOOfd%3CBR%20%2F%3Ea%3Drtcp-mux%3CBR%20%2F%3Ea%3Dcandidate%3A10%201%20UDP%20184544254%2052.114.73.200%2052284%20typ%20relay%20raddr%20xxxxxx%20rport%2050010%3CBR%20%2F%3Ea%3Dcrypto%3A1%20AES_CM_128_HMAC_SHA1_80%20inline%3A6WFePvmprtmBvE9ftmV9BhgDnF8JiOd7o%2FXNAxZ4%7C2%5E31%3CBR%20%2F%3Ea%3Drtpmap%3A0%20PCMU%2F8000%3CBR%20%2F%3Ea%3Drtpmap%3A13%20CN%2F8000%3CBR%20%2F%3Ea%3Drtpmap%3A96%20telephone-event%2F8000%3CBR%20%2F%3Ea%3Dfmtp%3A96%200-16%3CBR%20%2F%3Ea%3Dptime%3A20%3CBR%20%2F%3Ea%3Dmaxptime%3A200%3C%2FP%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1040229%22%20slang%3D%22en-US%22%3ERe%3A%20Teams%20Direct%20Routing%20-%20DTMF%20tones%20on%20Inbound%20Calls%20not%20working%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1040229%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F263389%22%20target%3D%22_blank%22%3E%40DaveChomi%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ETested%20this%20quickly%20and%20you%20are%20absolutely%20right!%20end%20to%20end%20negotiation%20for%20tel-event%20was%2096%20and%20MS%20still%20sends%20PT%20101%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F159460i5B08CC8B1B4D74B9%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20alt%3D%22clipboard_image_0.png%22%20title%3D%22clipboard_image_0.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ewhile%20the%20very%20last%20SDP%20from%20MS%20was%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ESIP%2F2.0%20200%20OK%3CBR%20%2F%3EFROM%3A%20sipp%3CSIPP%3E%3Btag%3D14806SIPpTag091%3CBR%20%2F%3ETO%3A%20sut%26lt%3B%26gt%3B%3Btag%3Daea750caffffffff783ba42de1144988%3CBR%20%2F%3ECSEQ%3A%201%20INVITE%3CBR%20%2F%3ECALL-ID%3A%201-14806%40192.168.2.50%3CBR%20%2F%3EVIA%3A%20SIP%2F2.0%2FTLS%20192.168.65.100%3A5061%3Bbranch%3Dz9hG4bKjsrauu0050fbcetu5op0.1%3CBR%20%2F%3ERECORD-ROUTE%3A%20%26lt%3B5061%26gt%3B%3CBR%20%2F%3ECONTACT%3A%20%26lt%3B443%26gt%3B%3CBR%20%2F%3ECONTENT-LENGTH%3A%201295%3CBR%20%2F%3ECONTENT-TYPE%3A%20application%2Fsdp%3CBR%20%2F%3EALLOW%3A%20INVITE%2CACK%2COPTIONS%2CCANCEL%2CBYE%2CNOTIFY%3CBR%20%2F%3ESERVER%3A%20Microsoft.PSTNHub.SIPProxy%20v.2019.11.28.2%20i.USEA.0%3C%2FSIPP%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CP%3E%3C%2FP%3E%3CP%3Ev%3D0%3CBR%20%2F%3Eo%3D-%200%201%20IN%20IP4%2052.114.73.200%3CBR%20%2F%3Es%3Dsession%3CBR%20%2F%3Ec%3DIN%20IP4%2052.114.73.200%3CBR%20%2F%3Eb%3DCT%3A50000%3CBR%20%2F%3Et%3D0%200%3CBR%20%2F%3Em%3Daudio%2052284%20RTP%2FSAVP%200%2013%2096%3CBR%20%2F%3Ea%3Dice-ufrag%3AnTGe%3CBR%20%2F%3Ea%3Dice-pwd%3A4T8BipohUSo0fd1z%2BZ%2FSOOfd%3CBR%20%2F%3Ea%3Drtcp-mux%3CBR%20%2F%3Ea%3Dcandidate%3A10%201%20UDP%20184544254%2052.114.73.200%2052284%20typ%20relay%20raddr%20xxxxxx%20rport%2050010%3CBR%20%2F%3Ea%3Dcrypto%3A1%20AES_CM_128_HMAC_SHA1_80%20inline%3A6WFePvmprtmBvE9ftmV9BhgDnF8JiOd7o%2FXNAxZ4%7C2%5E31%3CBR%20%2F%3Ea%3Drtpmap%3A0%20PCMU%2F8000%3CBR%20%2F%3Ea%3Drtpmap%3A13%20CN%2F8000%3CBR%20%2F%3Ea%3Drtpmap%3A96%20telephone-event%2F8000%3CBR%20%2F%3Ea%3Dfmtp%3A96%200-16%3CBR%20%2F%3Ea%3Dptime%3A20%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ehope%20they%20pick%20it%20up%20soon%3CBR%20%2F%3Ea%3Dmaxptime%3A200%3C%2FP%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1049206%22%20slang%3D%22en-US%22%3ERe%3A%20Teams%20Direct%20Routing%20-%20DTMF%20tones%20on%20Inbound%20Calls%20not%20working%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1049206%22%20slang%3D%22en-US%22%3E%3CP%3EYou%20are%20also%20right%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F380677%22%20target%3D%22_blank%22%3E%40Matej_Maric%3C%2FA%3E%2C%26nbsp%3BI%20didn't%20provide%20OK%20message%20with%20final%20SDP%20assuming%20as%20not%20necessary%20as%20MS%20already%20offered%20my%20payload%20type%2C%20right...%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAt%20the%20end%20I%20just%20forced%20on%20my%20SBC%20to%20use%20all%20the%20time%20101%20for%20Teams%20side.%20It%20was%20also%20confirmed%20to%20me%20as%20behind%20scenes%20conversations%20that%20they%20do%20not%20expect%20anyway%20nothing%20else%20than%20PT%20101%20from%20customers.%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E
Frequent Contributor

The other day of Microsoft Direct Routing life in our enterprise environment and another nice issue appeared as reported from users. Might be it will help somebody.

 

Long story short: Microsoft accepts also not so standard DTMF type value than the more usual 101 on inbound calls to Teams users from PSTN side but at the end it sends payload which is not expected by on-premise SBC using 101. I believe this could be a bug which is visible in very specific setup and just on inbound calls.

 

Just more deep dive for those who likes that :)

Imagine that. Teams User receives PSTN call from competitor conferencing service and needs to dial hash sign or some digits in order to confirm joining conference. Teams user press desired combination but nothing happens. Dialpad is beeping but other side does not receive anything. 

 

I love Syslog viewer from Audiocodes. Already helped me a lot. So jumping into SIP messages I do see that call is offering in INVITE payload type rtpmap:96 for telephone-event. Ups, not standard value as far as I have seen. Value was basically coming all the way through on-prem PBX from our voice ingress of one remote site from ISDN gateway which was setup with this value. Well, not a problem as Microsoft sends as response INVITE where obviously accepts that value too... see the capture with response from Teams SIP proxy. 

 

clipboard_image_0.png

Okay, what could be he problem then. Seeing debug logs of the SBC I found what happened actually when I press any digit on Inbound calls to Teams. Nicely written "Totally wrong payload" :) 

Teams client was sending payload type 101 to the SBC. That's obviously not the right way.  

 

clipboard_image_1.png

 So we basically changed the payload type on our ISDN gateway to provide payload type 101 which does not affect anything else but perfectly fix our issue with Teams :) Probably quicker solution than fighting over Microsoft Support. But I believe somebody will catch this article and might provide fix. 

 

 

3 Replies

@DaveChomi 

 

in your case depends actually what has been returned back in 200OK as reply to that posted PT 96  RE-INVITE from TEAMS. Maybe 200OK carries 101? by standard TEAMS should honor the answer

 

PT is not something you negotiate, offerer indicates what PT payload it will receive and would prefer to send however answerer may answer different PT and offerer has to comply sending different one, so it might be asymmetric.

 

If your "PSTN" reply also carries PT 96 back in 200OK that would be expected(but not mandatory) then MS misbehaves.

 

hope it helps.

@DaveChomi 

 

Tested this quickly and you are absolutely right! end to end negotiation for tel-event was 96 and MS still sends PT 101

clipboard_image_0.png

 

while the very last SDP from MS was:

 

SIP/2.0 200 OK
FROM: sipp<sip:sipp@xxxxxx:5060>;tag=14806SIPpTag091
TO: sut<sip:+18579901522@sip.pstnhub.microsoft.com:5060>;tag=aea750caffffffff783ba42de1144988
CSEQ: 1 INVITE
CALL-ID: 1-14806@192.168.2.50
VIA: SIP/2.0/TLS 192.168.65.100:5061;branch=z9hG4bKjsrauu0050fbcetu5op0.1
RECORD-ROUTE: <sip:sip-du-a-us.pstnhub.microsoft.com:5061;transport=tls;lr>
CONTACT: <sip:api-du-b-usea.pstnhub.microsoft.com:443;transport=tls;x-i=ae3a478a-7b34-41e7-89a9-76d4539810ad;x-c=/v1/ngc/call/1f2c4d2429a35cd782ce74fac9e08a30/s/1/640ba63046144b878e093a46d3954236>
CONTENT-LENGTH: 1295
CONTENT-TYPE: application/sdp
ALLOW: INVITE,ACK,OPTIONS,CANCEL,BYE,NOTIFY
SERVER: Microsoft.PSTNHub.SIPProxy v.2019.11.28.2 i.USEA.0

v=0
o=- 0 1 IN IP4 52.114.73.200
s=session
c=IN IP4 52.114.73.200
b=CT:50000
t=0 0
m=audio 52284 RTP/SAVP 0 13 96
a=ice-ufrag:nTGe
a=ice-pwd:4T8BipohUSo0fd1z+Z/SOOfd
a=rtcp-mux
a=candidate:10 1 UDP 184544254 52.114.73.200 52284 typ relay raddr xxxxxx rport 50010
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:6WFePvmprtmBvE9ftmV9BhgDnF8JiOd7o/XNAxZ4|2^31
a=rtpmap:0 PCMU/8000
a=rtpmap:13 CN/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ptime:20

 

hope they pick it up soon
a=maxptime:200

You are also right @Matej_Maric, I didn't provide OK message with final SDP assuming as not necessary as MS already offered my payload type, right...

 

At the end I just forced on my SBC to use all the time 101 for Teams side. It was also confirmed to me as behind scenes conversations that they do not expect anyway nothing else than PT 101 from customers. 

www.000webhost.com