Book Image

FreeSWITCH 1.8

By : Anthony Minessale II, Giovanni Maruzzelli
Book Image

FreeSWITCH 1.8

By: Anthony Minessale II, Giovanni Maruzzelli

Overview of this book

FreeSWITCH is an open source telephony platform designed to facilitate the creation of voice and chat-driven products, scaling from a soft-phone to a PBX and even up to an enterprise-class soft-switch. This book introduces FreeSWITCH to IT professionals who want to build their own telephony system. This book starts with a brief introduction to the latest version of FreeSWITCH. We then move on to the fundamentals and the new features added in version 1.6, showing you how to set up a basic system so you can make and receive phone calls, make calls between extensions, and utilize basic PBX functionality. Once you have a basic system in place, we’ll show you how to add more and more functionalities to it. You’ll learn to deploy the features on the system using unique techniques and tips to make it work better. Also, there are changes in the security-related components, which will affect the content in the book, so we will make that intact with the latest version. There are new support libraries introduced, such as SQLite, OpenSS, and more, which will make FreeSWITCH more efficient and add more functions to it. We’ll cover these in the new edition to make it more appealing for you.
Table of Contents (23 chapters)
Title Page
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface

The FreeSWITCH design - modular, scalable, and stable


The design goal of FreeSWITCH is to provide a modular, scalable system around a stable switching core, and to provide a robust interface for developers to add to and control the system. Various elements in FreeSWITCH are independent of each other and do not have much knowledge about how the other parts are working, other than what is provided in what are called "FreeSWITCH APIs". The functionality of FreeSWITCH can be extended with loadable modules, which tie a particular functionality or an external technology into the core.

FreeSWITCH has many different module types that surround the central core, like sensors and interfaces connect a robot brain to the external environment. The list includes the following:

Module type

Purpose

Endpoint

Telephone protocols such as SIP and PSTN lines.

Application

Performs a task such as playing audio or sending data.

Automated Speech Recognition(ASR)

Interfaces with speech recognition systems.

Chat

Bridges and exchanges various chat protocols.

Codec

Translates between audio formats.

Dialplan

Parses the call details and decides where to route the call.

Directory

Connects directory information services, such as LDAP, to a common core lookup API.

Event handlers

Allows external programs to control FreeSWITCH.

File

Provides an interface to extract and play sound from various audio file formats.

Formats

Plays audio files in various formats.

Languages

Programming language interfaces used for call control.

Loggers

Controls logging to the console, system log, or log files.

Say

Strings together audio files in various languages to provide feedback to say things such as phone numbers, time of day, spellings of words, and so on.

Text-To-Speech (TTS)

Interfaces with text-to-speech engines.

Timers

POSIX or Linux kernel timing in applications.

XML Interfaces

Uses XML for Call Detail Records (CDRs), CURL, LDAP, RPC, and so on.

 

The following diagram shows what the FreeSWITCH architecture looks like and how the modules orbit the core of FreeSWITCH:

By combining the functionalities of the various module interfaces, FreeSWITCH can be configured to connect IP phones, POTS lines, WebRTC, and IP-based telephone services. It can also translate audio formats and provides an Interactive Voice Response (IVR) system with custom menus. A FreeSWITCH server can also be controlled from another machine. Let's start by taking a closer look at a pair of important module types.