Hi Guys,
here’s my scenario;
Ext 201 called Ext 202 but 202 is busy. Is it possible to create a dialplan that checks the status of 201 then when it is no longer busy, both 201 and 202 rings and when picked up both parties can talk to each other. is this even possible?
Definitely possible.
Programatically generate a .call file after a 486 (busy) return code.If you need to do that callback exactly when the other extension becomes free you need to listen to manager events and react to them. This means after a busy line you log the required action into you application and do an originate from there when the Peer Status event is received.
Hi, Thanks for your reply.
Is there a guide somewhere where I can start this?
It sounds like you are trying to implement the Busy Redial / Repeat Dialing / Continuous Redial *66 CLASS feature. I have this on my switch. When 202 is free, 201 is called back with a distinctive ring, and if 201 answers, then 202 is called back.
Mine is not automatic but requires dialing *66 or 1166 to activate. At that point, I use ${DEVICE_STATUS()} to see if the peer is in use. I like DEVICE_STATUS because you don’t need to dial the endpoint to see if it’s busy or not.
In another system, I extended this to work between nodes, by using a Dial() and having the remote end hang up with a certain hangup cause code to indicate the status of the peer. Usually CLASS features only work on the same switch, though.
If it’s busy, I spawn a monitoring context that periodically polls the device status for up to 30 minutes, and if it becomes idle, call the original caller back with a distinctive ring. I also have *86 set up to cancel.
No right way to do this. In my case, I wanted a replica of the CLASS feature, but you could do the same thing automatically as well. I use call files and do everything in the dialplan instead of using AMI.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.