A journey with VoIP

| 2 min read

Throughout my professional journey, all the companies I have worked for were in the Telecom domain one way or another. So, I felt that I had to start documenting it.

Let’s start with Asterisk

Asterisk is voice server that is used to handle many business cases such as call centers, conference calls, CRMs and so on. It’s widely used here to power on many of communication solution. You can install asterisk manually on a Linux server, or use GUI customized to operate and manage a VoIP servers, such as FreePBX.

The thing is, Asterisk has relatively hard learning curve, especially if you are a beginner. I was introduced to Asterisk during my very first job. Not only it was my first job ever, but was a remote job as well.

Disclaimer: Don’t you ever start your first professional experience with a remote job.

Anyway, my task was to develop some simple features on a java-based application that uses asterisk to run a well-known telecom operator’s call center. Java wasn’t the problem, but learning how to navigate through configuration-based server on a Linux machine was a wild experience for me at that time.

What was the issue ?

Unlike typical software development ecosystem, there is no beginner-level welcoming communities. The only option there is navigating through documentation and reading 15+ years old threads so you can troubleshoot. In addition, the idea behind Asterisk is to turn your typical classic most probably Linux machine into PBX.

What is exactly are PBXs?

PBX in telecom is much like server room in network. All your internal communication will be managed by the PBX your server is connected to. PBX stands for Private Branch Exchange.

So, having a decent background in trunks, telephone system and of course network systems can really ease your learning journey. For obvious reasons, I did not have any of those and it made me struggle a little bit.

Other than call centers, we have VAS (stands for Value Added Service) that can be considered a business functionality layer on the top of core operational layer. For example, subscribing to a daily service that provides content though calling a specific short code. This subscription will deduct a specific value from your balance. You may wonder: how is this still convenient in 2022? Believe me when I say that many parts of the world are still using similar VAS services. All operators in Sudan provide VAS services that depends on IVR. Such services provide an audio contents by dialing a short code number dedicated to this service,

If I ever came back in time, how would I redo all of this ?

First, I’ll start with being familiar with Linux, knowing how programs and processes are distributed (or actually scattered :) ) all over the file system. Plus, the approach of managing running process on your machine, and of course things like bash scripting, user permission, files management, etc.

In addition, getting to know how traditional trunks and PBXs will help a lot, along with VoIP terms such IP telephony protocols (SIP, PJSIP, RTP, RTCP, etc). Moreover, knowing how your asterisk server will connect to outside world (Media Gateway, E1, etc)