- Grand Piano Keys with ArduinoPosted 11 hours ago
- Wireless Power TransferPosted 1 day ago
- Robot Punchers with ArduinoPosted 2 days ago
- A minimal 3D-printed scalePosted 4 days ago
- Expanding the pins of a microcontrollerPosted 1 week ago
- Let’s create a small level with a matrix displayPosted 1 week ago
- ChatGPT: Writing Code with Artificial IntelligencePosted 1 week ago
- Free Webinar: Arduino IoT Cloud and ESP32 DemoboardPosted 1 week ago
- Maker Faire Rome – The European edition and FAE Technology launch the contest “MY Maker PCBA: your electronics for a better planet”Posted 3 months ago
- Efficient and Compact Stereo Power Amplifier: Unleash High-Quality Audio with the PAM8610Posted 3 months ago
Using all the features of the Raspberry Pi Mini VoIP switchboard
Let’s put our VoIP notions to practice by creating our switchboard equipped with all the most advanced features.
Raspberry PI is a single board computer that we already had the chance to use in the most diverse applications. By taking advantage of its predisposition to work as small Linux server, we used it to create a VoIP switchboard which we begun describing and configure in the previous issue, along with an introduction to VoIP telephony for those who are not very familiar with the subject. In the same issue, we explained how to make the switchboard, so what hardware and what software is required, we also specified that we have employed Asterisk software for this purpose, an open-source solution.
Up until now, we have seen the base configuration of our mini switchboard, which nonetheless allows to actually start using it.
In this second and last issue, we are going to see how to extend the configuration in order to create more advanced features with which we are going to make, for instance, a sorting system for incoming calls.
One of the most used services of a switchboard is the possibility to redirect incoming calls to the various extensions; this service aims to put the caller in communication with the most fitting operator within the company in a fast and convenient way.
Welcoming service and calls switching
We are going to illustrate various functions using an example, better described by the flow diagram shown in figure which can be easily adapted to the needs of any small to medium companies.
The main part of this example is composed of an IVR (Interactive Voice Response) switching calls on different areas according to the callers choice, following the classic “press 1 for assistance, 2 for sales” and so on.
Access to IVR is limited by the control which, by reading current time, understands when the call takes place outside of work hours therefore sending out a courtesy message, besides two more controls that allow to bypass time control.
When putting together a switching service, we suggest you always jot down a flux diagram that will act as a guide to configure the switchboard. Moreover, it can be useful to create the configuration starting from the bottom, in fact, every time we configure a block we must indicate the block following it within the flux diagram.
Audio File Creation
In every welcoming service we need voice messages in order to guide the caller browsing the menu, to inform about working hours and provide various types of support information.
Messages are created from the Administration – System Recordings menu, where you can record messages using an internal phone or upload previously prepared audio files e.g. perhaps recorded on a PC equipped with a microphone.
Recording quality is very important to leave a positive impression on the caller about the service received; therefore, we suggest to use a clear voice without any inflection, or you can go as far as hiring professional speakers to record the messages. A zero-cost alternative would be to use the synthesized voice of one of the many services available on the Internet (for instance Google’s translation and dictation service), a solution also used to record system messages. In fact, synthesized voices, over the last years, have reached a quality that, although not comparable to a professional speaker, can be better than many “improvised” speakers.
Through the module accessible from the Applications – Call Groups menu, we can define internal groups to which redirect phone calls.
Besides the list of extensions belonging to the group, we can find a ringing strategy; there are many strategies available although the most used are ringall, which makes all the groups phones ring together, then there is the hunt strategy that make each one of the available extensions ring in rotation.
It is also possible to define a maximum ringing time, so that if no one answers within that period, call redirection goes to the next step. In our example, we have used this function to redirect the call to an answering machine.
Waiting queues, which can be configured from the Applications – Code menu, can be considered as extensions of call groups, to which they add many features we can usually find only in professional call centers.
The main difference between queues compared to groups is that the queue keeps incoming calls on hold, waiting for an operator to become available, guaranteeing that the first user to call in chronological order is sent to the first available operator. Furthermore, we can also have dynamic agents to which call is redirected only when they provide availability by logging in on the queue.
There are many other configuration parameters allowing to choose the desired behavior in case of queue overload: for instance, we can choose not to accept any more calls or redirect them to other services.
Among the most sophisticated features available in the module we can mention the possibility to communicate the queue position and estimated waiting time to users waiting in queue.
IVR (Interactive Voice Response)
This functional block with multiple outputs allows choosing among different paths in the welcoming flow.
The most important settings are the audio message to be reproduced, containing the instructions for the user (the so-called voice manual, the classic “press 1 for…, Press 2 for…” etc.) and the destinations of the flow based on numbers pressed by the user.
Another factor to consider is the behavior in case of choice ever by the user, and also in case no key is pressed within the allotted time slot.
An interesting feature is the one allowing to activate direct calls to the extensions, simulating the passive selection of traditional land phone switchboards (i.e. where you can set destination extension of an incoming call by adding the extensions number).
The analysis module is one of the simplest and allows to play an audio file for proceeding with the next step.
In order to configure it, all you have to do is select the audio file to play and define the destination block at the end of the message. In our example, the feature is used in case of closed office or establishment where the switchboard is installed, in order to provide the caller with info regarding working hours before hanging up.
Time conditions are two output blocks allowing to make the call flow evolve in a different manner according to hour and day of the week. The most widespread application is the one allowing to regulate office closure and opening but it can also be useful on many other occasions.
First, we must define time. Using the Applications – Time Groups menu and defining the period as the union of a group of day and hour ranges. The system allows to define, besides hours, also days of the week and of the month, therefore allowing to describe not only working hours but also closure periods for holidays or festivities.
After defining hour ranges, we can create the functional block by accessing the Applications – Time Conditions menu.
We have to assign a time group to this block and set destinations of the two outputs, one in case the call hour is within the period and one when it takes place outside of it.
Time controls are very useful because they automatically modify the call path without need for human intervention. However, in some cases, we must handle exceptions where it is useful to manually edit the flow by using a module we will see later.
We can imagine flow controls as the deviators of our house’s electrical network, with an input, two outputs and a command allowing to connect the input to one of the two outputs. In case of the switchboard, command is given through a function code which is entered in any internal phone.
In our example, we have used two flow controls we have called Special Opening (SO) and Special Closure (SC) and we need them in order to force the opening and closure status and bypass the time control. These controls are useful in order to handle exceptions to automatic opening or closure periods.
Flow controls can be created and edited from the Applications – Call Flow Control menu by setting destinations of the two outputs and the value of the function code, besides initial status. Function can also be accompanied by a password in order to avoid that unauthorized personnel triggers control.
To complete our example, let’s not forget to edit the input route created as explained in the first issue (to which we refer you) in order to handle incoming calls from the welcoming service we just created.
More useful FreePBX modules
In building our example we have inserted the most used FreePBX modules; however, there are many more, both free and paid, that might be interesting. Here we can find a not comprehensive list of the most noteworthy, in our opinion.
“Phone book” module allow us to save the most used phone numbers and assign speed dial codes.
“Services Codes” module allows us to view and possibly edit numeric codes allowing to get the switchboard functions.
“Module Admin” can be used to update, install and remove FreePBX modules by uploading them from free and paid lists.
“Conferences” module allow us to create virtual audio conference rooms that are very useful for meetings with attendees from various different places.
The “Follow me” module allow us to set calls management when we are not able to answer, for instance we can redirect the call to a mobile number.
“Dashboard” module, appearing by default when the administrator logs in, contains information about the switchboard status and possible notifications.
“CDR reports” modules allow us to analyze both incoming and outgoing phone calls database.
In this series of blogposts we have illustrated how to create a phone switchboard by using free tools, available to anyone willing to take on the challenge. The subject is complex and, in space we have available in this issue we could only illustrate the main aspects, however, everything we have explained should be enough to deal with the most common situations.
Up until a few years ago, creating a phone switchboard was something reserved to specialists with dedicated apparatuses specifically created for this purpose, therefore very expensive. Today, the situation is completely changed, with open source software switchboards available that allow us to create switchboards using general use hardware for a fraction of the cost. However, the main advantage is the openness of the project, which frees us from the limits imposed by the manufacturers of proprietary products and gives us the possibility to develop the most fitting project for our needs.