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.