PBX Functionality

Elastix FAQ - Building PBX Functionality
Where do I start, I want to see my phones ringing, I want to make calls, I want calls to come in?

Now you have got the basic system up and running, its time to start walking. So many people want to see everything up an running in two seconds flat, and cause themselves another several days trying to work out what when wrong. Any good IT person worth a grain of salt will tell you to start simple. So break it up into blocks, testing each part until you are satisfied that each part is working.

Why is there an Elastix PBX menu and a Freepbx Menu….they look similar?
In an effort to keep everything in one integrated Web GUI, Elastix created basically a wrapper around the Freepbx modules. For most basic setups the modules contained within the Elastix PBX GUI is enough for 70% (possibly more) of the installations that are done. In fact I start with the Elastix GUI and only move off this where the client needs some of the more advanced features.

The Unembedded Freepbx Option in the Elastix PBX GUI Menu, basically runs Freepbx in a separate window. The reasons that you would want to use this is for more advanced options such as Time Conditions and Groups, updating the Freepbx modules, DayNight Switch setup, Freepbx configuration backup etc. Rest assured you can switch backwards and forwards as much as you like. They are the same system, they utilise the same database, they use the same code to write out the configuration files.

You can generally use the Freepbx support forums as well, as almost all that applies there, applies to your Elastix Freepbx system.

With Freepbx 3.0 on the horizon (very much in Alpha) which involves a major restructure and design, this Elastix Strategy may change, but lets wait and see.

In the meantime, when we generally talk about Elastix PBX GUI, it can relate to either of them.

I have all these options such as ring groups, queues, extensions, what do I do with them?
Imagine each module as a building block and again even further, each instance of that module as a further building block.

Just entering a configuration into each module will do nothing for you. Each module needs to be chained to another in a work flow model. Generally your Extensions and Trunks are the end points of these workflow and this workflow can work in either directing (incoming calls and where they go, and outgoing calls and where they go out).

The number of times I have seen someone setup a time condition and expected it to just work even though it has not be chained to another part of the workflow, in other words it had no entry point and no exit point.

Ok where do I start?
The most simple functional model is the best place to start. Basically this is the setup of two extensions. This means the configuration of the phones, and the configuration of the extensions within the Elastix PBX GUI. The instructions for this are in the Elastix without Tears guide. Now you are probably thinking I will make this quick by using the Endpoint Configurator that comes as a module in the Elastix GUI to configure the phones……Don't!!! Learn the basics first, make sure you understand basic setups first before taking the easy way out. Using the many tools, definitely will make life easy, but if you have not setup IP PBX systems before. These tools are useful where you have 20+ extensions, and you know how to setup a phone.

The reason for learning this is that there are going to be times when the Endpoint Configurator will not work, due to a firmware change in the phone, or your model is not yet included in the Elastix product.

The first test to run is to be able to dial between the two extensions that you have setup. If your setup cannot pass this test, don't go any further. As a major building block, if these don't work, then you are wasting your time moving forward. There is no such things as miracles….adding an incoming trunk and pointing it to an extension or adding the extension to a ring group is not going to miraculously resolve your issue.

Ok I have two extensions dialling each other, do I setup a trunk?
Sounds like a good idea, complete the two endpoints before becoming wrapped up in the rest of the configuration. However, trunks are probably one of the hardest things to get right as the technologies and hardware is so varied. Trunks can be IAX2, SIP, E1, T1, Basic Rate, then you have your different card manufacturers for each of these types and you have your different wired carriers each with different standards even in the same country, and then to top it off you have your SIP and IAX2 providers, with their various terminating equipment and different standards. The differing trunk configurations is astronomical.

So how do you work through this mine field. Two different ways, one is to find someone that has exactly the same ISP and for new users this is going to be the best way.

In the case of IAX2 and SIP trunks, you should have no need to edit any config files directly at he Linux level. If you have to, then something is wrong or you have a very unique case.

If you use Comms cards from Digium, Sangoma, and several other sources, there may be a need to modify the default files that are generated by the Elastix setup, and this is generally to match your country requirements. Again use the forums and learn what does generated by the Elastix setup, and this is generally to match your country requirements. Again use the forums and learn what does and doesn't have to be changed. Elastix without Tears again is a good guide to setup of Trunks.

I have what I believe is a working trunk…what else do I need dial out?
You are going to need an outbound route. Again keeping it simple setup one outbound route, in fact for the time being use the route that is already in place, rename it and call it ALLCALLS. Replace the current dial patterns with one simple. (that's a single full stop) which basically say match every number, and as the outbound trunk, select the trunk you have setup.

That is generally all you need to make a call, try it now……just dial the number and see if you can successfully make a call.

Ok that was successful, what about incoming?
If you didnt get outgoing working, don't move onto incoming. As I said before, miracles aren't going to happen if basic building blocks are not in place and working. Especially as incoming calls can be affected by far more variables which include your router/firewall, correct contexts, NAT settings.

Again lets start simple first, just because you have 3 or 4 DID's from your Voice Provider, doesn't mean you need to get them setup first go. In the incoming route, setup a route that matches ANY CID/ANY DID. So enter a description and leave DID number blank and CID number blank. Make the destination one of your working Extensions and that's it.

Ring any one of your DID's and see if that extension rings.

If successful, you have probably completed the two basic functions of the Elastix PBX system. So what do you do now, start experimenting. Create a ring group with all your working extensions, and change your ANY CID/ANY DID destination to your newly created Ring Group….how complex you make it from this point is up to your imagination. Imagine Freepbx/Elastix PBX GUI as a Meccano set for PBX systems, let your imagination run wild.

My outbound or inbound didn't work at all
Have look at the Elastix FAQ on fault finding, or have a really good read of Elastix without Tears, or ask your questions in the forums.