首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asterisk Perl AGI不会继续

Asterisk Perl AGI不会继续
EN

Stack Overflow用户
提问于 2013-08-03 00:47:25
回答 1查看 556关注 0票数 0

我可以让呼叫运行AGI,但是当我的extensions.conf脚本运行它的循环时,我不能继续运行Perl拨号计划。

因此,我需要离开,以运行这个AGI在后台时,呼叫是拨号。

我的AGI中有一部分搞砸了:

代码语言:javascript
复制
{
    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拨号方案:

代码语言:javascript
复制
exten => _08.,1,AGI(bTel.agi)
exten => _08.,n,Dial(SIP/61${EXTEN:1}@SIPINTERNAL,,tTor)
exten => _08.,n,Hungup
EN

回答 1

Stack Overflow用户

发布于 2013-08-03 01:20:28

如果

代码语言:javascript
复制
do{
}
until($linestatus == 6);

是代码的逐字副本,那么如果$linestatus以错误的状态开始,那么循环就不能终止,因为它的值在循环中不会改变。

取而代之的是使用类似于

代码语言:javascript
复制
my $linestatus;
do {
    $linestatus = $agi->channel_status();
    sleep 1;  # or some other delay
} until (defined $linestatus && $linestatus == 6);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18022194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档