I am currently running the latest FPBX 16 with Asterisk 18. Currently in the experimentation phase
I have a Polycom IP650 using the commercial endpoint manager to configure it.
I currently have a live FPBX 2.11 system with the same phones and similar config where this problem doesn’t exist.
What I have found is on the old system, a standard extension with one line when called returns busy if they are on a call. Perfect… However on the new system the Polycom reacts as if call waiting is enabled. Call waiting is enabled in the config of the phone the same as the live system as we do have some extensions where this is used. CW is then controlled on a per extension basis within FPBX. With the new setup whether CW is enabled or disabled the phone always reacts as if CW is enabled.
Am I missing something somewhere, been at this for a few days now and can’t see what I’m missing.
Basic debug for call waiting would be to confirm that the astdb records are being set and unset properly. At the Asterisk CLI try the following for the extension in question:
To rule out a phone config issue I took a copy of the various cfg files from the live server, copied them to the dev server, formatted the handset and applied the copied files - bypassing the endpoint manager. The problem still remains. It looks like the system is still sending the call to the handset even though CW is clearly disabled.
/var/log/asterisk/full:[2022-06-28 13:21:45] VERBOSE[30675][C-0000003a] pbx.c: Executing [s@macro-dial-one:19] GotoIf("PJSIP/5131-0000004e", "1?continue") in new stack
This line is checking the EXTENSION_STATE for the dest extension and it’s not returning BUSY for some reason. I don’t know why that might be, possible fault with asterisk, in which case a restart might be in order.
Interesting. I’ve just rebooted the system but the problem still remains. I’m not sure what to try now. The big difference to me between the systems is that the old is SIP and the new is PJSIP. Would this have any impact?
I’m also unable to select SIP as it doesn’t look to have compiled during the install so is unavailable.
What is the Device Busy State at set to in the Advanced tab of the extension? By default it is 0 which means the endpoint will never return a BUSY state when in use. Call Waiting is just a function that looks for a state of a device and if state = X then CW is used (or not).
If you want to disable CW and have it return BUSY with one active call, set Device Busy State at to 1
This is something that needs to be looked at more. If one of those three states match, it makes the jump. Is it still seeing the state as NOT_INUSE for some reason? Or are one of the other two states being returned.
Might need to whip something up to test this with that will spit out the results of EXTENSION_STATE() when it is checked. @lgaetz Got something in your back pocket for that?
[macro-dialout-one-predial-hook]
exten => s,1,Noop(********************************************************)
exten => s,n,Noop(Extension state for ${DEXTEN} is ${EXTENSION_STATE(${DEXTEN}@ext-local)})
exten => s,n,MacroExit
That will show the ext state of the destination extension, but if things are working properly, then then hook won’t even be called. It might be illustrative.