環境:CentOS 7.6_x64 Python版本 :3.9.12 pjsip版本:2.13 之前寫過一篇CentOS7環境編譯python3.9版本pjsua的文章: https://www.cnblogs.com/MikeZhang/p/centos7py39pjsua20230608.htm ...
環境:CentOS 7.6_x64 Python版本 :3.9.12 pjsip版本:2.13 之前寫過一篇CentOS7環境編譯python3.9版本pjsua的文章: https://www.cnblogs.com/MikeZhang/p/centos7py39pjsua20230608.html 在上篇文章中我著重介紹了怎樣編譯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具體可參考如下文檔: https://docs.pjsip.org/en/latest/api/generated/pjsip/group/group__PJSUA__LIB__MEDIA.html#group__PJSUA__LIB__MEDIA
3、自動播放聲音文件
1)通過 create_player 函數創建playerId; 2)通過player_get_slot函數獲取slot; 3)通過call對象獲取呼叫的slot; 4)然後conf_connect進行連接兩個slot連接,進而實現音頻播放。 具體參考這裡: https://docs.pjsip.org/en/latest/api/generated/pjsip/group/group__PJSUA__LIB__MEDIA.html#group__PJSUA__LIB__MEDIA
二、具體實現
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.py3)使用軟電話註冊分機; 4)使用軟電話撥打uac分機; 預期效果: 軟電話可聽到uac分機播放的音頻。
運行效果視頻獲取途徑:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 2023062201 獲取。2、uas測試效果
1)啟動FreeSWITCH; 2)編寫撥號方案; 3)運行uas腳本啟動服務;source /root/py39env/env.sh /root/py39env/bin/python3.9 uas.py4)使用軟電話註冊分機; 5)使用軟電話撥打接入號驗證; 預期效果: 軟電話可聽到uas播放的音頻。
運行效果視頻獲取途徑:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 2023062202 獲取。