使用FreeSWITCH SIP落地的配置總結

2021-07-03 14:30:44 字數 2974 閱讀 1333

首先先說明一下落地的含義。用我簡單粗糙的理解,就是通過sip接入運營商呼到手機或者固話。在freeswitch中使用sip和運營商對接達到落地的效果。

簡單介紹一下,freeswitch裡gateway(閘道器)的概念。閘道器又成協議轉換器,通常都是進行協議轉換。這裡說的閘道器指的是語音閘道器,如常用的sip閘道器,負責sip協議和七号信令或isdn pri(模擬訊號)之間的轉換。但freeswitch中的閘道器有時候不一定是真的閘道器,也可以是另外乙個sip server(如另乙個freeswitch, asterisk等)。但最終會有乙個裝置或系統,將sip轉換成模擬訊號。簡化一下過程,我們認為freeswitch送到的就是真的閘道器。

其簡化後的過程大致如下:

sip話機 —-> freeswictch —-> 閘道器 —-> 運營商 —-> 手機或固話

對接的最終目的都是為了將通話轉到閘道器上,熟悉sip協議的都知道,其實就是發invite訊息。按照對接方式,分成認證和非認證。非認證又稱ip對接,或者sip中繼對接。簡單理解認證方式就是,freeswitch無法隨意的將呼叫送到閘道器上,需要經過閘道器的認證。非認證方式,只要知道閘道器位址,大家都可以發起invite。這裡可能涉及到安全問題,但這不在我們的討論範圍內。

認證模式

freeswitch需要建立乙個閘道器並註冊到閘道器裝置上。見下面配置:

配置目錄在freeswitch 安裝目錄的下的conf/sip_profiles/external/ 增加乙個test.xml

"test"/>

value="www.example.com"/>

value="192.168.1.8"/>

value="4444"/>

value="!@#qwe123"/>

value="4444"/>

value="www.example.com"/>

value="true"/>

value="192.168.1.8"/>

value="120"/>

簡單的介紹一些這幾個引數:

好了,這樣表示freeswitch作為乙個分機註冊到閘道器192.168.1.8上。

在freeswitch中配置如下路由,當外呼時就可以將呼叫送至閘道器上了。然後由閘道器出局

name="callout">

field="destination_number"

expression="^10086$">

data="sofia/gateway/test/10086"/>

condition>

extension

非認證模式

直接指向ip位址

name="callout">

field="destination_number"

expression="^10086$">

data="sofia/internal/192.168.1.8:5080/10086"/>

condition>

extension

增加非註冊模式的閘道器
"test"/>

value="www.example.com"/>

value="192.168.1.8"/>

value="4444"/>

value="!@#qwe123"/>

value="4444"/>

value="www.example.com"/>

value="false"/>

value="192.168.1.8"/>

value="120"/>

其中路由和認證模式的相同

name="callout">

field="destination_number"

expression="^10086$">

data="sofia/gateway/test/10086"/>

condition>

extension

其它情況

有時候會有這樣的場景,閘道器在內網中,而freeswitch在公網中,freeswitch無法直接指向內網位址,也沒法註冊到閘道器裝置上。這個時候就需要用到nat了,讓內網閘道器註冊到公網的freeswitch上。內網註冊過去之後,會在路由器上「打洞」,即做了乙個內外網埠對映。freeswitch無法直接到達閘道器,但是通過外網埠就能到達內網的閘道器了(這裡由於nat有多種型別,並不一定能成功,但通常情況下是可以的)。這時候假設內網閘道器以分機4444註冊到freeswitch上。(其實也可以用別的方式來做,比如在路由器上做埠對映,內網和外網做埠對映,不過這種方式不夠靈活)

在freeswitch的console裡呼叫

sofia_contact

4444

得到結果

sofia/internal/sip:[email protected]:17480
從這裡我們可以知道閘道器對應的外網位址和埠,那只要把呼叫資訊發到171.221.76.7:17480即可。但我們實際想呼叫的號碼可能是手機號,或者固話,這裡簡單起見,還是用10086。就需要把這個4444號碼替換成10086。那麼需要配置路由如下:

name="callout">

field="destination_number"

expression="^10086$">

data="$)}|^(.+)sip:(.+)@(.+)|%1sip:10086@%3)}"/>

condition>

extension>

freeswitch和閘道器如果在同一網段或者閘道器在freeswitch的外網的話(實際上就是說freeswitch可以直接訪問到閘道器),就採用freeswitch註冊到閘道器或者指向閘道器的方式,這也是常用的方式。 如果閘道器在內網,而freeswitch在外網的話,就只能採用內網閘道器註冊到freeswitch的方式。

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...