Thank you for your Answer!
May I ask what kind of SBC you are using?
We also use Audiocodes SBC’s, which are working great, but even those send Record-Route Headers.
Maybe I need to explain the szenario a little better…
In the teams client I dial an external number ( my mobile phone for example )
I pick up, and then push hold in the teams client. ( So far so good )
When I try to unhold, of course also in teams, it becomes silent on both ends. ( even the moh stops )
And then as I said I see a few OK Messages being retransmitted to the Microsoft servers.
Its funny that you say you don’t need Record-Route Headers at all, because without setting those, I cant even make incoming calls work.
With those headers, everything works perfectly except for the thing explained above.
Even when trying to get incoming calls back from hold on teams. ( PSTN – freeswitch – teams, hold / unhold on teams )
I also found a tutorial from kamailio on how to connect it to teams.
There they also state that the record-route headers a needed.
Thank you again David!
Regards,
Stefan
It has not been my experience that Microsoft Teams direct routing requires a Record-Route header on requests / responses you send to it (though their requests will have an RR and you must Route accordingly)
Here is a sip trace showing a successful on-hold / off-hold scenario from one of my servers (not a freeswitch server). This is an on-hold triggered from the MS teams client, not sure if you are trying to do the reverse.
One thing: make sure the Contact header in your INVITEs resolve to a single server, otherwise (if you have mutiple A records for the DNS name) you will find that MS Teams will gladly respond to a reINVITE to a completely different server than you sent from — this will manifest as not seeing the 200 OK to a re-INVITE you send, or not seeing the ACK when you respond 200 OK to a re-INVITE.
One thing to make sure of is that
we're trying to use Freeswitch as a Microsoft Teams direct routing SBC.
So far everything works perfectly, except getting the call back from hold on an outbound call.
The Problem is that Microsoft expects a Record-Route Header in every Request and every Response.
I have been able to set/rewrite this Record-Route header with sip_h_ and sip_rh_ in most szenarios, but like i said - unhold on an outgoing call does not work.
The hold is initiated with a reinvite with a=inactive in sdp, which does work.
However, the unhold - also a reinvite with a=sendrecv in sdp does not work correctly.
In the sip-trace i see that the OK ( in response to the INVITE for unhold ) gets retransmitted a couple of times, because the ACK from microsoft isn't received.
This is due to the missing Record-Route Header in the OK Message.
I have seen this behavior on inbound calls too, when i didnt set the Record-Route Header.
Is there any way to add the Record-Route Header to every Message on a sip-profile or gateway?
Or if not, is it possible to handle a reinvite in dialplan so i could set the header manually?
Maybe there is somebody who already has this working that could point me in the right direction.
I know freeswitch isn't a SBC, but it would be nice to be able to use freeswitch as a Teams-SBC without Kamailio or something similar.
Any help is very much appreciated 🙂