Creating a virtual call system using 3CX and AWS
Tags: aws, 3cx, ec2, cloud
Published: 2023-02-04 07:40:21

First of all what is this 3CX and cloud calling feature that we are talking about, if we go with the actual definition then it can be quoted as - 
>_**"3CX Phone System completely replaces a hardware PBX without the need for additional phone wiring. It supports popular SIP phones, VoIP providers, and traditional PSTN lines. The 3CX Phone System web-based management console makes it easy to configure, eliminating the need for expensive maintenance"**_

In reality its a simple cloud based calling system that can be set in your organization that uses cloud PBX(Private branch exchange). A PBX system (Private Branch Exchange) is a private phone system used within a company or organization. Modern business phone systems have moved away from legacy systems to IP (Internet Protocol) PBX systems that work over an internet connection. They connect IP phones to a PBX server. This option tends to provide more advanced phone features as well as significant cost savings.

* This can be a DIY hosting service or hosted by the PBX service provider. Most small businesses now have reliable network connections, making this an attractive option. The cloud option is also becoming the preferred solution for many hotel PBX systems that would benefit from not having to provide for space, cooling, security, and maintenance of the phone system.

| Traditional PBX | Cloud PBX |
| :---        |    :----:   |
| Expensive onsite hardware required| No onsite hardware. All in the cloud|
| Additional fees for service and hardware upgrades| Updates are rolled out for free|
| Requires costly technical support| Easy management requiring no specialized skills|
| Difficult to scale| Add or remove extensions as needed|
| Hard to migrate office| Built for remote working|

## Benefits of Cloud PBX:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b0w4ptcwqyb98cefjiuj.png)

###Configuration starts here: 

* Create an user for the 3CX to access and attach the policy and setup others details

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sj8fb8c4od1x51d9grap.png)

* attach the AmazonEC2FullAccess policy for allowing the user to configure,deploy and monitor the instances.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdtpzuh04mb9mfphbd64.png)

* Now we create a key pair for the 3CX to use to access

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nc9hk5cqxcymugnyb64p.png)

* Now go to AWS marketplace and subscribe to Debian 9/Debian 10 robust as we are going to use it as a template.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/76r5nf8q6xg0gsd6ygvt.png)

* Click Continue to subscribe and Accept all the term to use the template

The configuration of the first step of AWS has been completed,Now go to 3CX site for creating a 1 year free account and add the required details as per the phone system that we want

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60d2wfvmeqiyxd6f44lw.png)

* select the timezone accorind to your region
* Next select the number extension that you want for you call system to have, that is the length of the phone number you want in your organization.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5bgue4kfstw5mk5m9ky2.png)

* Add a domain for for 3CX which is used for meeting invites and configuration

* Now add a service provider, in our case we are going to use AWS and then add the access key we created when creating the AWS user for 3CX.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ykvwjiqsnz4rxckqb756.png)

* Now select the machine type that you want for your calling system to work on that is the EC2 configuration, to bear no cost we are using free tier of the EC2 instance as shown below.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yswxajz2clmclomul4yu.png)

* Now wait for few minutes for the installation after the installation is completed click to login to the console and login wit the user credentials that you have received in the registered email

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mleqdsk6h71032pxfz64.png)

* When we login we can find the user 1 that is our-self as we have created the account and we got a number of 1000, then we register other users for the phone call system.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyj8puxbdbup2co8j0q5.png)

* We can also see that this 3CX system has created an EC2 instance that will be running the configuration for our phone call system to work, Also it has created a security group according to the requirements.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l7uecivp9hsditjumu8v.png)

* Now to verify the system we can dial through the 3CX app that we have installed in our mobile phone and have scanned the QR code to register the user to the number allotted to them 
So now we can make a call from 1000 to 1001 and test the system ad can see that its completely up and running also this system can be used to send voicemails and also for video-calling purposes.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wjckjtxnfawlkhyzmcwj.png)


This is how you create a 3CX calling system in the cloud with zero initial costings and can use the features for 1 year free.

Do hit the ♥ button if you liked the post and share it with your friends to let them know how to easily create a cloud based calling system on their own for free.

FOLLOW @rohit23421 for more stuff on development and better practices for a developer😄.