/ / Asterisk AGI: ¿Cómo obtener o establecer el valor de una variable global? - php, asterisco, telefonía, agi

Asterisk AGI: ¿Cómo obtener o establecer el valor de una variable global? - php, asterisco, telefonía, agi

Estoy usando Asterisk 1.8 con PHP para secuencias de comandos AGI.

EDITAR:

Estoy luchando para establecer y obtener los valores de las variables globales desde un script AGI PHP. Puedo configurar variables de canal pero no variables globales. Uso de PHPAGI lib.

Intentó:

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

Eso no parece funcionar en absoluto, cuando se obtiene el valor dentro del plan de marcado, está vacío.

¿Alguien tiene un ejemplo práctico de configuración y obtención de variables globales en un script AGI?

Respuestas

2 para la respuesta № 1

He encontrado una solución para que funcione.

Primero, la variable global no debe ser declaradaen el plan de marcado en la sección [globales]. Y parece que no se puede establecer una variable global desde un script AGI. Sin embargo, puede establecer una variable de canal (local al canal actual). Entonces, para establecer una variable global desde un script AGI, primero establece el valor en una variable de canal y cuando regresa del script al plan de marcado, recupera el valor de la variable de canal y lo asigna a una variable global. Básicamente, parece que solo puede asignar variables globales desde dentro del plan de marcado, no desde un script AGI.

Código de muestra:

//in dial plan

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


// in myagiscript.php

$agi->set_variable("myLocalVar", "value");

0 para la respuesta № 2

Asterisco información wiki sobre AGI dice cosas diferentes acerca de las variables globales: ... Las variables globales no se pasan al script AGI de esta manera. Debe obtenerlos usando el comando AGI "obtener variable" ...

y en otra parte: ... GET VARIABLE: No funciona con variables globales. No funciona con algunas variables que son generadas por módulos ....

Para establecer el valor global puede ejecutar:

EXEC SetGlobalVar <var_name>=<value>

Por conseguir eso creo get_variable Debería funcionar pero había un error en Asterisk: https://issues.asterisk.org/view.php?id=7609

Este error estaba en Asterisk 1.2.20, ¿qué versión de Asterisk usas?