我建了一個 Freeswitch 核心研究 交流群, 45211986, 歡迎加入, 另外,提供基於SIP的通訊伺服器及用戶端解決方案, 承接 sip/ims 視頻用戶端開發,支援接入sip軟交換,ims核心網,支援 語音,視頻,即時通訊功能,視頻格式支援 h263,h264,mpeg4
軟編軟解,提供硬體編解碼介面對接,提供伺服器,有興趣請聯絡我。
freeswtich支援 lua, perl, php等指令碼語言編寫dialplan, 類似asterisk 裡面的agi,但freeswitch 更輕量級,其xml格式dialplan 手寫確實麻煩,mod_perl實現了用
perl寫dialplan的介面,也就是說我們可以用perl調用freeswich提供的api編寫自己的商務邏輯,尤其是當你想
在dialplan裡面引入業務相關的,比如查詢資料庫,與第三方業務平台互動資料(json,xml格式等),用perl是個不錯的選擇。
方法:
1. 在xml dialplan裡調用perl 指令碼
建立檔案 dialplan/default/demo_perl.pl
內容:
被叫號是4001時執行此流程,功能是給使用者播放一個語音檔案,然後驗證設定並擷取通道變數api.
<include><extension name="perl_demo"> <condition field="destination_number" expression="^4001$"> <action application="answer"/> <action application="perl" data="demo_perl.pl" /> </condition></extension></include>
app perl 為mod_perl提供的api,執行 demo_perl.pl指令碼
下面看此檔案內容:
#!/usr/bin/perluse strict;our $session;freeswitch::console_log("info", "Perl dialplan demo\n");my ($string) = @_;#print "\n\n".Dumper(\@_)."\n\n";my $id = $session->get_uuid();freeswitch::console_log("info", " uuid $id\n");#### set and get variable$session->setVariable("lidp_name", "lidp");my $name = $session->getVariable("lidp_name");freeswitch::console_log("info", " lidp_name = $name\n");$session->execute("playback", "/var/lib/asterisk/moh/macroform-cold_day.wav");$session->hangup();return 1;
如果想知道 mod_perl提供了那些函數,可以用這個命令列出來:
grep -o -P "^(\*[^=]+|############# Class.+)" freeswitch.pm
完。。。。