python3使用pjsua進行呼叫測試

来源:https://www.cnblogs.com/MikeZhang/archive/2023/06/23/pyPjsuaExample20230623.html
-Advertisement-
Play Games

環境: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.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 獲取。 

微信公眾號:

  • E-Mail : [email protected]
  • 轉載請註明出處,謝謝!
    您的分享是我們最大的動力!

    -Advertisement-
    Play Games
    更多相關文章
    • 我們通過代碼入手,層層加碼,直觀感受SLF4J列印日誌,並跟蹤代碼追本溯源。主要瞭解,SLF4J是如何作為門面和其他日誌框架進行解耦。 ...
    • # Rust語言 - 介面設計的建議之受約束(Constrained) - [Rust API 指南 GitHub](https://github.com/rust-lang/api-guidelines):https://github.com/rust-lang/api-guidelines - ...
    • 經過前幾篇文章的講解,初步瞭解ASP.NET Core MVC項目創建,啟動運行,以及命名約定,創建控制器,視圖,模型,接收參數,傳遞數據ViewData,ViewBag,路由,頁面佈局,wwwroot和客戶端庫,Razor語法,EnityFrameworkCore與資料庫,HttpContext,... ...
    • 好久沒寫博客了,今天給大家分享一個圖片轉PDF的相關操作,也算是一次總結吧。 首先需要準備動態庫itextsharp.dll,這個dll去網上下載,都可以下載到,C#對PDF的操作都是基於這個類庫來實現的。話不多說,直接上代碼。 /// <summary> /// 導出PDF /// </summa ...
    • # 個人博客-推薦文章載入優化 # 前言 隨著博客文章越來越多,那麼推薦的文章也是越來越多,之前推薦文章是只推薦8篇,但是我感覺有點少,然後也是決定加一個載入按鈕,也是類似與分頁的效果,點擊按鈕可以繼續載入8篇文章。 # 我的實現思路 同樣使用`X.PagedList`組件去實現分頁效果,通過Nug ...
    • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
    • ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230622230643001-398516589.png) # 1. 停電事故後電力恢復的方式 ## 1.1. 停電後常見的情形是,送電幾秒鐘後又再次斷電 ## 1.2. 數 ...
    • ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230621151546278-1606324122.png) # 1. 自黑式攻擊 ## 1.1. 自黑只會偶爾成為人類的美德 ## 1.2. 對系統來說,絕對不會推崇自黑 ...
    一周排行
      -Advertisement-
      Play Games
    • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
    • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
    • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
    • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
    • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
    • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
    • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
    • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
    • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
    • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...