3CX automatic change of numbers weekly

Alle CTEC

Silver Partner
Advanced Certified
Joined
Sep 11, 2023
Messages
356
Reaction score
44
Hello everyone, I'm being asked to implement a service that's active from Monday to Saturday during certain hours. For example, Monday to Saturday from 8:00 AM to 8:00 PM, this service needs to have 5-point options that will forward calls to mobile numbers. Now, since the number of mobiles that will answer varies from week to week, I'm asking for an automatic system to change the number of mobiles to which calls will be forwarded each time. I don't think this is possible with 3CX unless you use a call flow that reads a file containing the numbers with an automatic system that modifies the files as needed. Is this correct?
 
I encourage you to take a look at our 3CX On Call Manager. This will handle the entire process for you including:
  • Recurring schedules (Example: employee is on call every 3 weeks Mon-Sat)
  • Handle live calls, voicemails, or both
  • Support multiple people in each escalation level (up to 30 levels)
  • Notifications by phone, email and native SMS
  • Escalation of the assigned level if previous level did not answer the call or listen to the voicemail
  • Log the entire process (did we meet our customer SLA, did the employee meet our internal SLA, and notes about the event/actions taken),
We have you covered!
 
I don't think this is possible with 3CX unless you use a call flow that reads a file containing the numbers with an automatic system that modifies the files as needed. Is this correct?
yes: a call script with parameters in a file, in the code itself, in a 3CX global parameter or asking another (external) service - many solutions are possible
or using a external system which sets all this with the xapi
 
The easiest way is storing those 5 mobile numbers in 3CX global parameters. The CFD app can easily read them and transfer the call to the corresponding mobile for the selected option. You can easily change the values from the 3CX console. No external system, text file, etc is required.
 
First of all, thank you all @VoIPTool Thank you for the suggestion but the customer does not want to incur additional license or software costs :( so follow my reasoning since I have a dedicated trunk for this service if I would have the IVR managed directly by 3CX classic menu press 1 ... 2 ... 3 ... obviously the forward button to a queue containing an extension with associated mobile ringing ok. I create a script that via 3CX user API at a certain time changes the mobile number associated with the extension. In my opinion it is the best solution because by doing so the customer if he needs to make changes does it directly from the 3CX Web Management for example in progress during the week he needs to change a mobile phone he does it from 3CX without modifying files
 
First of all, thank you all @VoIPTool Thank you for the suggestion but the customer does not want to incur additional license or software costs :( so follow my reasoning since I have a dedicated trunk for this service if I would have the IVR managed directly by 3CX classic menu press 1 ... 2 ... 3 ... obviously the forward button to a queue containing an extension with associated mobile ringing ok. I create a script that via 3CX user API at a certain time changes the mobile number associated with the extension. In my opinion it is the best solution because by doing so the customer if he needs to make changes does it directly from the 3CX Web Management for example in progress during the week he needs to change a mobile phone he does it from 3CX without modifying files
That's a valid approach, but you will be using dummy extensions for this, in order to set different mobile numbers, and just to send calls to them. Another approach is just having the numbers as 3CX global parameters, and from a CFD app read those values and handle the transfer accordingly. This way you don't have problems with the Extensions / SC restriction.

Changing the mobile numbers stored in 3CX global parameters can be done from the 3CX console, or also from a second CFD app.
 
Sorry, but I actually meant to set up users with a paired mobile phone. It's the "ring the paired mobile phone" option so that the automation via the 3CX configuration API changes the mobile numbers associated with the extension at a certain time. Let me explain, the shift change occurs at a time when no one is in the office, so the manager pre-configures a file containing the numbers for the next shift, and the automation changes them. But if they need to be changed during the week, there's nothing simpler than the 3CX interface changing the direct number. Or a call flow with the number change in the global parameters, okay? If I'm not mistaken, if I manage everything with a call flow I can make multiple calls to the mobile number in a cleaner way without creating many nested groups. Correct me if I'm wrong. If I create a queue with a 30-minute time limit and add the user with the associated mobile phone ringing, only one call is made to the mobile number. If there's no answer, it follows the no-answer path.

Thank you
 
Yes, both approaches are valid:
1) You can use the mobile number of some extensions, and route to those extensions when needed, having the "ring my mobile" option set. From a CFD app or the 3CX console you can change these mobile numbers for your extensions.

2) You could just have global parameters in 3CX storing the mobile numbers for each option. For example, a parameter named MOBILE_NUMBER_FOR_OPTION_1, with value 123456789. Another parameter named MOBILE_NUMBER_FOR_OPTION_2, with value 987654321. And so on. Then, when you need to route calls for option 1, the CFD app reads the parameter MOBILE_NUMBER_FOR_OPTION_1, and transfers the call to the value taken from there. These values in 3CX global parameters can be changed from the 3CX console, or from a second CFD app.

You can follow any of those paths, the result will be more or less the same, just a different implementation.
 
  • Like
Reactions: Evolute IT
Yes, both approaches are valid:
1) You can use the mobile number of some extensions, and route to those extensions when needed, having the "ring my mobile" option set. From a CFD app or the 3CX console you can change these mobile numbers for your extensions.

2) You could just have global parameters in 3CX storing the mobile numbers for each option. For example, a parameter named MOBILE_NUMBER_FOR_OPTION_1, with value 123456789. Another parameter named MOBILE_NUMBER_FOR_OPTION_2, with value 987654321. And so on. Then, when you need to route calls for option 1, the CFD app reads the parameter MOBILE_NUMBER_FOR_OPTION_1, and transfers the call to the value taken from there. These values in 3CX global parameters can be changed from the 3CX console, or from a second CFD app.

You can follow any of those paths, the result will be more or less the same, just a different implementation.
Correct me if I'm wrong. If I create a queue with a 30-minute time limit and add the user with the associated mobile phone ringing, only one call is made to the mobile number. If there's no answer, it follows the no-answer path.? Thank you
 
Correct me if I'm wrong. If I create a queue with a 30-minute time limit and add the user with the associated mobile phone ringing, only one call is made to the mobile number. If there's no answer, it follows the no-answer path.? Thank you
I'm answering because I did a test with an internal extension, so if the cell phone has an active voicemail, it enters the cell phone's voicemail, if it has a transfer set, it follows the transfer set on the cell phone, if you simply don't have any services set, then hang up the call, 3cx will call you back always.

Thank you
 
If you are concerned about the mobile phone voicemail answering the call, you can partially avoid this by configuring the queue to use the round-robin polling strategy. It will ring the agent for the specified time, hang up, and call them again, and stay in this loop until the global max wait time for the queue is reached. However, this does not address the situation where the mobile phone is turned off, or out of a service area (possible while driving in a rural area for example). In this case the call will immediately route to the mobile phone voicemail.
 
If you are concerned about the mobile phone voicemail answering the call, you can partially avoid this by configuring the queue to use the round-robin polling strategy. It will ring the agent for the specified time, hang up, and call them again, and stay in this loop until the global max wait time for the queue is reached. However, this does not address the situation where the mobile phone is turned off, or out of a service area (possible while driving in a rural area for example). In this case the call will immediately route to the mobile phone voicemail.
Thank you so much, I hadn't thought of that. If the smartphone device doesn't have a cell phone or signal, we can't manage it. I have one question, though: can 3CX detect that the cell phone's voicemail has been accessed and leave a message with a text-to-speech voice? Thanks a lot, you've been a great help. I'll implement the script tomorrow and post it in case anyone needs it.
 
Thank you so much, I hadn't thought of that. If the smartphone device doesn't have a cell phone or signal, we can't manage it. I have one question, though: can 3CX detect that the cell phone's voicemail has been accessed and leave a message with a text-to-speech voice? Thanks a lot, you've been a great help. I'll implement the script tomorrow and post it in case anyone needs it.
No, 3CX cannot detect voicemails.
 
Please note: I ran the test on my control panel, which is Enterprise, the client's is Professional, so the APIs don't work. Are there any alternatives to modifying the user configuration?
 
Please note: I ran the test on my control panel, which is Enterprise, the client's is Professional, so the APIs don't work. Are there any alternatives to modifying the user configuration?
Try my suggested approach with a CFD app, no need to use any API in that case, totally supported in PRO.
 
Try my suggested approach with a CFD app, no need to use any API in that case, totally supported in PRO.
Okay, but how do I manage the number changes? I'll explain to you that the operator enters the new numbers before the end of the shift. So I need an automatic system to change them.

Thank you for your support
 
Wait, can I create a CFD application that changes the mobile numbers associated with the extensions and a dialer that calls the application at a specific time?
 
Wait, can I create a CFD application that changes the mobile numbers associated with the extensions
yes
There are many examples about that since years in the Forum. For instance, there's the MOBILENUMBER parameter for each user which can be modified using the standard CFD block SetDNProperty.

a dialer that calls the application at a specific time
Yes, it's possible in principle, but I strongly advise against it. Using a 3CX dialer as a scheduler for certain tasks has several disadvantages: it runs continuously (or at least it should), is difficult to modify (unless you create your own custom solutions) and the dialer doesn't start automatically with 3CX or after a service restart (which is always a bit of a problem). We don't do it that way anywhere.

There are other, more or less effective, methods for this.
For example, with a Windows 3CX installation, the Windows Task Scheduler can be used to trigger calls to your own 3CX via PowerShell.

the operator enters the new numbers before the end of the shift
where?
 
Okay, but how do I manage the number changes? I'll explain to you that the operator enters the new numbers before the end of the shift. So I need an automatic system to change them.

Thank you for your support
The idea is the following:
1) You create a CFD app to receive the calls.
  • In this CFD app you use the Menu component for your 5 menu options.
  • For each menu option, you use the Get Global Property component to read a 3CX parameter, for example "WEEKLY_DESTINATION_1". Each option will have its own parameter.
  • Once you have the destination, you use the Transfer component to transfer the call to that number.
2) The operator can use the 3CX Console > Admin > Advanced > Parameters to edit the value in those 5 parameters (one for each menu option).

If you can't give the operator permissions to make this change through the console, you can build a second CFD app which you can call, enter the number via DTMF, and save the updated numbers.
 
@fxbastler @edossantos_sipcaller Thank you for your support.

3CX is a Professional On Premise Debian V20.

Changing mobile numbers must be done during office hours. Since this is a scheduled change, I can use global variables and have the user modify them from the 3CX administration interface. This avoids compiling an XML example file that would then need to be uploaded to the 3CX control panel. In the demo CFDs, I've only seen examples with local paths. However, this CFD must be called at 11:30 PM every Saturday. Regardless of files or global variables, how can I trigger a scheduled automation to activate it?
 

Members Online Now

Forum statistics

Threads
111,834
Messages
589,287
Members
164,662
Latest member
DejanMDS