實驗三 : MGCP 實驗目的 使同學瞭解MGCP模擬程式和基本通話流程,熟悉MGCP的命令與訊息,並了解Call Agent程式的運作,並學會開發新的通話服務。 實驗原理 修改 CA 以開發新服務 SS7 CA SG MGCP TGW RGW CO PSTN RTP
執行MGCP simulation Program 將網頁上voip_v1.zip的資料夾解壓縮後存於電腦中,直接點選VoIP.exe即可使用。資料夾中其他檔案均為所需,不得任意刪減,否則將可能無法正確執行。 voip_v1所放置的路徑不得有空白,否則模擬程式將無法正確執行(ex:不的放於 My document,桌面..)
實驗流程 (1/4) 加入RGW 加入CA 選擇是否語音支援
實驗流程 (2/4) 初始化CA 編輯更改 初始化RGW 初始化Endpoint
實驗流程 (3/4) 完成模擬環境建構
實驗流程 (4/4) CA會偵測其管轄區域內的電話 RGW其管轄區域內的電話 會自動向CA進行註冊 電話顯示狀態
CA設定 (1/3) 模擬程式選擇的port 模擬程式所在之IP
CA設定 (2/3) 此為接收RGW訊息的位置 為CA所在的電腦IP CA所在的port
CA設定 (3/3) RGW所屬IP RGW所屬port CA所管理的電話端資料 電話端id
RGW設定(無Voice Support) 接收CA訊息的位置 可供使用者選擇訊息需透過哪一個位置(通常都設和RGW相同的Domain Name和不相衝的port) 顯示出此RGW下電話端點ID(endpointID)的範圍
RGW設定(有Voice Support) 接收CA訊息的位置 可供使用者選擇訊息需透過哪一個位置(通常都設和RGW相同的Domain Name和不相衝的port) 選擇此RGW所管的電話端點資料存放位置
電話鍵盤按鍵意義 此視窗顯示所傳送的指令 其意義為: 電話endpointID +指令 此為拿起電話(hd指令) 此為掛上電話(hu指令) 此為傳送指令按鍵 此為電話鍵盤(符號數字指令)
通話服務的開發(1/4) 實驗步驟二: 開發新服務 (話中插撥、隨身碼、熱線…) 決定開發的新服 務的通話流程 畫出 message flow 修改CA的finite state machine
開發環境 程式是以C語言所撰寫,開發者需備有Microsoft Visual Studio C++,或其他可編譯C語言的軟體。將casim.zip檔案解壓縮後存於電腦硬碟任一資料夾中,開啟通話代理人程式開發專案CASim.dsw檔案,選擇CASim.cpp後則可進行新服務的開發。 目前測試的結果用Visual Studio .NET 2003會有問題,所以最好使用Visual C++ 6.0.
通話服務的開發(2/4) MGCP正常的通話訊息流程 :
通話服務的開發(3/4) 基本通話有限狀態機 (由通話訊息流程決定)
通話服務的開發(4/4) 通話代理人 Call Agent 程式運作 (A),(B)構成 call agent simulator, (B)中mgcLoop會接收來自 (C)RGW 的MGCP Msg, 然後再由(A)應用層根據訊息,目前的通話狀態,還有caller及callee的元件狀態,呼叫對應的執行程式,然後回應Ack給對應的MGCP程序並決定caller,callee的下一狀態。我們主要更改的部分為(A)應用層,即CASim.cpp的部分檔案。
範例 隨身碼(Follow-me Service)
執行方法 將CASimd.exe 複製到Voip_v1所在的資料夾中,然後在simulator上就可看到所發展的成果。 Note: CASimd.exe是透過socket和 simulator的interface 做 communication. 所以simulator上的ip address一定要填正確。 How to Debug: CA在每個動作完成都會log至file, programmer也可將debug message output 至 file.
程式說明1 msgToUI.c : 負責讓CA和UI能夠傳遞message,這部份是已做好的不用管它。 msgToUI.h : finite state machine的statetype:這部份就是programmer需要新增的地方。 EndpoindData:對於每個user(telephone)所需紀錄的資料。 trace.h, trace.c:用來debug用,可用PRINT印到營幕並寫到檔案 tool.h, tool.c:完全用不到
程式說明2 CASim.h: StateType: stateType的字串,當加入一個新的state時也需把此字串加入 CASim.c: 整個CA的主程式,此次作業最主要要修改的就是processCallFlow()這個函數,根據不同的state收到不同的events要做不同的事。
作業要求與繳交方式 評分方式: 程式部份:80% 報告:20% 創新性及完整性:20% 繳交方式 mailto : voip_hw@voip.csie.ntu.edu.tw 信件標題 : 學號_姓名 附件 source code file 報告 內容必須說明你所開發的新服務為何,finite state machine, message flow …等 繳交期限 2004/06/01 PM6:00 Demo時間:2004/06/02 AM10:00~PM5:00,如有不行者請另外跟我約時間。