Checking for dialtone before dialing on Zap channel?

I’ve exhausted myself trying to look for an answer to this question.
We have an analog phone connected directly to the jack in the wall and all incoming calls are answered on that phone. However if we get a call over sip and we want to bridge the call to a mobile number locally we brisge the call on the zap channel.

Howver, the problem is that if someone is on the phone on the analog phone, there is no dialtone so when asterisk tries to bridge the call the tones are heard trying to make the call to the mobile device.

is there a way for asterisk to check if dialtone exists on the zap channel before trying to dial out?

I tried the ChanIsAvail but that does not seem to be the answer and also the $AVAILSTATUS variable always returns “0”.

any help will be appreicated please.


big limitation in Zap on analogue lines i’m afraid.

check the wiki for NVLineDetect, or Newman Telecom … they have assorted Asterisk apps that do line detection and might be able to help you.

of course, you could just allow Asterisk complete control of the analogue line and connect all handsets as Asterisk devices.

yeap … I have considered that definitely however the other issue is that I have callwaiting on that analog port. The last time I installed asterisk, i could not flash over when i was on an incoming zap call. Do you know if this has been fixed? if it has then I might bite the bullet and go ahead and register all devices as sip devices.

finally i am guessing chanisavail will work if the zap channel is in use by a sip registered device right?


Have you found a solution to the dialtone detection problem? I have both Asterisk with X100P cards and analog phones connected on the same lines and when an analog phone is on a call the Zap channels won’t check for dialtone and they will simply start dialing on the in use line.

Any solutions?