Category / TCAPI

FreeSWITCH gets a free GUI (and a paid PBX platform) August 5, 2009 at 8:07 pm


Update: The FreeSWITCH GUI project that temporarily became the FreePBX v3 project is now actively maintained as the 2600hz Project.

What happened to TCAPI and the FreeSWITH GUI project?

I’m pleased to announce the general availability of the developers release of FreePBX v3.0. I designed the code, along with the help and feedback of the folks at, from the ground up –¬†starting with my TCAPI project which has now merged with FreePBX. This work is the result of years of experience with telephony systems. Specifically, the last two years have included tireless development and effort coding late into the night and through the weekend to produce a flexible, modular PBX system that was open-source.

Finally, that PBX software gets to see the day of light. Thanks to backing from and the FreePBX project, you can now see the documentation and code I’ve been working on at .

I also strongly recommend you checkout – a hosted service that is beginning to offer free sandbox development installations for learning and utilizing the new FreePBX v3.0. is run by one of the core supporters and developers of the FreePBX v3 open source community, Michael Phillips. The site also offers hosted virtualized instances of FreePBX that work great and cost almost nothing.

Speaking of core developers, we would be nowhere without the help of Karl Anderson. Karl is a more recent addition to the team but he’s committed so much code he might as well have been here since day 1. Karl is part of the team, and there’s no doubt in my mind that FreePBX v3.0 will make it into the service offering of Karl’s company thanks to his efforts. If you need hosted VoIP with a premise-based service contract, check out Kudos to Karl for his awesome work.

So what’s in FreePBX v3.0? Here’s just a short list:

  • A solid MVC framework design
  • CRUD for device management, number management, IVR management, voicemail, user management, etc.
  • Central number database, to avoid conflicting dialplans
  • Pluggable, modular architecture¬†– tailor the product to do what you want
  • Tie-ins to the FreeSWITCH architecture, including the ability to monitor sofia registrations and turn on/off message waiting lights via web-based voicemail
  • Internationalization support
  • jQuery/AJAX based grid and navigation systems
  • Completely skinnable CSS & layout system – put your brand or vendor logo on the pages, or redo it completely!
  • Automated installer
  • Module management system via the web
  • Advanced hook and event system in both the database driver and the rendering system
  • Ability to send SMS text messages from the UI
  • Ability to make phone calls from the UI
  • Play voicemails via the web
  • XML/Curl support as well as static config file generation
  • The start of an Asterisk driver

For those of you who were interested in TCAPI, I hope you will join me in the move to the FreePBX name and a newer codebase. The concepts of TCAPI (and ironically of the original AMP) are being revived and refined in the new FreePBX v3. Feel free to join us on in #freepbx-dev to tag along for the ride.

I’ll be demoing the new FreePBX v3.0 today at ClueCon (in just a few minutes actually). I’ll post the video as well, once it’s ready. In addition, it’s worth noting that the FreeSWITCH team just announced their first corporate sponsorship and paid product. So now you have the option of a fully supported PBX system made by the developers of the core FreeSWITCH project.

And let the games begin…!

Announcing mod_nibblebill – a FreeSWITCH module that does billing! January 15, 2009 at 12:30 pm

I am pleased to announce the submission of mod_nibblebill for review and hopefully acceptance into the trunk of the FreeSWITCH project.

OK, it’s rev. 1 and needs a bunch of work. Got it. But it’s very functional and it does infact function!

Take a peak at the extension documentation I wrote up on their WIKI for details. The module basically handles real-time billing for lots of simultaneous calls in a way where you can give people credit that they use up and their calls get terminated when they have no more money.

Soooo many uses for this!

Let me know if you have questions, as usual! Drop me an email

TCAPI – where are thou? January 6, 2009 at 10:03 pm

I join in celebrating FreeSWITCH‘s 1.0.2 release! The project is really gaining momentum and looks very promising, and I’m happy to be along for the ride.

I am also honored to have the TCAPI project mentioned in their announcement as a “future look ahead.”

What happened to TCAPI, you may ask?

TCAPI is very much alive and well but admittedly we are working very hard on getting some core pieces in place first before inviting the masses to join. I really am only looking for dedicated contributors at this point who want to spend time and energy contributing to the project. The project has morphed slightly along with another project (well known to many of you). While all the details are not yet public, I’m happy to share info on a 1:1 basis. Feel free to drop me a note if you are still interested in contributing to this project – email me.

In the meantime, if you haven’t played with FreeSWITCH yet, hop to it!

TCAPI Project now out there somewhere… September 7, 2008 at 8:18 pm

Those developers who joined the introductory WebEx today can now access the code that was released. It’s not much, but it’s a good start. Hopefully some folks will commit some stuff to it.

For those who didn’t join today you can still get involved. Please drop me an email if you want to develop some code for what is currently a FreeSWITCH-based GUI front-end for a PBX (and whatever other functions you might desire).

You can reach me here.

Also, I’m curious to start getting feature requests. What makes up a good FreeSWITCH UI? What functions do you want to see? Let me know your thoughts.

TCAPI Pre-Alpha Release (formerly FreeSWITCH GUI Project) September 3, 2008 at 3:53 pm

I’m pleased to announce the pre-alpha (yes, pre-alpha, meaning “doesn’t do very much”) release of the FreeSWITCH GUI project (now named “TCAPI” – the Telephony Configuration API).

