文章

電話號碼URI

圖片
眾所周知 VoIP 域(SIP域)採用 SIP URI 建立呼叫對話。 如果需要連接傳統的 PSTN 電話網絡,我們需要部署 VoIP 網關(或 SBC 會話邊界控制器)用於橋接兩個不同的網路。 大部分 網關 都支援 SIP URI,因此我們採用 SIP 中繼連接 SIP-PSTN 網路時,與連接 SIP-SIP 網路並沒有什麼不同。 但有些 網關 並不支援 SIP URI,它們僅能支援傳統電話號碼格式的URI(RFC3966規範定義了這種 TEL URI格式)。 這種 TEL URI 採用<tel:xxx>格式,而非<sip:name@address>格式。 請參考下圖: 先前版本的 miniSIPServer 總是能接受對方發起的 TEL URI 格式的呼叫,但是 miniSIPServer 本身並不會發起這種格式的呼叫。 最近幾個月先後有幾位客戶向我們反饋,希望 miniSIPServer 能支援採用 TEL URI 格式發起SIP 中繼呼叫,以便和傳統 PSTN 網路的網關進行對接,因此我們升級了 miniSIPServer (V60 build 20250208)擴展 SIP 中繼的功能。 在 SIP中繼的“出呼叫”配置中,可以選擇“採用電話號碼格式”,miniSIPServer 據此將採用<tel> 格式發起呼叫,如下圖配置所示: 對於 SIP 中繼的入呼叫,無需任何改變,miniSIPServer 可以接受對方採用 SIP URI 或 TEL URI 發起的呼叫。

miniSIPPhone 支援 Linux 系統(Debian、Ubuntu)

圖片
miniSIPPhone 終於升級到 V10 版本,此版本最重要的功能就是支援 Linux 系統。 當然,Linux 系統必須是 Debian 或 Ubuntu 系列的發行版本。 與 miniSIPServer 的要求一樣,Debian 版本要求是 V10(Buster)及以上版本,Ubuntu 版本要求是 V18.04(Bionic Beaver)及以上版本。 同時支援 X86_64 以及 ARM64(AArch64)兩種硬體架構。 現在在 Linux 系統上運行 SIP 電話非常簡單,請訪問我們的網站 下載 最新的版本: 例如,您下載的版本是“msp_v10_amd64.deb”,採用以下命令安裝: sudo dpkg --install msp_v10_amd64.deb 接下來就可以點選圖形介面快捷方式來運行 miniSIPPhone:   如果想要卸載 miniSIPPhone,則使用以下指令直接刪除即可: sudo apt remove minisipphone    

Debian 以及 Ubuntu 版本支援問題

最新的 miniSIPServer V60版本發布後,對 Debian 以及 Ubuntu 的版本支援做出了修改。 Debian 最低版本要求是 oldoldstable 版本,即目前的 V10 版本,也就是說 miniSIPServer 後續將不再支援 Debian V8、V9等版本。 考慮到 Ubuntu 實際是基於 Debian 的系統,因此相應的最低版本要求變更為 Ubuntu V18.04。 請參考 線上文件 以了解 miniSIPServer 對 Linux 系統的最低要求及相關細節。    

會議室以及其他

近日 miniSIPServer 升級到V60版本,這是最新的、可用於商業部署的穩定版本。 第一個重大特色就是「會議室」業務,該業務支援不超過 5 個本地分機用戶的會議呼叫。 請參考業務文件了解細節。 miniSIPServer 雲端也同步升級支援該業務。 另外,正如我們在前一篇部落格中提到,V60 業務最終移除了部分老舊的業務,例如呼叫卡、話吧。 這些業務曾經對我們某些特定的客戶非常重要,但就目前而言該對這些業務說再見了。  

最佳化 miniSIPServer

