18
Introduction to FreeSWITCH Stanley Wu (吳建澄) [email protected] Mar. 04, 2016

Indroduction to freeSWITCH

Embed Size (px)

Citation preview

Introduction to FreeSWITCH

Stanley Wu (吳建澄) [email protected]

Mar. 04, 2016

Outline

• IP Telephony System Overview

• What is FreeSWITCH?

• FreeSWITCH Functions

• FreeSWITCH Architecture

• FreeSWITCH Fundamentals

• PBX Applications

2

IP Telephony System Overview

3

Internet

Enterprise

Communication Service Vender

User

Network Operator

Private Branch Exchange

System

IP Telephony System Overview • Deep in Private Branch Exchange (PBX) System

4

Internet Gateway

PSTN/ISDN

Analog Gateway

IP Phone

Analog Phone

Fax

Internal Network

PBX System

SIP Trunk

Gateway

Analog Gateway

Database

IVR

PBX

Conference

Voice Mail

What is FreeSWITCH?

• FreeSWITCH™ is an open source communications platform, licensed under the MPL(Mozilla Public License)

• FreeSWITCH was created in 2006 to fill the void left by proprietary commercial solutions

• Designed to be modular, scalable and stable

• FreeSWITCH current released version is 1.6

5

FreeSWITCH Functions

• PBX Server (Transcoding B2BUA)

• IVR & Announcement Server

• Conference Server

• Voicemail Server

• Fax Server

• Session Border Controller

6

FreeSWITCH Architecture

7

FreeSWITCH Architecture

• Important modules: Endpoint, Dialplan and Application

• Endpoint

– The primary role of endpoint is to take certain common communication technologies and normalize them into a common abstract entity which we refer to as a session.

– A session represents a connection between FreeSWITCH and a particular protocol

8

FreeSWITCH Architecture

• Important modules: Endpoint, Dialplan and Application

• Dialplan – Dialplan is designed to lookup list of instructions

from the central XML registry within FreeSWITCH.

– The XML registry will parse a series of XML extension objects using regular expression pattern matching

– The extension object is selected based on the configuration data for the calling Endpoint.

9

FreeSWITCH Architecture

• Important modules: Endpoint, Dialplan and Application

• Application – Each instruction defined in the dialplan for an extension

object is added to the session in the form of an application name and data argument that will be passed to that application.

– Example of application: • Set: configure extension parameter

• Bridge: bridge a new channel to the existing one

• Answer: answer the call for a channel

• Hangup: hangup a current channel

• Ivr: run an IVR menu

10

FreeSWITCH Architecture • Example extension in a dialplan

11

• In this scenario the Endpoint module turned SIP into a FreeSWITCH session and the dialplan module turned XML into an extension. • The bridge application will connect the call to the endpoint/channel defined as argument of

data in the application. • Simply an incoming call for 1001 will be send to the sipendpoint/1001 to reach the actual

phone

FreeSWITCH Fundamentals (1/2)

• Threaded Model (Parallel Operations) – Every connection has its own thread. – Sub-systems run in background threads. – Event handlers push events into threads.

• Stable Protected Core – Critical data structures are opaque. – Complicated code is all in one place. – Complicated routines get maximum reuse. – Higher level code cannot be misused. – With each new level of API the power increases as the

complexity decreases.

12

FreeSWITCH Fundamentals (2/2)

• Dynamic Modules to Extend Functionality – FreeSWITCH API interface allows the addition of commands that can be accessed remotely. – Application interface allows creation of custom IVRs and call routing apps. – XML interface allows real-time dynamic access for user directory and configuration. – Endpoint interface connects IM and phones. – Formats, Automated Speech Recognition (ASR) & Text-to-Speech (TTS)

• Detailed Event and Logger System – Events are fired whenever something significant happens. – Detailed logging makes debugging easier. – External applications can bind to events and track the status of the entire system.

• Hooks into Everything – Embedded languages simplify the API even more. – Same principle as the CGI / Web server.

13

PBX Application (1/2)

14

PBX Application (2/2) • Intercom (Doorphone)

• Public Address System

15

Reference

• FreeSWITCH Offical Website

– https://freeswitch.org/

• Open Source Software Lab

– http://www.osslab.org.tw/VoIP/IP_PBX

16

Q&A

Thanks for your Listening

17

FreeSWITCH Development History

• History – 2006, the FreeSWITCH project was first announced at

O'Reilly Media's ETEL Conference – 2008, FreeSWITCH's first official 1.0.0 release (Phoenix) – 2012, FreeSWITCH development team had adopted

separate stable (version 1.2) and development (version 1.3) branches

– 2014, released FreeSWITCH 1.4, the first version support SIP over Websocket and WebRTC

– 2015, released FreeSWITCH 1.6, the first version that supports video transcoding and video conferencing

• Developer – Lead designer, Anthony Minessale

18