PHPAGI中的星号功能

  • 本文关键字:功能 PHPAGI asterisk
  • 更新时间 :
  • 英文 :


我想在PHPAGI中使用星号函数"IFTIME"。以下语法在Dialplan中正确运行,但我一直在努力使其在PHPAGI中工作。

exten => 1234,1,Set(foo=${IFTIME(16:00-21:00,*,*,*?true:false)})
exten => 1234,2,NoOp(${foo})

到目前为止,在PHPAGI,这就是我所做的

**我使用的是AGISPEEDY框架,它使用的是PHPAGI

$agi->agi_exec('Set','fo o=${IFTIME(*,*,*,*?true:false)}');
$result = $agi->get_variable('foo');
$agi->verbose($result);

------结果-------

Array(
    [code] => 200
    [result] => 1
    [data] => ${IFTIME(*,*,*,*?true:false)}
)

上面的命令将函数设置为字符串。我试着换

这个:$agi->agi_exec('Set','foo=${IFTIME(*,*,*,*?true:false)}');

至:$agi->set_variable('foo','${IFTIME(*,*,*,*?true:false)}');

但结果是一样的,它将${IFTIME(*,*,*,*?true:false)}保存为一个字符串。

如有任何关于如何运行类似PHPAGI的IFTIME的Asterisk函数的帮助,我们将不胜感激。

如果使用函数,则必须使用get_full_variable。

你正试图通过在火星上降落火箭飞船飞往月球,你所做的毫无意义。

您已经在PHP脚本中了,只需在PHP中模拟IFTIME的相同检查即可。因此,在您的情况下,我将用以下内容替换agi_exec命令:

    $current_timestamp = time();
    $current_time = (int)date("Hi", $current_timestamp);
    if (($current_time > 1600) && ($current_time < 2100)) {
       .. Do some cool PHP here ..
    }

这个片段没有调试,所以它可能不会像你想象的那样工作,但你已经明白了。

PHPAGI和AGI通常都是很棒的工具——如果使用得当。您正试图利用Dialplan函数/应用程序来做一些通常在PHP中会做的事情。

相关内容

  • 没有找到相关文章