大約 20 年前我們開發並發布了 miniSIPServer,期間我們為越來越多的客戶加入了非常多的功能和業務。 最近我們重新檢視了 miniSIPServer 的所有業務。 其中有些業務的歷史非常悠久,我們判定這些業務可能已經無法適應目前的環境(或者說在當前環境下已經沒有實用意義),例如「話吧」、「呼叫卡」等各類業務。 下一個版本將優化(或清除)這類老舊的業務,miniSIPServer 將步入新的階段,將變得更快、更穩定、更適合新的 VoIP 網路需求。    

如果您需要部署 FXS 網關,……

圖片
FXS(Foreign Exchange State,外部交換站)網關用於將傳統電話設備連入 VoIP 網域,一般網路拓樸如下所示: VoIP 域 <--> miniSIPServer <--> FXS 网关 <--> 传统电话 一般一台 FXS  網關 連接一通傳統電話,但有些 FXS  網關 也能同時接上多台傳統電話,此時需要特別注意。 FXS  網關 連接多台傳統電話時,需要多個 SIP 分機帳號對應接取 miniSIPServer。 另外,網關有可能採用一個位址(IP 位址+端口)與 miniSIPServer 建立連線、註冊分機帳號。 這也就是說,多個分機帳號會採用同一個位址。 如果網關內某個帳號設定錯誤,網關會不停用錯誤訊息向 miniSIPServer 註冊,此時會觸發“失敗則阻止”,miniSIPServer 會屏蔽掉該網關的位址。 如前所述,網關內的 SIP 帳號都採用了同一個位址,因此這實際上會導致其他帳號同時註冊失敗。 在這種情況下,我們需要為該網關關閉“失敗則阻止”,即將網關的位址加入白名單。 請點選選單“業務 – IP位址黑白名單”,增加記錄接受網關的IP位址。 如下圖所示:    

在 Ubuntu 24.04 (Noble Numbat)系統中執行 miniSIPServer

圖片
Ubuntu 24.04 是最新的 LTS(長期支援)版本,顯然在商業環境中將會有廣泛的部署。 我們安裝了這個重要的版本,並執行 miniSIPServer 進行了一些測試。 測試結果非常不錯,運行介面如下圖所示: 如果您希望在 Linux 環境中部署新的 VoIP 系統,那麼 Ubuntu 24.04 是個不錯的選擇。 請參考 線上文件 以了解如何在 Linux 系統部署 miniSIPServer 的更多細節。  

支援 TLSv1.3

我們最近更新了 miniSIPServer 以支援 TLSv1.3。 本次修改不影響配置,如果您升級 miniSIPServer 到最新版本,無需修改任何配置。 miniSIPServer 有兩個模組有可能用到 TLSv1.3:(1)SIP 伺服器模組;以及(2)嵌入式 HTTP 伺服器模組。 如果您的 SIP 話機(或軟體電話)支援 TLSv1.3,那麼採用此協定將能更好地保護您的通訊。 請參考《 基於 TLS 的 SIP 》以了解更多細節。 目前本地 miniSIPServer 和雲端 miniSIPServer 都可以支援基於 TLSv1.3的 SIP 通訊。   本機 miniSIPServer 採用內嵌式 HTTP 伺服器提供 web 管理,預設沒有加密。 如果您需要或希望透過公共網路管理、設定 miniSIPServer,那麼建議啟用加密傳輸的 HTTP 服務。 目前主流的瀏覽器,例如Chrome、Edge、Firefox 等,都支援 TLSv1.3,請參考《 Web 管理 》配置和啟用加密的HTTP。  

美麗的夜晚

圖片
 

ARM64 以及一些修改

