python3使用pjsua進行呼叫測試

環境:CentOS 7.6_x64   
Python版本 :3.9.12
pjsip版本:2.13
 
之前寫過一篇CentOS7環境編譯python3.9版本pjsua的文章:
在上篇文章中我着重介紹了怎樣編譯python3.9版本的pjsua庫,並演示瞭如何使用,今天記錄下CentOS7環境下python3.9使用pjsua作爲uas或uac,對接FreeSWITCH進行呼叫測試的過程,並提供示例代碼及相關資源下載,可從如下渠道獲取:
關注微信公衆號(聊聊博文,文末可掃碼)後回覆 20230622 獲取。 

一、關鍵點描述

 1、音頻設備設置

CentOS7虛擬機沒有音頻設備,可以通過set_null_snd_dev來避免pjsua模塊報錯。

2、編碼設置

可以通過set_codec_priority函數來設置編碼的優先級,避免編碼問題導致呼叫失敗。
pjsua支持的編碼列表如下:
speex/8000/1
speex/32000/1
iLBC/8000/1
GSM/8000/1
PCMU/8000/1
PCMA/8000/1
G722/16000/1
opus/48000/2
G729/8000/1
L16/44100/1
L16/44100/2
具體可參考如下文檔:

3、自動播放聲音文件

1)通過 create_player 函數創建playerId;
2)通過player_get_slot函數獲取slot;
3)通過call對象獲取呼叫的slot;
4)然後conf_connect進行連接兩個slot連接,進而實現音頻播放。
 
具體參考這裏:

 

二、具體實現

 1、作爲uac進行測試

需要作爲分機註冊到FreeSWITCH,示例如下:
acc = lib.create_account(pj.AccountConfig("192.168.137.32:5060", "1012", "0000"))

代碼如下:

 完整代碼獲取途徑:關注微信公衆號(聊聊博文,文末可掃碼)後回覆 20230622 獲取。 

2、作爲uas進行測試

1)編寫UAS腳本
需要指定sip服務端口,示例如下:
tp= lib.create_transport(pj.TransportType.UDP,pj.TransportConfig(55081))
lib.start()

代碼如下:

 完整代碼獲取途徑:關注微信公衆號(聊聊博文,文末可掃碼)後回覆 20230622 獲取。 

2)編寫撥號方案
<extension name="pjsua_uas_test">
    <condition field="destination_number" expression="^123$">
         <action application="set" data="hangup_after_bridge=true"/>
         <action application="bridge" data="sofia/external/[email protected]:55081"/>
    </condition>
</extension>

三、運行效果

1、uac測試效果

1)啓動FreeSWITCH;
2)運行uac腳本註冊分機;
source /root/py39env/env.sh
/root/py39env/bin/python3.9 uac.py
3)使用軟電話註冊分機;
4)使用軟電話撥打uac分機; 
預期效果:
軟電話可聽到uac分機播放的音頻。

 運行效果視頻獲取途徑:

關注微信公衆號(聊聊博文,文末可掃碼)後回覆 2023062201 獲取。 

2、uas測試效果

1)啓動FreeSWITCH;
2)編寫撥號方案;
3)運行uas腳本啓動服務;
source /root/py39env/env.sh
/root/py39env/bin/python3.9 uas.py
4)使用軟電話註冊分機;
5)使用軟電話撥打接入號驗證;
預期效果:
軟電話可聽到uas播放的音頻。

運行效果視頻獲取途徑:

關注微信公衆號(聊聊博文,文末可掃碼)後回覆 2023062202 獲取。 

四、資源獲取

本文涉及源碼和文件,可以從如下途徑獲取:
關注微信公衆號(聊聊博文,文末可掃碼)後回覆 20230622 獲取。 

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