freeswitch 之ESL開發

 一般來說,其他客戶端都是通過ESL與fs進行連接的,連接方式分爲內聯:inbond 以及外聯outbond 2種方式。

Inbound內聯:簡單說就是客戶端主動通過socket的連接方式向FS進行連接,開啓了一個“通道”,通過這個通道客戶端不僅可以訂閱監聽一些時間,也可以通過這個通道進行命令的發送。fs_cli 其實就是一個fs的客戶端。

Outbond外聯:外聯是FS主動朝外發送連接請求,每一個通話進入在撥號計劃設置後都可以進行外聯,這個外連接的存活週期就是這通通話的session存活週期,當然有時候FS狀態推送慢,session掛斷了,外聯通道還沒監聽到這個事件,但是fs中有預留一個api進行這個的控制:linger,linger可以告訴freeswitch當一個通道掛機時不要關閉socket連接,直到收取相關通道的最後一個事件。這樣就可以讓我們去處理很多依賴狀態的事件,比如狀態推送,如果我們不是特別需要的話,就可以不增加這個參數。

在API開發中,有2種命令發送方式朝FS發送命令。一種是api,一種是bgapi,兩種api的區別就是一個是同步發送命令,一個是異步發送命令。使用api發送命令,是一個阻塞的狀態,無論在fs_cli 還是在 其他工程中,使用這個命令進行發送,在執行成功前都收不到任何消息,多條命令也會被阻塞(阻塞模式),只會按順序執行,所以我們再開發以及使用中都使用bgapi。當執行bgapi的時候,後臺會產生一個Job-UUID,我們也可以通過訂閱BACKGROUND_JOB來獲取回調結果。



 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章