文章目錄
-
-
-
- 前言
- 為什麼寫這本書
- 本書面向的讀者
- 本書的内容及特色
- 排版及約定
- 如何閱讀本書
- 實驗環境及軟、硬體裝置選擇
- 資源和勘誤
- 緻謝
- 特别鳴謝
-
-
前言
我們已經步入了一個新的時代。
目前,
VoIP
已開始成為包括語音和視訊在内的
多媒體通信
的主導
并将在全世界範圍内引領一場新的革命,
而
SIP( Session Initiation Protocol,會話初始協定)
正是這場革命的核心。
試想一下我們常用的電子郵件,它僅能用于文字通信。
從電子郵件證生開始,
經過三十幾年的發展,
到現在幾乎人人都有了一個Email位址(有的人還有多個)。
随着
實時多媒體通信需求
的增加及技術的發展,
筆者相信在不久的将來,
每個人都将會擁有
一個用于多媒體通信的SIP位址
。
目前,
因為網際網路技術高速發展,
使得資料流量的成本越來越低,
而且随着3G、4G無線網絡的不析發展與優化,
以及各種智能移動終端的出現,
網絡更将無處不在,
這就為
SIP的進一步普及
營造了必要的環境。
在這種環境下,
各種新型的
SIP電話
及可以運作在各種移動裝置上的
SIP用戶端
可以讓使用者以極低的成本
與世界上任何一個角落的人通信。
為什麼寫這本書
大多數關于作業系統的圖書均
重理論而輕實踐
,
而本書則在這兩者之間進行了較好的折中。
——
Andrew S. Tanenbaum
從第一次讀
Tanenbaum
的
《作業系統設計與實作》
到現在已經十多年了,
可這句寫在那本書前言裡的話到現在還讓我記憶猶新。
上大學時,
我也曾學習過
“程控交換網”
、
“移動通信”
之類的專業知識,
但那時隻有膚淺的認識,了解不深。
畢業後,
我到
煙台電信
工作,
負責
程控交換機
的維護。
煙台電信這個名字也許太老了。
中國電信業在短短的幾年内經過了數次重組改制,
我離開時叫`煙台網通`,
煙台電信是我剛參加工作時的名字,
與現在的煙台電信不是同一家公司。
在工作中,
我學到了
電信網絡傳輸與交換
的各種技術,
掌握了
七号信令系統(SS7)
,
算是做到了理論與實踐相結合吧。
那時侯,VoIP還是很新的東西,
由于網絡條件的限制,國内也少有人用。
2007年年底,我開始接觸
Asterisk
。
閱讀了
《 Asterisk,電話未來之路》
,
并買了一個單口的語音卡,
實作了
Voicemail
、
PSTN網關
、
SIP中繼
等各種功能。
能在自己電腦上實作這些有趣的東西,
令我非常興奮。
後來,
我加入
Adapted Inc.
,
開發一種一對一的
網絡教學平台
。
最初的
背景語音交換系統
也使用
Asterisk
,
但不久後便轉到了
FREESWITCH
。
那時我就深切意識到,
FREESWITCH
必将成為
Asterisk
之後的通信領域的又一寵兒。
于是便懷着無比的熱情開始學習FREESWITCH。
在學習和探索FREESWITCH的過程中,
我逐漸融入了FREESWITCH社群,
與全世界的開發者讨論各種VoIP技術、交流使用經驗,
這讓我學到了許多知識。
同時,在開發和使用 Freeswitch的過程中
我也積累了大量的使用和開發經驗,
并将這些知識和經驗不時地更新到
FREESWITCH官方的Wiki
上。
Wiki是 Freeswith文檔的大學營,
内容來自衆多FREESWITCH愛好者和實踐者的奉獻。
不過,對于初學者來說,
Wiki上的内容讀起來還不是很系統,
是以我就萌生了寫一本書的想法。
本書面向的讀者
-
本書作為國内第一本介紹FREESWITCH的書,内容全面又不失深度,
是以适合從事FREESWITCH相關工作的各層次的讀者閱讀。
- 對于初學者來說,本書是很好的入門教材;
- 對于有一定經驗的讀者來說,本書可以提供更深人的指導和案例分析,幫助他們深人理清各功能點的來龍去脈;
- 對于進階使用者和開發者來說,本書也有詳細的開發指導和最佳實戰經驗。
- Freeswitch愛好者:對于 FREESWITCH愛好者來說,本書是最直接的需求。
- 本書内容全面、介紹細膩和深度适當,是其他資料或同類書籍所沒有的。
- 以 FREESWITCH為基礎進行二次開發的人員:以 FREESWITCH為基礎,可以進行
- 以下:
- 呼叫中心
- 指揮排程
- IP-PBX
- 網際網路音頻或視訊
- 等系統的開發。
- 本書可以提供詳盡、豐富的參考資料和實踐經驗,使這類讀者少走彎路,甚至達到事半功倍的效果。
- 以下:
- VolP系統、軟交換系統、電信裝置開發人員: FREESWITCH是開源領域的典範,又是同類系統中的佼佼者。
- 本書對 FREESWITCH的原理、實作都做了深入探讨,
- 還對源代碼進行了導讀和深入分析,
- 可以帶領讀者很快了解現代軟體的架構、邏輯及算法實作,
- 因而很有借鑒意義。
- FREESWITCH使用MPL許可證釋出,完全不限制商業應用。
- 因而廣大開發者也可以完全站在巨人肩膀上,不重複發明輪子,迅速做出新的産品。
- Asterisk開發者:跟大多數 Asterisk開發者一樣,我也是讀着
《 Asterisk,電話未來之路》
一路走過來的。《Trixbox不相信眼淚》
-
Trixbox基于 Asterisk的一款PBX軟體。
- FREESWITCH作為後起之秀,在許可證、系統架構和性能方面都有很好的優勢。
- 了解 FREESWITCH可以開拓讀者的眼界和思路,
- 不管是否轉到FREESWITCH,
- 相信本書都會對你的職業生涯有所幫助。
-
- Freeswitch系統實施、維護人員:對于 FREESWITCH相關呼叫中心、IP-PBX等系統的實施和維護人員來說,本書也是不可或缺的教材。
- 事實上,本書第3章介紹了一個完整的
,FREESWITCH IP-PBX搭建方案
- 通過對這一章的學習,
可以很容易地用FREESWITCH打造一個企業的系統管理者
。企業電話系統
- 事實上,本書第3章介紹了一個完整的
- 電信企業的維護人員、技術決策人員:
- 廣大電信企業的人員在以往的工作中積累了大量的工作經驗,
- 但往往依賴于華為、中興等裝置廠家提供的解決方案和技術架構。
- 技術瞬息萬變,在市場竟争日益激烈,國内電信政策調整并逐漸寬松之際(如虛拟營運商牌照的發放),
- 隻有了解另種解題思路,并掌握了新技術,
- 才能更好地把握市場方向,為客戶提供更好的服務。
- 呼叫中心從業人員:可以預見,在不遠的将來,将有很多呼叫中心是基于 FREESWITCH開發的。
-
而本書中豐富的基礎知識和詳盡的功能介紹将對呼叫中心系統的使用、管理和決策起到很
好的指導作用。
-
- 相關專業在校師生:筆者看過一些學校的教材,大部分隻是講VolP原理及SIP協定等,很枯燥;
- 而且,老師總是教育學生“要理論與實踐相結合”,
- 而本書正是理論與實戰的最佳結合點。
- 同時我也注意到,有一些學校的導師和研究所學生已經在圍繞這個主題進行研究了。
- 與 FREESWITCH相關的開發經理、技術決策人員:
- FREESWITCH是VolP軟交換軟體的典範,
- 但本書所講的不僅僅是 FREESWITCH。
- 書中以 FREESWITCH為例将枯燥的(包括通信、網際網路以及軟體開發)專業知識
- 以淺顯、直覺、生動的語言呈現在讀者面前;
- 同時,對軟體開發的模型、模式、架構、流程、狀态機、接口設計等進行了普及和深入剖析。
- 了解本書所講的知識有助于技術選型和決策。
- 總之, FREESWITCH是一個電話系統。
- 我們人人都離不開電話,可以說,它将來可能出現在任何企業、部門及要使用電話的所有角落。
- 進一步講, FREESWITCH完全超越了一個簡單的電話系統,其應是一個更通用的
,它可以完美地與網際網路及移動網際網路結合,建立前所未有的通信應用。通信系統平台
- 古人雲
,或雲“開卷有益”
。“他山之石,可以攻玉”
- 是以,即使你不使用 FREESWITCH,但隻要從事與通信相關的工作,本書都會在擴充基礎知識、開闊思路等方面對你有所幫助。
本書的内容及特色
- 作為專門介紹 FREESWITCH的第一本中文書,筆者對内容做了精心安排。
- 為了照顧各種背景、各種水準的讀者,也為了讓讀者更多地了解 FREESWITCH的方方面面,本書盡量選擇了不同語言、不同場景、不同技術、不同實現方法的例子,力求使大家通過本書,對 FREESWITCH有一個全面而又深入的認識。
- 本書内容基于最新的
(FREESWITCH1.4版
)功能和特性截止到2014年1月份的最新開發版本
- 從總體上分為三個部分
- 第一部分基礎篇:
- 作為本書的開篇,這部分首先介紹一些基本概念及背景知識,
- 這部分内容主要針對沒有電信背景的人。
- 對從
轉到電路交換
來的讀者來說也會很有幫助。VoIP
- 此外,這部分也詳盡講解了學習 FREESWITCH應該具備的基礎知識,
- 如
- 基本的概念和術語、
- FREESWITCH的基本架構、
- 子產品的組織、
- 配置檔案的組織、
- 撥号計劃和電話路由、
- SIP協定、
- 媒體處理與媒體協商、
- NAT穿越,
- 以及 FREESWITCH中的SIP子產品( mod sofia)等,
- 并在第3章帶領大家進行了完整的IP-PBX配置和體驗。
- 讀完本部分,讀者就能具備獨立使用和維護基本的 FREESWITCH系統的能力了
- 第二部分實戰篇:
- 要想學好 FREESWITCH,就必須做到理論與實踐相結合,是以反複練習是必須的。
- 這部分結合我在實際工作中的一些實際例子,介紹了在解決問題的過程中積累的經驗。
- 如第10章介紹了調試與排錯的一般技巧、檢査及分析系統日志的方法,并詳細解釋了呼叫是如何工作的。
- 在後面的章節中還講了一些基本功能的配置執行個體,如
- 建立使用者、
- IVR、
- 錄放音、
- TTS、
- 呼叫排隊、
- 視訊通話、
- 多人電話會議、
- 話單、
- 計費、
- FREESWITCH對接
- 以及生産環境中的應用、
- 系統的部署方式、
- 拓撲結構、
- 參數配置、
- 安全性考慮
- 及系統優化指南等。
- 通過這些内容,讀者可以深入了解基礎篇介紹的概念和理論,
- 并且可以仿照這裡的例子做出各種各樣的應用。
- 另外,這部分中有些例子甚至可以直接套用。
- 第三部分進階篇:這部分主是面對開發者的。
- 不過,即使不從事開發工作,學習ー下本部分的内容也是很有幫助的。
- 這部分除了講開發之外,還對整個系統架構及内部實作進行了深入剖析。
- 讀完後你會覺得:噢,原來是這樣的!
- 具體來講,這部分講了
- 嵌入式腳本、
- Event Socket開發的基礎知識
- 以及通過這些開發技術實作的IVR、呼叫中心應用之類的各種例子。
- 此外,還講解了
- 源代碼閱讀、編譯的方法,
- 并對源代碼進行了深人分析。
- 最後給出了一個在 FREESWITCH代碼上進行源代碼級二次開發的執行個體。
- 讀者可以通過自己動手實作各種呼叫功能和流程,進一步了解和鞏固所學的知識,
- 以便從根本上了解 FREESWITCH中的一切秘密。
排版及約定
- 本書部分插圖由
、Xmind
、Keynote
、Graphviz
等工具生成。mscgen
- 程式代碼、系統的輸入輸出等大部分有行号。強調部分使用粗體字。
- 有些程式代碼行較長,為适應版面,進行了人工排版。
- 提示符。
- 對于指令行的輸人輸出來說,
- 在 Linux及Mac等UNIX類平台上,前面的
(或“#”,如果為root使用者的話)符為“$”
;作業系統指令提示符
- 在 Windows系統上使用
作為作業系統指令提示符;"C:\”
-
作為 FREESWITCH(控制台以及“ freeswitch>”
)系統提示符。fs_cli
- 在不至于引起混淆的情況下,可能會省略系統提示符。
- 除非有特别說明,本書中的
一般指Wiki
,wiki. freeswitch.org
一般指Jira
。jira. freeswitch.org
如何閱讀本書
-
本書對内容和學習路線做了精心安排,對于大部分讀者而言,适合順序閱讀(唯一例外的就是你
可以先讀後記部分)。
- 當然,由于各種概念和理論都是互相聯系的,是以,在讀後面一些章節時回過頭來複習和印證一下某些基本概念也是很有必要的。
- 對于剛進入通信領域的開發者來說,前面的通信曆史和基礎知識是非常有用的。
- 隻有了解了這些基礎知識,才能更好地了解通信網中各個不同組成部分所發揮的作用以及它們之間的互動流程。
- 對于有了通信基礎卻不熟悉 FREESWITCH的讀者來說,可以簡單浏覽前面的通信基礎知識,并通過第3章的 FREESWITCH體驗對 FREESWITCH有一個直覺的認識。
- 對于比較熟悉 FREESWITCH的讀者來說本書的第4章到第9章也會幫助他們使以前零散的知識更加系統化。
- 對于基于 FREESWITCH進行開發的普通開發者來說,在熟練掌握基礎知識之後,再閱讀本書第二部分,并同步做一些練習,會取得較好的效果。
- 如果想直接在 FREESWITCH内部開發子產品或修改 FREESWITCH的源代碼,可接着順序閱讀第三部分的内容。
- 當然,筆者鼓勵所有人都通讀全書的内容,即使不做開發,後面有關開發的相關内容也有助于了解前面的基礎知識。在通讀本書一遍以後,根據自己的情況挑選相關的章節進行反複閱讀和實驗,以便将所有知識都融會貫通,進而使自己的水準更上一層樓。
- 此外, FREESWITCH一直處于很活躍的開發中,是以某些章節中描述的内容可能與最新的版本有所出入,我将在本書相關的網站上進行跟蹤說明。
實驗環境及軟、硬體裝置選擇
本書涉及的軟體絕大部分都是開源軟體(非開源的軟體,筆者都進行了特殊說明),
是以讀者可以根據書中的指導自行安裝和實驗。
為了使書中的案例更真實,同時也為了友善大家在真實的硬體環境中進行實踐,
書中的實驗我們均使用真實的硬體裝置或軟體産品進行。
作為一本技術書籍,我們在書中隻讨論各種裝置互連的技術性問題,
而對于各廠商的裝置好壞則不做評論。
有條件的讀者可以自行研究和比較。
不過,如果讀者在學習過程中想拿硬體裝置做實驗,但是不知道該選擇哪款産品,
我建議可以從本書中提到的裝置中選擇。
推薦的理由有二:
- 其一,這些裝置我都親自測試過;
- 其二,書中的硬體都是現在市場上比較流行、口碑和品質都比較好的,這類硬體不容易出錯,即使出錯也容易找到技術支援。
初學者往往對 FREESWITCH和硬體都不是很熟悉,因而在遇到問題時很難定位是硬體原因還是軟體原因,以至于浪費寶貴的學習時間。
至于在生産環境中大規模的應用,相信各公司都有專門的人研究,我在此就不敢妄言了。
資源和勘誤
-
是本書的線上站點,提供本書的代碼下載下傳及勘誤等。book.dujinfang.com
-
[email protected]
是專門為本書設立的電子郵箱,如果您對本書有任何意見、建議或
批評請發到該郵箱。
-
是我的微網誌,我很樂意與您進行交流。http:/weibo.com/dujinfang
-
FREESWITCH-CN
是 FREESWITCH中文社群的微信公共賬号,您也可以關注該賬号擷取本書最
新的情況,以及與本書作者進行交流。
-
www. freeswitch.org.cn
是 FREESWITCH-CN中文社群的官方網站,經常關注該網站的更新,這
樣可以擷取中文社群的最新資訊。
-
是華章公司的官網,您也可以到這裡下載下傳相關代碼。www.hzbook.com
由于筆者水準所限,書中存在錯誤和疏漏在所難免,歡迎廣大讀者批評指正。
緻謝
FREESWITCH
是
OSTAG
的注冊商标。
Open Source Telephony Advancement Group,即開源電話學進步組,參見http://ostag.org/。
感謝
Anthony Minessale
及他的團隊給我們提供了如此優秀的軟體,也感謝他在本書寫作時提供的耐心指導和答疑;
同時感謝 FREESWITCH社群所有成員的熱心幫助,
使我在學習 FREESWITCH的道路上一帆風順。
本書的一些資料和例子來自 FREESWITCH Wiki及郵件清單,因不能一一査證原作者,故在此一并緻謝。
- 感謝機械工業出版社華章公司。
-
對中文原創計算機圖書的信任讓我倍感溫馨。華章公司
- 感謝
策劃,他對圖書出版的理念帶給我許多啟發和寫作的動力。楊福川
- 感謝
和孫海亮
編輯,他們的耐心和細緻保證了本書的品質和寫作進度。姜影
- 感謝
先生,他給了我許多寫書的建議,并介紹我認識方舟
先生。楊福川
- 感謝
老師,是他幫我策劃并将我帶上了出版之路。劉光大
- 感謝我的妻子
,她是本書的第一讀者,常常幫我修訂文字錯誤;偶爾,在我埋頭寫作時,悄悄地在我案頭放一個削好的蘋果;多少次,在我挑燈夜戰的翌日清晨,做好早餐,沖好茶,自己悄悄去上班。呂佳娉
- 感謝我的兒子
,他很聰明,還不到4歲就會經常幫我測試電話了。在我寫作時,他清脆的聲音“喂,爸爸嗎?…”經常素繞在我的耳畔,鼓勵我繼續寫下去。我也很内疚寫書占用了好多本應該陪他玩耍的時間。杜昱凝
- 感謝
先生,是他指導我走上了 FREESWITCH之路。Jonathan Palley
- 感謝
先生跟我一起創業,因為有了他管理公司的方方面面,才使我有更多的時間專注于 FREESWITCH,此外,他還寫了本書第2章中有關呼叫中心的部分内容。崔鋼
- 感謝
-濱州公路工程總公司
先生,他與筆者合作編寫了機械工程師``張令考
、第2章
及第12章
的部分内容。第14章
- 感謝
、高超
、李洋
、楊小金
、景朝陽
,他們或者寫了一些例子,或者幫我進行了校對、測試、編輯和排版等。李雪梅
- 感謝
,他維護着 FREESWITCH-CN QQ群,進而為大家提供了一個實時交流的平台,同時他也對本書的寫作提了很多很好的意見。程祝波
- 感謝
先生,是他提供了本書自寫作以來的第一筆捐款。Tim Yang
- 感謝網友
及其他熱心讀者,他們對本書給予了積極的回報并幫助我勘誤,沒有他們,便沒有本書。flying
特别鳴謝
在本書寫作時,得到了國内外一些硬體和裝置廠商的贊助和支援,在此表示由衷的感謝。
這些公司有(排名不分先後):
- Yealink(億聯)
- Grandstream(潮流)
- Dinstar(鼎信通達)
- Sangoma(加拿大,及中國總代
)星吳通
- Vestec(加拿大)等。
杜金房