Call waiting and hold

Hello, everyone!
I would like to implement call waiting and hold like they work in PSTN. As I have read, call waiting is done on the side of softphones/sip phones. I have enabled call waiting on my softphone. When I call as a second line, it now works, but, when I answer the second line, the first line is not put on hold and gets disconnected. I have set device_state_busy_at = 2 for a particular endpoint, but this does not help. How does it work?

Where does it get disconnected from, Softphone, Asterisk, Caller?
Provide Asterisk CLI logs with sip debug on for one such call to suggest some solution.

I have tested this on different soft phones. With one it worked. I have set device_state_busy_at to 0, it worked again with the same softphone. Is callwaiting and hold implemented entirely on the side of phones? Also, it would have been good to play an incoming message to the second line. Is it done in asterisk?

It’s up to the endpoint. The option you mention is strictly for device state in Asterisk, so Asterisk can say that an endpoint is busy as an endpoint may be able to handle 2, 4, 6, etc calls so without explicit configuration Asterisk has no idea when a device should be considered “in use” vs “busy”.

Thank you for quick response.

So, to play a message for the second incoming call, I need to check if an endpoint is in use or busy?

Yes, it’s up to you to write the dialplan logic using the tools that Asterisk provides. For example, the DEVICE_STATE dialplan function[1].


I have tested, how call waiting and hold work with DEVICE_STATE and DIAL. The problem in my situation is that Asterisk only knows that an endpoint is INUSE and cannot predict, whether it will issue BUSY or not. Asterisk played an announcement (the subscriber is talking over another line, please hold on or call later) and then dialed the endpoint, but got different results: if an endpoint permitted multiple lines, it worked okey; if not, it received BUSY. I cannot understand how to implement playing an announcement and not depend on the settings of a particular softphone.

The device_state_busy_at option you mentioned controls when Asterisk signifies an endpoint is busy for device state or not. Did you remove this? Is it not working?

Now this option is removed.

The option has to be set and configured for an endpoint to have a busy device state.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.