Pre call detection if RTP exchange is possible or not

Is there any way that before dialling to 2nd party I can detect if RTP packet exchange is possible or not? and disconnect the call if exchange is not possible.

On calls I see reason for one way voice is that Asterisk is not getting RTP packets from SIP user. So I want such calls not to be processed.
I tried BACKGROUNDDETECT, but even when RTP packets are coming but silence in audio then it does not redirect to talk extension.

Or is there any solution to avoid one way audio in case when SIP softphone is not sending RTP packets.

There is no way of forcing the caller to send early media. You would need to send early media yourself (Progress application) for it to even have your IP address to send you any media.

You definitely can’t force the called party to send early media, and even if you could, their phone would still ring and you might not be able to cancel the call before they answered.

You need to discover and fix your network problem, instead.

I am using PROGRESS application and after then I tried putting BACKGROUNDDETECT (parameters:- file=silence/4, sil=1, min=1, max & analysistime are left blank) to send early media from asterisk and monitor reverse media but that did not work most of the time as expected. As backgrounddetect check for non-silence not the RTP packets presence, am I right?

There is no problem at the called party end. I just want to check for caller side.