歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> PERL編程 >> 用Perl 語言寫freeswitch dialplan

用Perl 語言寫freeswitch dialplan

日期:2017/3/1 10:07:52   编辑:PERL編程

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. freeswitch::console_log("info", "Perl dialplan demo\n");
  5. my ($string) = @_;
  6. #print "\n\n".Dumper(\@_)."\n\n";
  7. my $id = $session->get_uuid();
  8. freeswitch::console_log("info", " uuid $id\n");
  9. #### set and get variable
  10. $session->setVariable("lidp_name", "lidp");
  11. my $name = $session->getVariable("lidp_name");
  12. freeswitch::console_log("info", " lidp_name = $name\n");
  13. $session->execute("playback", "/var/lib/asterisk/moh/macroform-cold_day.wav");
  14. $session->hangup();
  15. 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