Preface
Asterisk, the de-facto standard for developing telephony applications is now over 12 years old. It’s been around so long, that I truly can’t imagine the world without it anymore. I can still remember my first days with Asterisk, when VoIP services were still fairly rare and I used an ISDN BRI card to connect it to the PSTN – it was all so new. And here we are, over 12 years had passed and I’m still looking at it with amazement to see its progress and its adoption rate around the world.
While Asterisk was heavily adopted by the enterprise world, its main forte was in the development world – as it lit the candle of telephony applications and telephony platforms in many people. They no longer needed expensive platforms for developing services, Asterisk was the tool to get up and running fast, and most importantly, without mortgaging your house to get your idea up and running.
Since the early days of Asterisk, we’ve had multiple tool kits for developing Asterisk platforms: PHPAGI, Asterisk-JAVA, Py-Asterisk, Asterisk-PERL, Adhearsion – and these are just to name a few of them. Initially, people focused on AGI programming – of course, it was the easiest to do. When Asterisk Manager’s (AMI) light started shining, a new skill set was required – no longer just simple STDIN/STDOUT, we’re now using TCP sockets. Now, Asterisk REST Interface (ARI) is the upcoming star and the technology changed again to WebSockets.
Through out the years of Asterisk development and Asterisk integration – there was one thing missing from the puzzle – a proper book about how to develop Asterisk based platforms. Or better yet, there was no overall, encompassing, organized and truly informative source of information about developing VoIP platforms using Open Source tools, such as Asterisk, Kamailio, OpenSIPS, FreeSWITCH and others.
This book is here to change that, my aim is to provide a solid ground for Open Source VoIP platform development, educating people on how to truly build large scale installations and adopt proper methodologies when developing such applications and platforms.
Table of Contents
Chapter 1 – The need to communicate
Chapter 2 – Tools of the Trade
Chapter 3 – Look to the clouds to find freedom
Chapter 4 – To source or not to source, that is the question
Chapter 5 – Introduction to VoIP
Section A – Why VoIP?
Section B – A brief history of VoIP
Section C – SIP Primer
Section D – WebRTC Primer
Chapter 6 – Asterisk – Introduction
Section A – What is Asterisk?
Section B – SIP with chan_sip
Section C – SIP with chan_pjsip
Section D – The Asterisk dialplan
Section E – Connect the dots
Chapter 7 – Kamailio – Introduction
Section A – What is Kamailio
Section B – The Kamailio configuration logic and the SIP dialog
Section C – Kamailio and MySQL
Section D – Kamailio and Siremis
Chapter 7 – AGI, AMI and ARI – the Asterisk holy trinity
Chapter 8 – Redis – The key-value storage that could
Chapter 9 – United Federation of Asterisk – the federated Asterisk system
Chapter 10 – Application Security and resilience
Chapter 11 – WebRTC and more
A personal note
This is a work in progress – writing a book takes much time, effort, emotions and most of all – patience. I’m writing this book as part of my blog, without any funding (no one is paying me to write this book) – doing so in my own free time. I would highly appreciate it if the readers of this blog would send me feedback, requests or any other information they see as fit in this book. I will evaluate your requests and check their applicability.
If you would like to add a chapter to the book, or better yet, write a chapter from the above – I’ll be more than happy to incorporate it in (following an editorial process of course). I’m an avid believer in Open Source and Crowd Sourcing, and this book should be no different.