IntroductionHave you ever wondered why the jtel System has so many variables available in the configuration of the Service Number parameters? The following screenshots show you the parameters currently available. - So why so many?
- And why does the list keep on growing with every release?
- And what can I do with them?
Image Removed
Image Removed
Image Removed
Demo ScenarioTo help you understand, let's consider a simple demo scenario where the system is shared by several branch offices. Imagine, you need to build an IVR application which needs to do the following on the Munich service number:
General Parameters |
---|
Language - [$languages_id] : | Second Service Number - [$alternative_servicenumbers_id] : | User or Agent - [$usersID] : |
ACD Parameters |
---|
ACD Agent Group - [$acd_agent_groups_id] : | ACD Agent Group 2 - [$acd_agent_groups_id2] : | ACD Agent Group 3 - [$acd_agent_groups_id3] : | ACD Agent Group 4 - [$acd_agent_groups_id4] : | ACD Agent Group 5 - [$acd_agent_groups_id5] : | ACD Agent Group 6 - [$acd_agent_groups_id6] : | ACD Agent Group 7 - [$acd_agent_groups_id7] : | ACD Agent Group 8 - [$acd_agent_groups_id8] : | ACD Configuration Group - [$acd_configuration_groups_id] : | ACD Configuration Group 2 - [$acd_configuration_groups_id2] : | ACD Configuration Group 3 - [$acd_configuration_groups_id3] : | ACD Configuration Group 4 - [$acd_configuration_groups_id4] : | ACD Configuration Group 5 - [$acd_configuration_groups_id5] : | ACD Configuration Group 6 - [$acd_configuration_groups_id6] : | ACD Configuration Group 7 - [$acd_configuration_groups_id7] : | ACD Configuration Group 8 - [$acd_configuration_groups_id8] : | ACD Group (Standalone) - [$acd_groups_id] : | ACD Group 2 (Standalone) - [$acd_groups_id2] : | ACD Group 3 (Standalone) - [$acd_groups_id3] : | ACD Group 4 (Standalone) - [$acd_groups_id4] : | ACD Group 5 (Standalone) - [$acd_groups_id5] : | ACD Group 6 (Standalone) - [$acd_groups_id6] : | ACD Group 7 (Standalone) - [$acd_groups_id7] : | ACD Group 8 (Standalone) - [$acd_groups_id8] : | Skill 1 - [$acd_servicenumber_skillsID1] : | Minimum Skill 1 - [$acd_servicenumber_skillsValue1] : | Skill Timeout - [$acd_servicenumber_skillsTimeout] : | Call Priority - [$caller_priority] : | Do not send ALERT (ringing) at group start : |
Prompts |
---|
Prompt 1 - [$announcement1_id] : | Prompt 2 - [$announcement2_id] : | Prompt 3 - [$announcement3_id] : | Prompt 4 - [$announcement4_id] : | Prompt 5 - [$announcement5_id] : | Prompt 6 - [$announcement6_id] : | Prompt 7 - [$announcement7_id] : | Prompt 8 - [$announcement8_id] : | Prompt 9 - [$announcement9_id] : | Prompt 10 - [$announcement10_id] : | Prompt 11 - [$announcement11_id] : | Prompt 12 - [$announcement12_id] : | Prompt 13 - [$announcement13_id] : | Prompt 14 - [$announcement14_id] : | Prompt 15 - [$announcement15_id] : | Prompt 16 - [$announcement16_id] : | IVR-Menu Prompt - [$IVRMenu] : | IVR-Menu Prompt 2 - [$IVRMenu2] : | IVR-Menu Prompt 3 - [$IVRMenu3] : | IVR-Menu Prompt 4 - [$IVRMenu4] : |
IVR Statistics Markers |
---|
IVR Statistics Marker 1 - [$ivr_statistics_marker1_id] : | IVR Statistics Marker 2 - [$ivr_statistics_marker2_id] : | IVR Statistics Marker 3 - [$ivr_statistics_marker3_id] : | IVR Statistics Marker 4 - [$ivr_statistics_marker4_id] : | IVR Statistics Marker 5 - [$ivr_statistics_marker5_id] : | IVR Statistics Marker 6 - [$ivr_statistics_marker6_id] : | IVR Statistics Marker 7 - [$ivr_statistics_marker7_id] : | IVR Statistics Marker 8 - [$ivr_statistics_marker8_id] : | IVR Statistics Marker 9 - [$ivr_statistics_marker9_id] : | IVR Statistics Marker 10 - [$ivr_statistics_marker10_id] : |
TTS Parameters |
---|
TTS Engine - [$tts_engines_id] : |
Holiday Lists |
---|
Holiday List 1 - [$holidaylists1_id] : | Holiday List 2 - [$holidaylists2_id] : |
Opening Times |
---|
Opening Times 1 - [$openingtimes1_id] : | Opening Times 2 - [$openingtimes2_id] : | Opening Times 3 - [$openingtimes3_id] : | Opening Times 4 - [$openingtimes4_id] : | Opening Times 5 - [$openingtimes5_id] : | Opening Times 6 - [$openingtimes6_id] : | Opening Times 7 - [$openingtimes7_id] : | Opening Times 8 - [$openingtimes8_id] : |
Destination Numbers |
---|
Destination Number 1 - [$cnumbers1_id] : | Destination Number 2 - [$cnumbers2_id] : | Destination Number 3 - [$cnumbers3_id] : | Destination Number 4 - [$cnumbers4_id] : | Destination Number 5 - [$cnumbers5_id] : | Destination Number 6 - [$cnumbers6_id] : | Destination Number 7 - [$cnumbers7_id] : | Destination Number 8 - [$cnumbers8_id] : |
Users Profiles |
---|
Users Profiles 1 - [$usersprofiles1_id] : | Users Profiles 2 - [$usersprofiles2_id] : | Users Profiles 3 - [$usersprofiles3_id] : | Users Profiles 4 - [$usersprofiles4_id] : |
Lists |
---|
List 1 [$lists1_id] : | List 2 [$lists2_id] : | List 3 [$lists3_id] : | List 4 [$lists4_id] : |
Texts |
---|
Text 1 - [$text1] : | Text 2 - [$text2] : | Text 3 - [$text3] : | Text 4 - [$text4] : |
Demo ScenarioTo help you understand, let's consider a simple demo scenario where the system is shared by several branch offices. Imagine, you need to build an IVR application which needs to do the following on the Munich service number: - During office hours of the Munich branch
- play a welcome prompt "Welcome to our Munich branch"
- Ask the caller to press 1 for sales and 2 for technical support
- Connect to either sales or technical support, depending on the choice the caller makes
- Outside of Munich office hours or on German Holidays, play a prompt with the opening times of the Munich branch
You might build the application a little like this: Image Added
Then, a week later, you get a request to build the following application for the Amsterdam branch service number: - During office hours of a branch in Amsterdam
- play a welcome prompt welcoming the caller to the Amsterdam branch
- Ask the caller to press 1 for sales and 2 for technical support
- Connect to either sales or technical support department in Amsterdam
During office hours of the Munich branch- play a welcome prompt "Welcome to our Munich branch"
- Ask the caller to press 1 for sales and 2 for technical support
- Connect to either sales or technical support, depending on the choice the caller makes
- Outside of Munich Amsterdam office hours or on German Dutch Holidays, play a prompt with the opening times of the Munich Amsterdam branch
You might build copy the application a little like this: Image Removed
, and change the following: - Change the opening times and holidays to the Amsterdam and Dutch opening times and holiday lists
- Change the welcome and closed prompts to the prompts for the Amsterdam office
- Change the destination number used in the connect objects for Sales and Support
Then Then, a week later, you get a request to build the following same application for the Amsterdam branch service number: - During office hours of a branch in Amsterdam
- play a welcome prompt welcoming the caller to the Amsterdam branch
- Ask the caller to press 1 for sales and 2 for technical support
- Connect to either sales or technical support department in Amsterdam, depending on the choice the caller makes
- Outside of Amsterdam office hours or on Dutch Holidays, play a prompt with the opening times of the Amsterdam branch
You copy the application, and change the following: - Change the opening times and holidays to the Amsterdam and Dutch opening times and holiday lists
- Change the welcome and closed prompts to the prompts for the Amsterdam office
- Change the destination number used in the connect objects for Sales and Support
Then a week later, you get a request to build the same application for the London branch ... Warning |
---|
| You start to think that this is all getting a bit repetitive ... |
Is there a Better Way?The good news is: yes, there is! You only have to build the application once, and you can re-use the application for all three service numbers. Here's what to do: Use Variable ObjectsVariable Objects in the jtel IVR are used to execute the same functionality as "normal" objects, but based on the contents of a variable. Let's look at the Play Voice and the Play Voice with Variable ID objects: Image Removed
You can see, they look the same, except for the gear wheel on the variable object. Let's look inside: Image Removed
Image Removed
The Play Voice object provides you with drop-down lists where you can select the prompt you require from all prompts you have uploaded to the system. This is a fixed value, which is saved with the application. The Play Voice with variable ID object provides you with a field where you can type in anything. So what do you put here? - You put the ID of the prompt you want to play. For example, to play the same prompt as in the Play Voice object, you need the ID of the "JTEL - Willkommen" prompt, which in our case happens to be 2.
- You can get the ID as shown in the following screenshot:
Image Removed
Warning |
---|
| Note: the actual IDs will almost certainly be different on different systems, as the ID is a chronological value assigned by the database software when the record is created in the database table. |
So putting the value 2 in the ID - Voice Prompt field will play "JTEL - Willkommen". Use VariablesYou can also use variables here. That's where these "variable" objects get their names. Let's imagine, you have declared a variable $myPrompt and assigned this the value of 2. Then you would get the same result. Info |
---|
| Try it out! Hint: add a variable assignment object directly after the start object. Then change the ID value in the Play Voice with variable ID object to $myPrompt. |
Populate the Variables using the Service Number ParametersNow for the trick with the service number parameters. When you setup the service number parameters, what actually happens is the system declares variables for you before the application is started. So for example, if you setup the following in the service number: Image Removed
What actually happens, is the jtel system assigns the variable $announcement1_id (shown on the left) the value of the ID of the JTEL - Willkommen prompt when the routing application is started. You therefore get a variable called $announcement1_id which in this configuration contains the value 2. Similarly, setting up these two parameters: Image Removed
would result in the following variables being setup: - $holidaylists1_id Will contain the ID of the holiday list for Bavaria
- $openingtimes1_idWill contain the ID of the opening times list for the Munich Office
Info |
---|
| Get the idea? You can now build the application just once, using variable objects for: - The opening times / holidays check object
- The play voice objects
- The connect to sales and support objects
|
Finished ApplicationThe finished application will look something like this: Image Removed
Variable ObjectsLet's look inside the variable objects. As you can see, these all reference parameters (variables) defined in the service number parameters. Branch Opening Hours Image Removed
Welcome Image Removed
Closed Image Removed
Connect Sales Image Removed
Connect Support Image Removed
Service Number ParametersAnd finally let's see the relevant service number parameters. Image Removed
Image Removed
Image RemovedLondon branch ... Warning |
---|
| You start to think that this is all getting a bit repetitive ... |
Is there a Better Way?The good news is: yes, there is! You only have to build the application once, and you can re-use the application for all three service numbers. Here's what to do: Use Variable ObjectsVariable Objects in the jtel IVR are used to execute the same functionality as "normal" objects, but based on the contents of a variable. Let's look at the Play Voice and the Play Voice with Variable ID objects: Image Added
You can see, they look the same, except for the gear wheel on the variable object. Let's look inside: Image Added
Image Added
The Play Voice object provides you with drop-down lists where you can select the prompt you require from all prompts you have uploaded to the system. This is a fixed value, which is saved with the application. The Play Voice with variable ID object provides you with a field where you can type in anything. So what do you put here? - You put the ID of the prompt you want to play. For example, to play the same prompt as in the Play Voice object, you need the ID of the "JTEL - Willkommen" prompt, which in our case happens to be 2.
- You can get the ID as shown in the following screenshot:
Image Added
Warning |
---|
| Note: the actual IDs will almost certainly be different on different systems, as the ID is a chronological value assigned by the database software when the record is created in the database table. |
So putting the value 2 in the ID - Voice Prompt field will play "JTEL - Willkommen". Use VariablesYou can also use variables here. That's where these "variable" objects get their names. Let's imagine, you have declared a variable $myPrompt and assigned this the value of 2. Then you would get the same result. Info |
---|
| Try it out! Hint: add a variable assignment object directly after the start object. Then change the ID value in the Play Voice with variable ID object to $myPrompt. |
Populate the Variables using the Service Number ParametersNow for the trick with the service number parameters. When you setup the service number parameters, what actually happens is the system declares variables for you before the application is started. So for example, if you setup the following in the service number: Prompts | Content |
---|
Prompt 1 - [$announcement1_id] : | JTEL - Willkommen |
What actually happens, is the jtel system assigns the variable $announcement1_id (shown on the left) the value of the ID of the JTEL - Willkommen prompt when the routing application is started. You therefore get a variable called $announcement1_id which in this configuration contains the value 2. Similarly, setting up these two parameters: Holiday Lists | Content |
---|
Holiday List 1 - [$holidaylists1_id] : | Feiertag Bayern | Holiday List 2 - [$holidaylists2_id] : |
|
Opening Times | Content |
---|
Opening Times 1 - [$openingtimes1_id] : | Munich Office | Opening Times 2 - [$openingtimes2_id] : |
|
would result in the following variables being setup: - $holidaylists1_id Will contain the ID of the holiday list for Bavaria
- $openingtimes1_idWill contain the ID of the opening times list for the Munich Office
Info |
---|
| Get the idea? You can now build the application just once, using variable objects for: - The opening times / holidays check object
- The play voice objects
- The connect to sales and support objects
|
Finished ApplicationThe finished application will look something like this: Image Added
Variable ObjectsLet's look inside the variable objects. As you can see, these all reference parameters (variables) defined in the service number parameters. Branch Opening Hours Image Added
Welcome Image Added
Closed Image Added
Connect Sales Image Added
Connect Support Image Added
Service Number ParametersAnd finally let's see the relevant service number parameters. Prompts | Content |
---|
Prompt 1 - [$announcement1_id] : | JTEL - Willkommen | Prompt 2 - [$announcement2_id] : | JTEL - Opening Times Munich |
Holiday Lists | Content |
---|
Holiday List 1 - [$holidaylists1_id] : | Feiertag Bayern | Holiday List 2 - [$holidaylists2_id] : |
|
Opening Times | Content |
---|
Opening Times 1 - [$openingtimes1_id] : | Munich Office | Opening Times 2 - [$openingtimes2_id] : |
|
Destination Numbers | Content |
---|
Destination Number 1 - [$cnumbers1_id] : | Munich Sales () | Destination Number 2 - [$cnumbers2_id] : | Munich Support () |
Other Service NumbersThe other two service numbers would be configured in the same way - using the same routing application, but different sets of parameters for the prompts, opening times and holiday lists, and connect destinations. Info |
---|
| Remember: you always need to specify the language parameter for the service! |

ConclusionsUsing "variable" objects enables you to create generic, re-usable applications. You can parameterise these applications using assignments to variables using the service number parameters. This makes for quick and easy re-use of applications allowing you to specify variable content for: - The language used
- ACD groups used in the routing
- IVR statistics markers
- Opening times
- Holidays
- Destination numbers
- User profiles
- TTS engines
As we continue to develop the system, watch out for new parameters. And when you see one, you can be sure there will be an IVR object to match! Try it out - have fun and good luck with it! |