SEMS and KAMAILIO combo as a PBX – concept

This is a record of how to make a workable PBX using SEMS and KAMAILIO on CENTOS 6.3. This procedure will be applicable to most OSs that can run CENTOS and KAMAILIO.

This is not a description of how to do it. It’s a log of my attempts to make it happen. The last post will be a recipe to follow.

First, what is a PBX AKA PABX AKA EPABX ?

Using Wikipedia we see that PBXs have the following list of capabilities

  •     Auto attendant
  •     Auto dialing
  •     Automatic call distributor
  •     Automated directory services (where callers can be routed to a given employee)
  •     Automatic ring back
  •     Call accounting
  •     Call blocking
  •     Call forwarding on busy or absence
  •     Call park
  •     Call pick-up
  •     Call transfer
  •     Call waiting
  •     Camp-on (?wtf?)
  •     Conference call
  •     Custom greetings
  •     Customised Abbreviated dialing (Speed Dialing)
  •     Busy Override
  •     Direct Inward Dialing
  •     Direct Inward System Access (DISA) (the ability to access internal features)
  •     Do not disturb (DND)
  •     Follow-me, also known as find-me: Determines the routing of incoming calls.
  •     Interactive voice response
  •     Music on hold
  •     Night service
  •     Public address voice paging
  •     Shared message boxes (where a department can have a shared voicemail box)
  •     Voice mail
  •     Voice message broadcasting
  •     Welcome Message

Strewth! That’s a lot!. Maybe I’ll just try and do a subset for now.

Luckily a lot of them look like standard functions that SEMS can natively implement. Or at least reasonably simple code can make it happen.

By way of background I’ve already written SEMS applications that handle multiple simultaneous calls – this in conjunction with heavily tricked out networks of kamailio servers.

My plan now I guess is to look very closely at the SEMS SBC and see what can be done with it.

The basic model will be a Kamailio proxy handling PSTN upstream trunking (SIP trunking) and local and remote UA registrations.

Incoming trunked calls will be landed on the SEMS instance which will then make a new outgoing call to registered handsets. Local PBX calls will similarly be routed by Kamailio and hosted on the SEMS instance. This is pretty much the same model as described in the freeswitch implementation at

The difference is that SEMS will act as the SBC and media server. In addition I plan to implement MWI natively in SEMS, plus busy-lamp functionality using the kamailio resource list server and publish commands from SEMS.

More to follow when I learn all about SEMS sbc.


Tags: , ,

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: