Extension busy notification for Analog Phones


I have in my setup both multiline IP phones and regular analog phones/cordless phones (connected via FXS interfaces).

The IP phones have BLF, so when you want to call some other extension you can immediately tell in advance if the called party is already on a call.

However, when analog phones call an IP phone, you get a ringtone (since IP phone are multiline and call waiting is enabled). However the calling party has no clue whether the called party is on another call or away from his desk–all he hears is the ringtone.

BTW, in legacy PBXs there was often a provision for this situation (where a regular key-less phone would get instead a busy tone)

What I would like to do is:

  1. Insert some code in the dialplan to check on the DEVICE_STATE of the called extension
  2. If called extension is in “NOT_INUSE”, just go on with the normal dialplan
  3. Otherwise, play a message, then continue with the normal dialplan

This way the calling party (again, he is using an analog phone with no BLF whatsoever) can tell if the called party is busy and decide to either let the phone ring or hangup and try later.

Another requirement is that this dilaplan snippet should be run only when calling other extensions, not when calling to trunks.

Finally, it would be great to enable this dialplan snippet from the GUI and only for selected phones (no point running the snippet on regular IP phones wich have BLF keys).

What would be the best approach? I was thinking of a sort of predial hook, I did notice the macro-dialout-trunk-predial-hook, but this is obviously for trunks.

Any ideas are most welcome, thanks in advance!

If CW in enabled, you will not get a busy.


Yes, I know, but disabling call waiting on multiline IP phones it’s not an option. Sorry I didn’t mention it in my first post.

It will if you let FreePBX do it. It will send the new call to your busy extension if there is a current call ongoing.

I’ve been looking into this for quite some time now, and I don’t see many ways around it. Perhaps the old farts who designed legacy PBXs weren’t that stupid, after all.

You see, the guy with the analog phone is essentially blind. He doesn’t have any LEDs, no BLFs, no nothing. The task is simple, as I described in my first post: let this guy know if another extension (which, in the legacy PBX, might or might not be a multiline key phone) is busy or not. The approach for ex. on a Samsung PBX was to play busy tone to all analog extensions; digital phone extensions on the other hand could camp-on (since you had a display and several function keys).

I hope I managed to clarify what and why I am trying to do.

I do not want to turn off call waiting because I think it’s plain silly (on a multiline phone).
If I don’t turn off call waiting, the above suggestion from Dicko won’t work (because the called extension isn’t busy–it has call waiting enabled and six SIP lines!).

I believe the only way around this is to try writing some dialplan; also, the check must be done on the calling side, not on the called side. So, any ideas where I can start to have a look? Are there any pre-dialing hooks I can use?

Sorry, still don’t get it. On all the traditional PBX’s I oversee including Samsungs, there is not one that has a different behavior between a SLT and a MultiLine set when calling, If the Called party is prepared to accept a call, even if not immediately, ringtone will be played to all callers until the timer expires and the call is sent to the busty destination, this goes for extensions inside and outside the PBX, surely this is the default behavior of SLT’s all over the world, no?

Similarly, in the reverse direction just as with Asterisk, called parties with an SLT will here a “call waiting” tone on the line if another call presents, a hook-flash will connect to the callee and place the current call on hold. Asterisk also has had camp-on for a couple of years for users blind or not to set a call-back against a busy extension, again internally or externally.

On this Samsung (maybe it’s different firmwares for different regions/countries) which was replaced, when you call an extension that is currently busy:

  • from SLT: you get busy tone
  • from multiline/key phone: you get busy tone, but on the display you get option for CAMP-ON (and callee gets audio notifications every few seconds)

For example, another difference is also the behaviour mentioned in your next paragraph: “a hook-flash will connect to the callee and place the current call on hold”. From my experience, in case of “business” PBXs a hook flash on SLT in said situation will result in current call on hold but also new dialtone (not connect to the callee). This is actually another pending issue: I will post a new thread and I hope I can get some feedback from you.

Anyway, my initial question was concerning whether there was a hook I could use to play around with a bit of code, and see if this leads anywhere.