基于Asterisk的网络传真

Asterisk是一个开源的IP PBX,既可以工作在传统PSTN网络上,也可以工作在IP网络上,因此,在Asterisk上实现传真,有两个方面的意思:
 
  通过Asterisk 实现传真,可以把它作为传真机的一个端,即一个虚拟的传真机;让这个传真机直接与PSTN内的其他传真机进行跨PSTN的端到端通信。实现传真的接收和发送,这种模式与FoIP无关,并没有在网络上传递传真信息。这种模式也就是CTI领域的传真服务器,也是目前使用最多的模式。传真软件为实现传真服务器功能,Asterisk 是集成SpanDSP 来实现,即在系统中安装SpanDSP软件--传真DSP软件。处理传真的DSP信号(调制/解调),另外,在Asterisk中集成app_rxfax和app_txfax两个应用程序。这样就可以在Asterisk的dialplan 中直接使用这两个程序。而这两个应用程序是依赖于SpanDSP来工作的。由于在Elastix或者trixbox中已经集成了相关的程序,用户可直接使用这些传真软件的传真功能。
 
  实现FoIP,即实现传真网关。由Asterisk实现FoIP的网关功能。从Asterisk1.4版本以后,Asterisk已经可以很好支持T.38协议。CallWeaver能可靠的支持T.38透传或者T.38终端。CallWeaver是Asterisk1.2版本的分支。同时,你也应该考虑Hylafax+ (或HylaFax ),这个软件不是Asterisk里面的,但是可以通过IAXModem连接到Asterisk。这也是一个有力的解决方案,可以通过PRI接收呼叫并转发到IAXModem并传真软件传真到本地。另外一个选择是Noojee Fax(又名AsterFax )。这个可以让您使用Asterisk来发送和接收传真。通常Noojee Fax将传真转换为一封电子邮件或类似的形式(电子邮件到传真)。
 
  使用网络传真,有如下的优点:
 
无需购买任何硬件如传统的传真机,modem,无需安装任何其他传真软件,设置好Asterisk就可使用。
 
虚拟传真号码无论公司怎么搬迁,号码永远不变无需迁移。
 
一拨就通,自动接收,自动保存,多点接收,自动保存。
 
传真无纸化,节省大量传真纸张、降低办公成本。
 
传真数码化,接收的传真内容以数码电子文件格式保存,便于日后检索和长期保存,并方便邮件发送。
 
传真网络化,移动办公,无论您在何时何地,只要上网便可阅读新收到的传真内容,把握商机,高效远程办公。
 
  使用OpenVox 的模拟语音板卡或者数字中继语音卡,可以完美地和Asterisk结合,并实现网络传真传真软件。例如,使用一张模拟语音板卡,将FXS模块配置好分机号码,并将该FXS接到传真机,就可将传真路由至模拟语音板卡的FXS上,实现传真的收发。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Asterisk的满意度调查功能的示例代码。该代码使用Dialplan和AGI脚本来实现满意度调查,并将结果保存到CSV文件中。您需要将以下代码添加到您的Asterisk配置文件中,并根据需要进行修改。 1. Dialplan 在您的Asterisk配置文件(如extensions.conf)中,添加以下Dialplan代码: ``` [mysurvey] exten => s,1,Answer() same => n,Playback(welcome) same => n,AGI(survey.agi) same => n,Playback(thankyou) same => n,Hangup() ``` 该Dialplan定义了一个名为“mysurvey”的上下文,当有电话呼入时,会播放欢迎语音,启动AGI脚本进行满意度调查,并在调查结束后播放感谢语音并挂断电话。 2. AGI脚本 在您的Asterisk配置文件(如extensions.conf)所在的目录中,创建名为“survey.agi”的AGI脚本文件,并添加以下代码: ``` #!/usr/bin/perl use Asterisk::AGI; use Text::CSV; my $AGI = new Asterisk::AGI; my $callerid = $AGI->get_variable('CALLERID(num)'); my $filename = "/var/spool/asterisk/surveys/${callerid}.csv"; my $csv = Text::CSV->new({binary => 1, eol => $/}) or die "Cannot use CSV: " . Text::CSV->error_diag(); my $questions = [ {id => 'q1', text => 'How satisfied are you with our service?'}, {id => 'q2', text => 'How likely are you to recommend us to others?'}, {id => 'q3', text => 'Do you have any suggestions for improvement?'}, ]; my $answers = {}; foreach my $question (@$questions) { my $answer = $AGI->exec('Playback', $question->{text}); $answers->{$question->{id}} = $answer; } open(my $fh, '>>', $filename) or die "Cannot open $filename: $!"; $csv->print($fh, [$callerid, $answers->{q1}, $answers->{q2}, $answers->{q3}]) or die "Cannot write to $filename: $!"; close($fh); ``` 该AGI脚本定义了一个名为“survey.agi”的AGI脚本,用于执行满意度调查并将结果保存到CSV文件中。该脚本首先获取来电号码,并根据号码生成CSV文件名。 然后,脚本定义了一个问题数组,用于存储要问的问题和问题ID。在调查过程中,脚本会遍历问题数组,并使用AGI命令“Playback”播放每个问题的语音,并等待来电者的回答。回答将存储在一个答案哈希表中。 最后,脚本将来电号码和答案存储到CSV文件中。如果文件不存在,则会创建一个新文件。如果文件已存在,则会在文件末尾添加新行。 3. 配置文件 在您的Asterisk配置文件中,添加以下内容以启用满意度调查功能: ``` [general] autofallthrough=yes [surveys] exten => _X.,1,Goto(mysurvey,s,1) ``` 该配置定义了一个名为“surveys”的上下文,用于匹配所有满意度调查呼叫。当有电话呼入时,该配置会将呼叫路由到之前定义的Dialplan“mysurvey”中。 需要注意的是,您需要根据您的Asterisk系统和需要进行适当的修改。例如,您可能需要更改CSV文件的路径和命名方式,或者修改问题数组中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值