DIY PBX Chapter 5a: A Software Overview
With the telephony hardware installed and configured, and Asterisk in place, I found myself at the point where I could turn to my favourite topic: the software. And, even at the simplest, I had a lot of software to keep me busy. Luckily enough, I had the time.
First of all, I had Asterisk to configure. The simplest Asterisk installation still needs a number of configuration files to deliniate working directories and paths, enable or disable Asterisk functions and features, and define communications channels and devices, along with the feature-specific configurations that manage ringtones, on-hold audio samples ("music-on-hold"), call detail recording, and, of course, the processing (from start to finish) of all sorts of calls. This part, I had to attack in three stages:
- establish a basic, working configuration,
- improve the configuration with a small number of technical enhancements, and
- install the initial dial-plan to manage telephone calls.
With a working telephone system, I next had to add in some external reporting and control. As I wanted this Asterisk to log calls like I had with the IP04, I had to build a database, and a process to populate it from the Asterisk call-detail records. From that database, I had to craft a new "phone bill" to report calls. And, I built a whole set of control and reporting web pages to manage the database, the reporting, and (to a small extent) the Asterisk dial-plan. So here, I crafted a mixture of crontab entries, shell scripts (some run using my homebrew RMonitor script management utility), C programs, and PHP web pages, manipulating both a MariaDB database and Asterisk itself (through a combination of Asterisk AMI calls and Asterisk commandline invocations).
Finally, I recreated my "caller announcement" feature that provides an spoken notification of the caller's name or telephone number on inbound calls. Using MQTT as a transport mechanism, the terminus of this currently runs on my Slackware Linux workstation, and vocalizes the notifications using my homebrew VoiceOver serialized TTS server.
So, please forgive me if I don't go into detail in this post; there's more than enough material to fill up many posts. And, I'm still working on the software; updates will come when I find the time.