in this article I’ll show you how to solve a very strange behaviour of Ribbon SBC EDGE (1K/2K) in a Microsoft Teams Direct Routing scenario, where the SIP Response 486 Busy Here is not correctly converted in the Q.850 Cause Code 17 in a TDM (PRI/BRI) PSTN connection
How to enable Busy on Busy in Teams
Busy on Busy is a very common and required feature that block a second incoming call to a user who is already on call.
Caller will get a busy tone, callee do not get any disturbing alert or message, only a Missed Call notification in Calls History in Teams
To enable Busy on Busy, you need to enter the TAC (Teams Admin Center) via https://admin.teams.microsoft.com, go to Voice -> Calling policies -> <Policy name> and flag the “Busy on busy is available when in a call” option
Tracing a second call to a user (already in a call), we will get an inbound 486 Busy Here SIP Response Code from MS Phone Systems like this one
SIP/2.0 486 Busy Here
CSEQ: 2 INVITE
REASON: Q.850;cause=63;text="4656976f-d6a4-49de-9f8b-39b448e440f8;User is busy and currently active on another call."
In a SIP to SIP scenario, 486 Busy Here would be a clear command for both MS Phone System and for PSTN Carrier, but TDM lines (ISDN PRI E1/T1 or ISDN BRI) use instead Q.850 Cause Codes.
Two Q.850 Cause Codes are important here:
|17||User busy |
This cause is used to indicate that the called party is unable to accept another call because the user busy condition has been encountered. This cause value may be generated by the called user or by the network. In the case of user determined user busy it is noted that the user equipment is compatible with the call.
|63||Service or option not available. unspecified |
This cause is used to report a service or option not available event only when no other cause in the service or option not available class applies.
When I started to test Busy on Busy with Teams Direct Routing I noticed that the caller of the second call do not received a busy tone, instead he get a Call Failed error. Not so good. Time to dig deeper….
Coming back to the SIP Trace in LX, I see the 486 Busy Here from MS Phone System and a Disconnect with
"Cause = 63, Service or Option Not Available, Unspecified"
This is the simplified Call Flow
Follow these steps to fix this issue (bug?)
1. In Ribbon SBC web admin page, go to Settings -> SIP -> Message Manipulation -> Message Rule Tables and click + to create a new rule
2. In Create Message Rule Table enter a Description like “Busy Here” and select “486 Busy Here” as Message Selection like in the image below
3. Select the newly created Message Rule Table (Busy Here in the example) and click Create Rule -> Header Rule
4. Enter these value like the image below
Description: Header Result Type: Optional Header Action: Remove Header Name: Reason Header Ordinal Numer: All
5. Go to Signaling Groups and select the Teams Direct Routing SG.
Enable Message Manipulation (if not enabled yet) and click Add/Edit
4. Select the new Message Manipulation Table then OK then Apply
After this change, the Cause Code in the Disconnect Message is different
Cause = 17, user Busy
and the second Caller do not get any Call Failed error!
As always, I hope this article could help some of you.