歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> PERL編程

用Perl 語言寫freeswitch dialplan

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.

  1. <include> 
  2. <extension name="perl_demo"> 
  3.       <condition field="destination_number" expression="^4001$"> 
  4.           <action application="answer"/> 
  5.           <action application="perl" data="demo_perl.pl" /> 
  6.       </condition> 
  7. </extension> 
  8. </include> 

app perl 為mod_perl提供的api,執行 demo_perl.pl腳本

下面看此文件內容:

  1. #!/usr/bin/perl 
  2. use strict; 
  3. our $session; 
  4.  
  5.  
  6. freeswitch::console_log("info", "Perl dialplan demo\n"); 
  7.  
  8. my ($string) = @_; 
  9.  
  10. #print "\n\n".Dumper(\@_)."\n\n"; 
  11.  
  12. my $id = $session->get_uuid(); 
  13.  
  14. freeswitch::console_log("info", " uuid $id\n"); 
  15.  
  16.  
  17. #### set and get variable 
  18.  
  19. $session->setVariable("lidp_name", "lidp"); 
  20. my $name = $session->getVariable("lidp_name"); 
  21. freeswitch::console_log("info", " lidp_name = $name\n"); 
  22.  
  23. $session->execute("playback", "/var/lib/asterisk/moh/macroform-cold_day.wav"); 
  24.  
  25. $session->hangup(); 
  26.  
  27.  
  28. 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 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved