I
found that the digital receptionist is very handy to filter some of the phone
calls I have been receiving. As in
most households, no one will pick up the phone when it rings.
One is waiting for the other. Yours
truly usually is the one who will pick it up and has to look for the
recipient… usually my teenage daughter.
In
the Setup tab, click on the Digital Receptionist option and get the following
screen.
Select
Add IVR option on the top right on the screen and the new Unnamed
IVR configuration screen will be presented to you.
You then need to fill in the
following fields:
Name
(Change Name):
MainMenu
(that’s
what I called m main menu)
Timeout:
10
(I
left it at default)
Enable
Directory: Tick
Directory
Context: Default
Enable
Direct Dial: Tick
Announcement:
MainMenu-Rohani1
(That’s what I called my IVR recording that I made for this purpose)
(see illustration below)
Then
proceed to enter the selection options that you require for this IVR when the
caller presses the appropriate option.
If
you need more choice options in the IVR, click on the Increase Options
button at the bottom of the screen.
In my IVR, I have defined my
requirement as outlined below:
For
number 1 & 2, I selected Extension, for 3 & 4 I have
selected Custom App: and for 5 which I have changes to the letter
“t”, I selected Ring Group.
For
1, I selected my extension from the drop down selection list.
For
2, I selected Rohani’s extension.
For
3, which is for Norsurya, I have selected Custom App: to call her mobile.
For
4, I selected Custom App: for DISA (we
will get to DISA a little later).
For
5, (I changed it to read “t” for timeout), I selected Ring Group 1
To call Norsurya’s mobile
I have included the following context in the extensions_custom.conf
file.
[custom-callmobile]
;
to direct calls to Norsurya’s mobile number.
exten
=> s,1,playback(pls-wait-connect-call)
exten
=> s,2,Dial(SIP/6140XXXXXXX@pennytelsip,60,r)
exten
=> s,3,Hangup
The
last extension (which I have changed to the letter “t”) is to capture
timeout, if the caller does not press any option or, in case the DTMF tone does
not register, the call will be sent to Ring Group 1.
Once
finished, click Save and also click on the red
bar on the top of the screen.
Test
it by dialling 7777, (Asterisk will simulate an incoming call) and you
will hear your Digital receptionist in action.
Note
for home users
Most
of the config files manual tweaks and extra configurations in this guide are
meant for advanced users. Unless you have a compelling reason to do so, freePBX
users are advised against it.
When
the Digital Receptionist answers the call and directing the call to the
appropriate extension, the caller will hear another ringing tone until the
extension is answered. This is
boring, as I prefer music instead, besides, it sounds more pleasant.
To
achieve this, instead of nominating my extension number for the choice in
Digital Receptionist, I use a custom extension. To do this, I create a custom extension in the extensions_custom.conf
called [custom-myextension].
See example below:
[custom-myextension]
;
exten
=> s,1,playback(pls-wait-connect-call)
exten
=> s,2,Dial(SIP/2001,60,m) ; Ben’s extension
exten
=> s,3,Macro(vm,2001)
exten
=> s,4,Hangup
In the example above;
Line 1 (priority 1) will tell the caller to wait while
he/she is being connected.
Line 2 (priority 2) will call extension 2001 (my
extension) and will try calling the extension for 60 seconds.
While waiting for me to answer the call, the caller will be listening to
soothing music – hence the “m”, or, if “r” the caller
will hear the ringing tone instead.
Line 3 (priority 3) will direct it to my voicemail if
the call is not answered within 60 seconds.
In
digital receptionist, instead of selection my extension for my option, I will
nominate Custom App:
|
Custom App |
custom-myextension,s,1 |
You
can do this to all the individual extension or you can call a number of
extensions simultaneously like a ring group – like so.
exten
=> s,1,playback(pls-wait-connect-call)
exten
=> s,2,Dial(SIP/2001&SIP/2002&SIP/2003,60,m)
exten
=> s,3,Macro(vm,2001); voice mail to my extension
exten
=> s,4,Hangup
Trixbox allows multi languages IVR handling by simply telling Trixbox what language to use. Naturally you will need to install all the language sets that you wish to use.
See Installing Other Languages in the chapter referring to Customised Voice in later part of this document.
I am assuming that you already have your MAIN IVR in English set up for selecting various options. This IVR is known as IVR-2 in your extension_additional.conf file. Any subsequent IVR created will IVR-3, IVR-4 and so on.
You will need to create another IVR for selecting the language options that you want to present to the callers. This will be the IVR that will greet all callers with Select 1 for English, 2 for Italian etc. In this example, we will have 2 language sets, Australian and Italian. Let us name this second IVR LanguageChoice.
Being the second IVR you have created, this IVR will be known as IVR-3 in your extension_additional.conf file. Any subsequent IVR created will be IVR-4 and so on.
In LanguageChoice, we will have 3 options.
Select 1 for Australian English
Select 2 for Italian
The third option is unannounced as it will be the time out option represented by the letter “t”. This option is the option the IVR will defaulted to if no choice is made or if the caller’s DTMF tone is not recognised by Trixbox.
In choice 1, select the Custom App: radio button and enter the following in the box:
|
Custom App |
custom-language_au,s,1 |
In choice 2, select the Custom App: radio button and enter the following in the box:
|
Custom App |
custom-language_it,s,1 |
The third choice, instead of a number, you will enter the letter “t” in the option box, select Custom App: radio button and enter the following:
|
Custom App |
custom-language_au,s,1 |
Next, you will need to do a little editing of the extensions_custom.conf file. You need to add the following towards the end of your extensions_custom.conf.
You will also need to create another IVR called MAINIVR_IT with options to be presented in Italian. This is similar to your main IVR except that it is presented to the caller in Italian. This IVR being the third that you have created will be referred to as IVR-4 in the extensions_additional.conf file.
[custom-language_au]
exten =>
s,1,Set(LANGUAGE()=au)
exten => s,n,Playback(vm-dialout)
exten => s,n,Goto(ivr-2,s,begin)
[custom-language_it]
exten =>
s,1,Set(LANGUAGE()=it)
exten => s,n,Playback(vm-dialout)
exten => s,n,Goto(ivr-4,s,begin)
Save it and re-read the configuration change and you are done.
Now you will need to change your inbound route to point to the LanguageChoice IVR. All calls will then be greeted by the LanguageChoice IVR and when the caller select 1 (or 2), the IVR will call the appropriate exten. If the caller selected 1, the [custom-language_au] will be selected and the language will be set to Australian English, an announcement in the appropriate language will be made and the caller will be sent to the MainIVR for call options (you must also have recorded the call options announcement in the various languages).
7.3.1 Complimentary multi-language MOH
To take the multi-language IVR one step further, we can also have multi-language (or multi category) MOH to compliment the language.
If the language used is Italian, it is safe to assume that the caller is Italian and would much prefer to listen to Italian music instead of Chinese or Arabic music..
To do this you will need to have the appropriate MOH music in Trixbox.
Assuming that you already have the default music category that comes with Asterisk, you will need to create a new music category using freePBX On Hold Music option. Let us call this new category ItalinTune.
See the chapter relating to MOH in the later chapter of this document.
Once you have created this category, upload a few MP3 Italian music/Tunes to it. If you want the tune to be randomised, click the Enable Random button and you are set to go.
You will need to modify the 2 scripts above to the following:
[custom-language_au]
exten => s,1,Set(LANGUAGE()=au)
exten => s,n, SetMusicOnHold(default)
exten => s,n,Playback(vm-dialout)
exten => s,n,Goto(ivr-2,s,begin)[custom-language_it]
exten => s,1,Set(LANGUAGE()=it)
exten => s,n, SetMusicOnHold(ItalianTune)
exten => s,n,Playback(vm-dialout)
exten => s,n,Goto(ivr-4,s,begin)
You may have to restart asterisk after this (although it may not be necessary).
Now you will have multi language IVR as well as the complimentary MOH.
While freePBX is a very versatile GUI front-end for Trixbox it does not have the facility to configure a PBX for multi-Tenants application. However, Trixbox (Asterisk) has the ability to do it with a little creative manipulation.
In the chapter above we covered multi languages IVR handling by simply telling Trixbox what language to use. We are going to use the same principal to handle the Multi-Tenants requirement.
In this example, I will use a Medical Centre that I have the privilege of installing the Asterisk PABX for. There are 3 tenants involved – a General Practitioner, a Dental Practitioner and a Pathology representative. Each has separate incoming telephone numbers with their own receptionist but using a common PABX.
I have picked this organisation as an example because it is small enough to write about. If I choose one of my bigger installations, this book will never see the light of day J
The main requirements are pretty straightforward:
Calls that come in through the different tenants should be directed to the appropriate IVR. One IVR for each tenant.
12 extensions - 4 for Dental Practitioner, 3 for Radiologist and 5 for General Practitioners.
oicemail for each receptionist.
There are other requirements such as multi language prompts, after-hours ring groups, time conditions, Interlinking 2 Trixbox boxes between the Medical Centre and the Pathology Main Office in Kuala Lumpur etc., but I have only listed the major requirements.
In this example I will only highlight the Multi-Tenants incoming route handling and restricting outgoing calls to the appropriate telephone lines only.
The full case study can be found in the Appendix titled, Live Case Study at the end of this document.
My first task was to install the base Trixbox as per the chapter on Installation. In this installation, there is no VOIP trunk involved. All telephone communications are through PSTN lines apart from the Trixbox inter-connect between the Medical Centre and the Pathology Main Office in Kuala Lumpur, which will be done via a DSL connection.
PSTN Interface
2 x TDM400 were installed in the PC designated for the PBX task.
3 ports allocated to the General Practitioners (ports 1-3)
3 ports allocated to Dental (ports 4-6) and
2 ports for Pathology (ports 7-8).
IVR Prompts
3 x IVR were created, one for each of the different tenant.
MedicalIVR (represented by ivr-3 in extensions_additional.conf)
DentalIVR (represented by ivr-4 in extensions_additional.conf)
PathoIVR (represented by ivr-5 in extensions_additional.conf)
Each IVR will act as a traffic cop to direct calls to the appropriate extensions belonging to each tenant.
Inbound Routings
ZAP channels 1,2 and 3 (3 PSTN numbers for GP) routed to MedicalIVR
ZAP channels 4,5 and 6 (3 PSTN numbers for Dentist) routed to DentalIVR
ZAP channel 7 and 8 (2 PSTN numbers for the Pathology representative) routed to PathoIVR
Extensions
1. Extensions 2000 to 2004 allocated to GP
2000 for Receptionist/Clerk with voicemail
2001 for Doctor A
2002 for Doctor B
2003 for Surgery Room
2004 for Dispensary
Change the context of these extensions, from [from-internal] to [from-internal-medical]
2. Extensions 3000 to 3003 allocated to Dental
3000 for receptionist/clerk with voicemail
3001 for Dentist A
3002 for Dentist B
3003 Spare extension
Change the context of these extensions, from [from-internal] to [from-internal-dental]
3. Extensions 4000 to 4002 allocated to Pathology
4000 for receptionist/clerk with voicemail
4001 for Radiographer
4002 for Assistant
Change the context of these extensions, from [from-internal] to [from-internal-pathology]
Outbound Calls Handling context
Create 3 different call handling contexts in the extensions_custom.conf configuration file.
[from-Internal-medical]
[from-internal-dental]
[from-internal-pathology]
The purpose of these contexts is to restrict extensions belonging to each tenant to be confined to telephone lines belonging to that particular tenant when making external calls. See How to restrict outgoing calls in the Calls Handling chapter earlier in this document.
All of the basic set up requirements above are explained in the various chapters of this book and should not present any difficulty to complete.
Once the basic is completed, the rest of the variations and extras can be handled as per the individual requirement.