Before you get all excited, I want to make sure I’m clear that my main focus has been concentrating on structure and flexibility of the back-end and whatever modularity I could build thus far. I will publish a stack-type diagram shortly to show what I’m looking to achieve. In the meantime, I’m releasing what code has been written (it’s not much) to help people get familiar with the underlying structure of the code. The UI doesn’t *do* anything except configure extensions with various variables that aren’t recognized by default by FreeSWITCH so if you are thinking this GUI will, today, actually do anything for you, keep holding.

Here’s what HAS been accomplished:

  • Implementation of a reasonable AJAX-based JavaScript framework that also implements cross-browser compatible CSS “frames”
  • Helpers have been created to aid in reading/writing XML files with complex element/attribute structures
  • Ability to write your data to MySQL/SQL/Firebird/DB2/Oracle/ODBC/Postgres/etc.
  • Ability to write to raw/native FreeSWITCH XML files via a FreeSWITCH model (+ the start of a DBO layer for FreeSWITCH)
  • Basic controllers with limited logic
  • A lot of work has gone into making the JavaScript work in an abstract-able way, so that a different AJAX framework can be introduced later
  • Menus are configurable without touching any JavaScript. You can write stuff that utilizes the JavaScript framework without knowing or touching any JavaScript directly
  • DHTML/CSS frames-based layout allows for “plugging in” just about anything as a menu item (including scripts in other languages, if necessary)
  • XML save/load models are easy to duplicate, and mapping helper functions are just a few steps away
  • Extensions page is functional and easy to modify/setup/etc.
  • Basic sample pages have been put together for other areas (domains/users/devices)
  • Browser-based AJAX streaming classes have been written/included to allow for streaming channel status information
  • Everything has been written with layers in mind (as much as time allowed for anyway)
  • Oh, and of course, an IRC channel on freenode
  • #tcapi

    Here’s what’s very much missing:

  • A web page describing the software & it’s mission (I have this written, but would like to post it on a nice looking website)
  • A bug tracking system
  • A proper email list
  • A PHPDocumenter-generated (or similar) list of functions & what limited classes/APIs have been written
  • A simple install procedure/instructions/etc. file
  • SIP Profile configuration tools
  • Domain configuration tools
  • A dialplan that allows advanced features being saved to the XML work (stock dialplan)
  • A ‘settings’ page to configure base settings via the UI
  • JavaScript is not properly abstracted on most pages
  • this needs to be completed
  • Pages should be designed to work within the JavaScript frames as well as when they are NOT in the frames
  • The fsxml component needs to be abstracted as a custom behavior

    Other ideas I’m tossing around:

  • Making all HTML and back-end pieces WSDL/SOAP accessibile
  • True APIs – everything has been written as if it was a program for now, but I’m at the point where many things should have get/set/etc. commands added and the related variables that are being modified should become protected, so that things can be moved into libraries.

    A few things have been kept out of the initial check-in until I clean them up, but the channel & conference status pages will be checked in by Friday I hope so that you can monitor calls in progress/etc.

    So what’s next! I am limiting who gains access to the initial files and who commits to the project. I am doing this to gauge interest and because so much still needs to be done, I frankly only want serious, interested developers at this time (even if you can’t commit gobs of time, you need to show your interest in at least learning how the things work). This is mostly to avoid questions and also avoid disappointment from “end-users” who are just out there to try things out, since most of this code doesn’t do very much yet and a lot of hand-holding to install it is still required.

    So here’s what I’ve decided to do. I am going to hold two training WebEx meetings in the next week. The first one will be on Sunday at 11am PST. I will go through the code and how to set it up. I will provide an SVN link at that time to the code and you can follow along with the setup process. All you need is an install of FreeSWITCH on a Linux box + Apache + PHP5 stock libraries. Past that, I’ll get you going, show you how the code is setup, where things are, how to add menu items, how to add a table to the custom model, and so on. And you should be off to the races to try out any of the above items you wish, or some of your own!

    So again, WebEx, Sunday, 11am PST. If you’re interested, please email me and I’ll send you a formal invite with an attendee link.

    If you’re not interested in contributing at this time, just sit tight. I expect a true functional alpha release to be ready within 30 days (or less) that can configure SIP profiles, domains and directory entries completely from the UI.

    You are also welcome to invite others – pass along this URL if you wish.

  • The FreeSwitch GUI Project July 26, 2008 at 2:24 am

    Welp, it’s official.

    The FreeSwitch UI / GUI Project is underway. This week I hope to put the finishing touches on a functioning graphical, web-based user interface front-end that, at the least, adds/edits/removes extensions, adds/edits/removes service providers, lets you setup some basic global features, and maybe even allows you to have a “light” version of a functioning PBX.

    The system utilizes FreeSwitch, CakePHP and some JavaScript/DHTML add-ons. Some may bicker about this, as I am aware it bloats the software a bit, but considering the audience for this is administrators, a bit of bloat in exchange for rapid development and ease of use seems reasonable. CakePHP may also be a source of complaint (compared to Symfony and others, or maybe you just hate PHP), but hey, the reality is CakePHP is under active development and seems relatively lightweight. Best of all (in my opinion) it doesn’t use a templating engine for views. Those things make me cringe when trying to teach people in an open source project how to ramp-up on the coding pieces, and don’t add enough value to warranty this additional hurdle.

    The overall design is easy enough to understand that anyone should be able to dig into the Ajax friendly front-end views without knowing much coding, or add functionality on the back-end where the same assumption applies.

    Here’s a screen shot to wet your appetite…

    Configuration screen in FS demo

    If you’re interested in helping with development, please contact me.