(原文鏈接:請 點擊這裏 。) 如大家所知,miniSIPServer有一些專門為樹莓派(Raspberry Pi)訂製的版本,這些版本都是基於 armhf 架構。 最近越來越多的客戶向我們諮詢在 arm 系統上運行的 miniSIPServer,經調查,大部分都是 arm64 架構的伺服器或板載系統。 據此我們將為特定的樹莓派系統定制的 miniSIPServer 修改為普適性的、基於 ARM64 架構的 miniSIPServer。 當然,樹莓派也支援 arm64 架構,因此這次的修改基本上能涵蓋大部分的 arm 架構應用場景。 另一方面,這些應用場景的大部分客戶都只需要命令列方式的 miniSIPServer,他們並不需要圖形介面的 miniSIPServer,也就是說他們只需要執行 minisipserver-cli 就可以了。 預設情況下, miniSIPServer 安裝套件會要求安裝qtbase5-dev 庫以支援圖形介面,而此類場景中實際上已經不需要這個函式庫了,因此我們修改了miniSIPServer 安裝套件的deb-control 控制參數,將qtbase5-dev 包從'Depends'段改到'Suggests'段。 如果您希望執行圖形介面的 miniSIPServer,則需要用以下命令安裝依賴函式庫: sudo apt install gcc g++ qtbase5-dev 如果您只是希望執行命令列方式的 miniSIPServer, 則需要以下命令安裝相依性庫:   sudo apt install gcc g++          

181 Call Is Being Forwarded

圖片
 (原文:請 點擊鏈接 。) 「呼叫前轉」是 VoIP 以及通訊領域非常傳統的業務。 預設一般是由 SIP 終端機(話機)發送 3xx 訊息給 miniSIPServer 進行呼叫前轉,當然 miniSIPServer 本身也可以直接發起呼叫前轉。 大多數情況下,主叫側並不知道被叫側發生了呼叫前轉,主叫側也不關心被叫側的呼叫是否被前轉了。 然而,有些時候主叫側確實需要知道被叫側的呼叫前轉。 miniSIPServer 目前會向主叫側發送 181 Call Is Being Forwarded 訊息,明確告知主叫:被叫側正發生呼叫前轉。 在 181 訊息中,miniSIPServer 增加了一個 Call-Info 頭域攜帶前轉的必要資訊。 請參考下圖: 上圖的流程發生了兩次前轉:(1)被叫 B 被前轉到被叫 C;以及(2)被叫 C 被前轉到被叫 D。    181 消息的 Call-Info 头域将携带以下信息:(1)呼叫正在被前转;(2)谁发生了呼叫前转;以及(3)前转呼叫的目标用户。请参考上图第一个 181 消息(即被叫 B 前转到被叫 C)中的 Call-Info 头域细节: Call-Info: purpose=forwarding, username="userb", contact="userc"  

外線的 RequestURI 參數

圖片
(原文:請點擊 鏈接 。) miniSIPServer 與 VoIP 服務器(網關)通過外線連接,發送消息(例如 REGISTER 或者 INVITE等消息)時會在 Request-URI 中自動附加參數“user=phone”。這是來自中國移動的要求。多數情況下這種做法都沒有問題,在 RFC3261 規範中也明確定義了 RequestURI 的附加參數。 然而事情總有意外。最近有些客戶向我們反映,miniSIPServer 與他們的 VoIP 服務商網絡對接失敗,對方服務器無法識別 RequestURI 的參數。當然,簡單的方法自然是這些服務商升級自己的服務器,遵循 RFC3261 標準規範的定義,這樣大家都會很舒適。 其中個別運營商堅持目前的狀態,不願意做出任何改變。那怎麼辦呢?我們不得不在外線的配置做出一點修改,請參考下圖: 我們在外線的“出呼叫”配置中,增加了一項“Request-URI 附加參數”。客戶們可以根據自己的網絡狀況來設置該項的值。 需要說明的是,如果是中文界面,我們默認客戶是在中國的網絡環境下配置外線,因此該項的默認值是“user=phone“,而其他語種的界面中,該項默認為空。我們認為這樣的處理可以滿足全球各種網絡環境的要求。 該修改已經應用於本地版本的 miniSIPServer 以及雲端版本的 miniSIPServer,歡迎大家試用。