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/perl
- use 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
完。
FreeSWITCH 錄制視頻並播放 http://www.linuxidc.com/Linux/2012-08/68043.htm
FreeSWITCH 音視頻編碼支持 http://www.linuxidc.com/Linux/2012-08/68045.htm
FreeSWITCH 的詳細介紹:請點這裡
FreeSWITCH 的下載地址:請點這裡