- Joined
- Aug 6, 2014
- Messages
- 7
- Reaction score
- 0
Dear all,
This is my first post, and I'll try to explain as best as possible. Please do not judge me very hard, since I am new to the Telephony world. So here is the deal...
I've a 3CX installation. It is connected to various SIP Providers. Couple of trunks are delivered via a mobile telephony provider. They have an option to terminate to a SIP Trunk and to a SIM simultaneously. If an incoming call is on its way, the ACK package is delivered first to the SIP Trunk (it starts ringing the associated extension) and exactly two seconds later the mobile is also ringing.
SIP Trunk is associated with an extension (for example 100), and when a call is coming, the extension rings. If the extension is busy or not registered, the call is transfered to another extension (ex. 101). If this second extension is also busy or not registered, the call is terminated. In most of the cases this is workable, but in some cases when 100 is unregistered and 101 is busy or unable to accept the call, the call is terminated immediately and it is even unable to ring the mobile.
Few solutions comes in my mind:
First: Create an extension (ex. 599), register it with a softphone on the server, and if 100 or 101 are unable to accept the call, it is redirected to 599, which will ring indefinitely, until the mobile is not picked up. The problem is that I've 10 trunks like this one, and if 599 is ringing, it is not able to accept additional ring request.
Second: Neatest according to me is to create an application in PHP which will change the parameter responsible for "Allow incoming call on this line", and will disable the incoming calls. Once the user want to reroute its communication through the PBX, he will follow a link which will access the application, which on its side will change the parameter in the DB. The problem is that 3CX should be forced to reload its configuration from the DB. And the only known way to me is to restart it. Which is strongly unacceptable, because it'll disconnect all the conversations, and will take some time to reload all the components.
Do you know some way except the WebGuiInterface.exe and the http interface by which we're able to change this parameter? I was thinking to extend the CRM IVR API, but this one includes a lot of debug, decompile and disassembly of C# 3CX internals. Once again unacceptable. Another option is to find out how the WebGuiInterface.exe is communicating with the actual service, I guess it is through an RCP channel or something? If I know the way, perhaps I'll be able to write an application which will be able to change this parameter... the problem is that there's no documentation.
Third: Create a dummy extension which is able to accept indefinitely number of rings simultaneously, with out accepting the call. As far as I know 3CX does not support such thing.
Fourth: Install FreeSWITCH somewhere, and define such extension as in the Third option. Then define FreeSWITCH as a SIP Trunk VoIP provider to 3CX and redirect the call to this Trunk. Unfortunately once the call is redirected to another SIP Trunk, 3CX is connecting the call to this Trunk, so the mobile once again will not ring, the calling party will see an established connection, but still will hear the Ringing tone in the earpiece.
Perhaps additional options are also possible, but I am out of ideas.
Any advice, or maybe someone have such experience?
This is my first post, and I'll try to explain as best as possible. Please do not judge me very hard, since I am new to the Telephony world. So here is the deal...
I've a 3CX installation. It is connected to various SIP Providers. Couple of trunks are delivered via a mobile telephony provider. They have an option to terminate to a SIP Trunk and to a SIM simultaneously. If an incoming call is on its way, the ACK package is delivered first to the SIP Trunk (it starts ringing the associated extension) and exactly two seconds later the mobile is also ringing.
SIP Trunk is associated with an extension (for example 100), and when a call is coming, the extension rings. If the extension is busy or not registered, the call is transfered to another extension (ex. 101). If this second extension is also busy or not registered, the call is terminated. In most of the cases this is workable, but in some cases when 100 is unregistered and 101 is busy or unable to accept the call, the call is terminated immediately and it is even unable to ring the mobile.
Few solutions comes in my mind:
First: Create an extension (ex. 599), register it with a softphone on the server, and if 100 or 101 are unable to accept the call, it is redirected to 599, which will ring indefinitely, until the mobile is not picked up. The problem is that I've 10 trunks like this one, and if 599 is ringing, it is not able to accept additional ring request.
Second: Neatest according to me is to create an application in PHP which will change the parameter responsible for "Allow incoming call on this line", and will disable the incoming calls. Once the user want to reroute its communication through the PBX, he will follow a link which will access the application, which on its side will change the parameter in the DB. The problem is that 3CX should be forced to reload its configuration from the DB. And the only known way to me is to restart it. Which is strongly unacceptable, because it'll disconnect all the conversations, and will take some time to reload all the components.
Do you know some way except the WebGuiInterface.exe and the http interface by which we're able to change this parameter? I was thinking to extend the CRM IVR API, but this one includes a lot of debug, decompile and disassembly of C# 3CX internals. Once again unacceptable. Another option is to find out how the WebGuiInterface.exe is communicating with the actual service, I guess it is through an RCP channel or something? If I know the way, perhaps I'll be able to write an application which will be able to change this parameter... the problem is that there's no documentation.
Third: Create a dummy extension which is able to accept indefinitely number of rings simultaneously, with out accepting the call. As far as I know 3CX does not support such thing.
Fourth: Install FreeSWITCH somewhere, and define such extension as in the Third option. Then define FreeSWITCH as a SIP Trunk VoIP provider to 3CX and redirect the call to this Trunk. Unfortunately once the call is redirected to another SIP Trunk, 3CX is connecting the call to this Trunk, so the mobile once again will not ring, the calling party will see an established connection, but still will hear the Ringing tone in the earpiece.
Perhaps additional options are also possible, but I am out of ideas.
Any advice, or maybe someone have such experience?