Asterisk AGI:如何获取或设置全局变量的值



我使用Asterisk 1.8与PHP的AGI脚本。

编辑:

我正在努力从AGI PHP脚本中设置和获取全局变量的值。我可以设置通道变量,但不能设置全局变量。使用PHPAGI库

尝试:

Set({$varname}={$value},g)
Set({$varname}="{$value}",g)
Set(GLOBAL({$varname})={$value})

这似乎根本不起作用,当从拨号计划中获取值时,它是空的。

是否有人在AGI脚本中设置和获取全局变量的工作示例?

我找到了一个解决方法来使它工作。

首先,全局变量不能在[globals]部分下的dial计划中声明。而且,似乎您无法从AGI脚本中设置全局变量。但是,您可以设置一个通道变量(本地到当前通道)。因此,要从AGI脚本设置全局变量,首先将值设置为通道变量,当从脚本返回到拨号计划时,检索通道变量的值并将其分配给全局变量。基本上,似乎只能从拨号计划中分配全局变量,而不能从AGI脚本中分配全局变量。

示例代码:

//in dial plan
exten => _XXXX,n,AGI(myagiscript.php)
exten => _XXXX,n,Set(GLOBAL(someGlobalVariable)=${myLocalVar})

// in myagiscript.php
$agi->set_variable("myLocalVar", "value");

关于AGI的Asterisk wiki信息对全局变量有不同的看法:…全局变量不会以这种方式传递给AGI脚本。你必须使用"get variable"AGI命令获取它们…

和另一部分:…GET VARIABLE:对全局变量不起作用。不能处理由模块生成的一些变量....

设置全局值可以执行:

EXEC SetGlobalVar <var_name>=<value>

为获得我的事情,get_variable应该工作,但有一个bug在Asterisk: https://issues.asterisk.org/view.php?id=7609

这个bug是在Asterisk 1.2.20,你用的是哪个版本的Asterisk ?

相关内容

  • 没有找到相关文章

最新更新