In some occasions, a call attempt may be cancelled due to differences in early media expectations onPBX.

 

An example of this can be for  a SIP trunkingscenario (i.e. ITSP<---SBC<—PBX),  where a PBX makes an outbound call towards the ITSP.
If the PBX expects to see a 180 message from the remote side, (not a 183 with SDP), the SIP invite timer on the PBX will expire and will send a CANCEL to end the call attempt.

 

So if you want to force the SBC to send a 180 to the PBX instead of 183 w/ SDP, add the following to the dialplan:


<action application="set" data="ignore_early_media=ring_ready"/>

 

Find below a samplepcap traceof this scenario.

PBX: 10.10.1.2
SBC: 10.10.11.217
ITSP: 218.188.75.170



As seen, after the PBX sends an INVITE out, a 183 w/SDP comes back from the ITSP which is sent through the SBC to the PBX.
The PBX then waits for about 30 seconds, before sending a CANCEL message.
Expanding on the Reason Code, ‘recovery on timer expiry’ is indicated. 

You can collect the PBX logs to further identify the reason for call cancellation.

 

If the PBX must receive a 180 instead of 183 then, simply use the channel variable ‘ignore_early_media=ring_ready’ to force a 180 to be sent to the PBX.
For the dial plan (the one used to send calls to the ITSP from the PBX), this is what you enter:

If you are using the ‘advanced dialplan routing’ with regular expression, use the following and insert above the ‘bridge’:

<action application="set" data="ignore_early_media=ring_ready"/>