這篇博文主要講我本身半年前第一次接觸Opensips時,對腳本中route塊和SIP消息相關性的疑惑,主要講route,onreply_route,failure_route三個類型。其餘的能夠直接參考官網的說明:編程
http://www.opensips.org/Documentation/Script-Routes-2-1編程語言
概況的講,opensips.cfg配置文件相似簡單的編程語言,能夠認爲route塊分爲主入口函數,設置的根據條件--SIP事務過程--的回調函數,執行的塊函數。函數
SIP消息分爲: SIP requests/SIP responses,其中SIP responses分爲正常消息和錯誤消息。根據SIP消息的事務類型:事務
SIP請求---主入口函數--route塊ip
SIP回覆---回覆調用函數---onreply_route塊get
SIP錯誤回覆--設置的錯誤回調函數---failure_route塊回調函數
以下面:requests
當SIP消息如:INVITE消息過來時,opensips會執行進入這個函數,最後執行route(relay),相似C語言裏面的調用。it
其中route[relay]的實現io
其中: t_on_reply("handle_nat");和t_on_failure("missed_call");兩個語句分別設置了本次SIP事務的回調函數,SIP的回覆和錯誤回覆。這個是我最開始不能很好理解的地方。
兩個route塊的代碼以下,只作必定的參考。:
這兩個route塊能夠設置判斷條件,加上你本身的邏輯去處理。
寫在後面這是半年前要寫的文章,一直沒空去寫,不少細節都忘了。