Я использую Asterisk 1.8 с PHP для скриптов AGI.
РЕДАКТИРОВАТЬ:
Я борюсь с настройкой и получением значений глобальных переменных из скрипта AGI PHP. Я могу установить переменные канала, но не глобальные переменные. Использование PHPAGI lib.
Пытался:
Set({$varname}={$value},g) Set({$varname}=\"{$value}\",g) Set(GLOBAL({$varname})={$value})
Похоже, что это не работает, когда вы получаете стоимость из абонентской группы, она пуста.
У кого-нибудь есть рабочий пример установки и получения глобальных переменных в сценарии AGI?
Я нашел обходное решение, чтобы заставить его работать.
Во-первых, глобальная переменная не должна быть объявлена в абонентской группе в разделе [globals]. И, похоже, вы не можете установить глобальную переменную из сценария 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");
Информация о вики Asterisk об AGI говорит о глобальных переменных: … Глобальные переменные не передаются сценарию AGI таким образом. Вы должны получить их, используя команду «получить переменную» AGI …
а в другой части: … GET VARIABLE: не работает с глобальными переменными. Не работает с некоторыми переменными, которые генерируются модулями ….
Для установки глобального значения вы можете выполнить:
EXEC SetGlobalVar <var_name>=<value>
Для получения информации о том, что get_variable
должен работать, но в Asterisk произошла ошибка: https://issues.asterisk.org/view.php?id=7609
Эта ошибка была в Asterisk 1.2.20, какую версию Asterisk вы используете?