2016-12-15 11 views
0

수신 전화가 실행 스크립트에 응답 할 때 간단한 AGI 스크립트가 있습니다. 하지만 작동하지 않습니다. 스크립트를 올바르게 실행하려면 어떻게해야합니까?별표 표시가 작동하지 않습니다.

내 영어로는 유감입니다.

여기에 코드입니다 :

extensions_additional.conf

[macro-auto-blkvm] 

include => macro-auto-blkvm-custom 

exten => s,1,Set(__MACRO_RESULT=)  
exten => s,n,DBDel(${BLKVM_OVERRIDE}) 

exten => s,n,AGI(call-answered.agi,${CALLERID(ANI)},${CHANNEL}) 

호 answered.php :

#!/usr/bin/php -q 
<?php 
include("phpagi.php"); 
$agi = new AGI(); 
$agi->verbose("------------------------------------------"); 
$ani = $agi->request['agi_callerid']; 
$agi->noop("My CalleID: <<<<<<<=".$ani); 

$user = 'root'; 
$pass = 'eLaStIx.2oo7'; 
$db = new PDO('mysql:host=localhost;dbname=call', $user, $pass); 

$query = $db->prepare("INSERT INTO deneme SET 
gsm = ?, 
agent = ?"); 
$insert = $query->execute(array("123123", "213123")); 

콘솔 출력 :

-- SIP/103-0000000e answered Local/[email protected],2 
-- Executing [[email protected]:1] Set("SIP/103-0000000e", "__MACRO_RESULT=") in new stack 
-- Executing [[email protected]:2] Set("SIP/103-0000000e", "CFIGNORE=") in new stack 
-- Executing [[email protected]:3] Set("SIP/103-0000000e", "MASTER_CHANNEL(CFIGNORE)=") in new stack 
-- Executing [[email protected]:4] Set("SIP/103-0000000e", "FORWARD_CONTEXT=from-internal") in new stack 
-- Executing [[email protected]:5] Set("SIP/103-0000000e", "MASTER_CHANNEL(FORWARD_CONTEXT)=from-internal") in new stack 
-- Executing [[email protected]:6] Macro("SIP/103-0000000e", "blkvm-clr|") in new stack 
-- Executing [[email protected]:7] AGI("SIP/103-0000000e", "call-answered.agi|*******|SIP/103-0000000e") in new stack 
-- Launched AGI Script /var/lib/asterisk/agi-bin/call-answered.agi 
AGI Tx >> agi_request: call-answered.agi 
AGI Tx >> agi_channel: SIP/103-0000000e 
AGI Tx >> agi_language: en 
AGI Tx >> agi_type: SIP 
AGI Tx >> agi_uniqueid: 1481798039.22 
AGI Tx >> agi_callerid: 103 
AGI Tx >> agi_calleridname: unknown 
AGI Tx >> agi_callingpres: 0 
AGI Tx >> agi_callingani2: 0 
AGI Tx >> agi_callington: 0 
AGI Tx >> agi_callingtns: 0 
AGI Tx >> agi_dnid: unknown 
AGI Tx >> agi_rdnis: unknown 
AGI Tx >> agi_context: macro-auto-blkvm 
AGI Tx >> agi_extension: s 
AGI Tx >> agi_priority: 7 
AGI Tx >> agi_enhanced: 0.0 
AGI Tx >> agi_accountcode: 
AGI Tx >> 
-- AGI Script call-answered.agi completed, returning 0 
-- Executing [[email protected]:8] ExecIf("SIP/103-0000000e", "0?Set(MASTER_CHANNEL(CONNECTEDLINE(num))=103)") in new stack 
== Spawn extension (macro-auto-blkvm, s, 8) exited non-zero on 'SIP/103-0000000e' in macro 'auto-blkvm' 
-- Local/[email protected],1 answered SIP/103-0000000d 
-- Stopped music on hold on SIP/**-0000000d 

감사합니다.

+0

'extensions_additional.conf'를 편집하는 것은 나쁜 생각입니다. PBX가 다시로드 될 때마다 덮어 씁니다. 이 PHP 파일은 어디에 저장되어 있으며, 어떤 권한이 있습니까? – miken32

답변

-1

즉, 스크립트에 구문 오류 또는 사용 권한 문제가 있음을 의미합니다. 경로에 스크립트가 없을 수도 있습니다.

즉 전혀 응답하지 않습니다.

1

파일 이름을 call-answered.php으로 지정 하시겠습니까? 다이얼 플랜에서 call-answered.agi으로 참조하면 일관성이 없습니다. 다이얼 플랜을 call-answered.php으로 변경해보십시오.

.php 파일에 읽기 및 실행 파일 권한이 있는지 확인하십시오. 실행하려면 chmod 755 /var/lib/asterisk/agi-bin/*.php을 실행하십시오.

또한 올바른 디렉토리 (기본값은/var/lib/asterisk/agi-bin)에 있는지 확인하거나 다이얼 플랜의 전체 경로를 지정하십시오.

exten => s,n,AGI('/var/lib/asterisk/agi-bin/call-answered.php',${CALLERID(ANI)},${CHANNEL}) 

당신은 Official AGI Docs에 더 많은 도움을 찾을 수 있습니다, 또는 Voip Info (unofficial) page에서 : 안전을 위해 따옴표로 던져.

편집 : 는 또한 실행하여 PHP의 CLI에서 직접 스크립트를 실행 시도 할 수 있습니다 :

php /var/lib/asterisk/agi-bin/call-answered.php 

를 반복해서 눌러 입력 별표와의 통신을 시뮬레이션 할 수 있습니다. 권한 또는 스크립트 오류가있는 경우이 cli 세션의 오류를 보게됩니다. 그래도 문제가 해결되지 않으면 php의 error_log() 명령을 사용하여 유용한 정보를 로그에 기록하여 스크립트가 전혀 실행 중인지 확인할 수 있습니다.