我可以让呼叫运行AGI,但是当我的extensions.conf脚本运行它的循环时,我不能继续运行Perl拨号计划。
因此,我需要离开,以运行这个AGI在后台时,呼叫是拨号。
我的AGI中有一部分搞砸了:
{
my $linestatus = $agi->channel_status();
###THIS PART NEEDS TO LOOP UNTIL $linestatus == 6
###But It is also stopping the number from dialling.
do{
}
until($linestatus == 6);
my $query = $collection->insert({
caller => $num,
callername => $name,
linestatus => $linestatus,
extension => $ext,
call_start => $time }, {safe => 1});
$agi->verbose("ANSWERED\n", 1);
}我的extensions.conf拨号方案:
exten => _08.,1,AGI(bTel.agi)
exten => _08.,n,Dial(SIP/61${EXTEN:1}@SIPINTERNAL,,tTor)
exten => _08.,n,Hungup发布于 2013-08-03 01:20:28
如果
do{
}
until($linestatus == 6);是代码的逐字副本,那么如果$linestatus以错误的状态开始,那么循环就不能终止,因为它的值在循环中不会改变。
取而代之的是使用类似于
my $linestatus;
do {
$linestatus = $agi->channel_status();
sleep 1; # or some other delay
} until (defined $linestatus && $linestatus == 6);https://stackoverflow.com/questions/18022194
复制相似问题