2011-09-29 4 views
2

AGI 스크립팅을 위해 PHP와 함께 별표 1.8을 사용하고 있습니다.Asterisk AGI : 전역 변수의 값을 얻거나 설정하는 방법?

편집 : 나는 설정으로 어려움을 겪고과 AGI PHP 스크립트 내에서 전역 변수의 값을 얻을 수있어

. 채널 변수는 설정할 수 있지만 전역 변수는 설정할 수 없습니다. PHPAGI lib 사용.

는 시도 : 다이얼 플랜 내에서 값을 가져올 때 전혀 작동하지 않는 것

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

, 그것은 비어 있습니다.

누구나 AGI 스크립트에서 전역 변수를 설정하고 가져 오는 작업 예제가 있습니까?

+0

나는 별표와 경험이 없지만 PHP를 사용하면 ['$ GLOBALS'] (http://us2.php.net/manual/en/reserved에서 전역 변수에 액세스 할 수 있습니다 .variables.globals.php) –

+0

아니요, 저는 별표 (Asterisk) 다이얼 플랜 글로벌 변수를 말하고 있습니다.이 변수는 별표 (Asterisk) 게이트웨이 인터페이스 (AGI)를 사용하여 외부 프로그램이나 스크립트를 통해 설정할 수 있습니다. –

답변

2

해결 방법을 찾았습니다.

먼저 글로벌 변수는 다이얼 플랜에서 [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"); 
0

별표 wiki info about AGI 말한다 글로벌 변수에 대한 여러 가지 : ... 글로벌 변수는이 방식으로 AGI 스크립트에 전달되지 않습니다. "변수 가져 오기"AGI 명령을 사용하여 변수를 가져와야합니다 ...

및 기타 부분 : ... GET VARIABLE : 전역 변수와 함께 작동하지 않습니다. 글로벌 값을 설정하려면 .... 모듈에 의해 생성되는 몇 가지 변수

을 작동하지 않습니다 당신은 실행할 수 있습니다

EXEC SetGlobalVar <var_name>=<value> 

get_variable가 작동해야하지만 버그가 별표에 있던 나는 일을 얻기 위해 : https://issues.asterisk.org/view.php?id=7609

이 버그는 Asterisk 1.2.20에 있었는데, 어떤 버전의 Asterisk를 사용합니까?

+0

버전 1.8을 사용하고 있습니다. 아쉽게도 SetGlobalVar()는 더 이상 해당 버전에 없습니다. –

관련 문제