SIP-to-ISDN Disconnect Release Cause Code Mapping
For trunks configured for the Japanese NTT ISDN PRI (T1) variant, you can configure the device to send an ISDN Disconnect message if it receives from the IP network a SIP 183 response with SDP that contains a specific cause value (SIP status code) in the Reason header, in response to an INVITE message. The device translates this cause code in the Release Cause field of the outgoing Disconnect message. After the device sends the Disconnect message, it can send early media (e.g., an announcement) received from the IP side to the ISDN. If after sending the Disconnect message the device receives a SIP failure response (e.g., 4xx) or a 200 OK from the IP side, it sends a Release message to the ISDN. However, you can configure the device to send the Release after a user-defined timeout, activated from when the Disconnect is sent, if no SIP message is received. The timeout is configured using the [ISDNJapanNttTimerT305] parameter. If the device receives a SIP failure response or 200 OK before the timeout expires, it sends the Release instead of waiting for the timeout to expire.
The above described behavior is configured using SIP Message Manipulation rules.
|
●
|
This feature is applicable only to digital interfaces (T1 NTT protocol variant), and applies only to Tel-to-IP calls. |
|
●
|
For normal Disconnect scenarios (not due to SIP 183 with specific cause), you must configure the timer to 30 seconds, using the [TimeToWaitForPstnReleaseAck] parameter. |
|
➢
|
To configure the ISDN Disconnect feature: |
|
◆
|
'Name': Clean var with cause |
|
◆
|
'Manipulation Set ID': 0 |
|
◆
|
'Message Type': Invite.Request |
|
◆
|
'Action Subject': Var.Call.Dst.0 |
|
●
|
Index #1 (specifies the cause value in the SIP Reason header of the 18x response): |
|
◆
|
'Name': Disconnect on 183 with cause |
|
◆
|
'Manipulation Set ID': 1 |
|
◆
|
'Message Type': invite.response.18x |
|
◆
|
'Condition': header.Reason.Reason.Cause == '1' or header.Reason.Reason.Cause == '22' or header.Reason.Reason.Cause == '31' |
|
◆
|
'Action Subject': Var.Call.dst.0 |
|
◆
|
'Action Value': header.Reason.Reason.Cause |
|
●
|
Index #2 (adds X-AC-Action header): |
|
◆
|
'Name': Add X_Action header |
|
◆
|
'Manipulation Set ID': 1 |
|
◆
|
'Action Subject': Header.X-AC-Action |
|
◆
|
'Action Value': 'SendPSTNDisconnect;Q850Cause='+var.Call.Dst.0 |
|
●
|
Index #3 (if SIP 410 response, translate to 102 cause in ISDN message): |
|
◆
|
'Name': Add reason if not exist |
|
◆
|
'Manipulation Set ID': 1 |
|
◆
|
'Message Type': invite.response.410 |
|
◆
|
'Condition': Var.Call.Dst.0 != '0' and header.Reason !exists |
|
◆
|
'Action Subject': header.Reason |
|
◆
|
'Action Value': 'Q.850 ;cause=102 ; text="recovery of timer expiry"' |
|
◆
|
'Name': Translate 3xx to 500 |
|
◆
|
'Manipulation Set ID': 1 |
|
◆
|
'Message Type': invite.response.3xx |
|
◆
|
'Condition': Var.Call.Dst.0 != '0' |
|
◆
|
'Action Subject': Header.Request-URI.MethodType |
|
◆
|
'Name': Add reason if not exist |
|
◆
|
'Manipulation Set ID': 1 |
|
◆
|
'Condition': header.Reason !exists |
|
◆
|
'Action Subject': Header.Reason |
|
◆
|
'Action Value': 'Q.850 ;cause=31 ; text="normal, unspecified"' |
The cause codes in the above Message Manipulation rules are used only as examples; you can define different cause codes according to your requirements.
|
2.
|
Assign Manipulation Set #1 to inbound calls, by configuring the [GWInboundManipulationSet] parameter to [1]. |
|
3.
|
Assign Manipulation Set #0 to outbound calls, by configuring the [GWOutboundManipulationSet] parameter to [0]. |
|
4.
|
(Optional) Configure how long the device must wait before sending an ISDN Release message if no SIP message is received, using the [ISDNJapanNttTimerT305] parameter. An explanation on this feature is described at the beginning of the section. |
For Step 4, make sure that the [IPAlertTimeout] parameter value is greater than the [ISDNJapanNttTimerT305] parameter. If not, the device will use the timeout configured by the [IPAlertTimeout] parameter.