2014-07-04 2 views
1

사용자로부터 DTMF를 가져 오려고합니다. 0 인 경우 다른 사람이 전화를 걸어 다른 사람에게 전화를 겁니다. 나는 다음과 같이 썼다. 그러나 그것은 부정확 한 입구를 직접 연주하고, 나의 전화를 끊는다. 이 문제에 대한 도움을 주시면 감사하겠습니다.DTMF는 PHP Agi에서 허용되지 않습니다.

$wheretorec = $agi->exec("AGI","googletts.agi,\"To speak to an operator press zero.\",en"); 
$whereto = $agi->get_data($wheretorec, 10000, 1); 
$dtmf = $whereto['result']; 

if (is_numeric($dtmf ['0'])) 
{ 
$agi->exec("AGI","googletts.agi,\"Your call is now being transferred\",en"); 
$agi->exec('transfer',"SIP/[email protected]:5080"); 
$agi->hangup(); 
} 
else 
{ 
$agi->exec("AGI","googletts.agi,\"Invalid entry. Please try again later.\",en"); 
$agi->hangup(); 
} 
} 
+0

이전에 별표를들은 적은 없었지만 (흥미로운 것 같습니다.)하지만 내 생각에 'if (is_numeric ($ dtmf ['0 ']))'올바르지 않습니다. '$ dtmf [ '0']'는 숫자로되어 있습니까? 왜 그걸 조사하고 있니? '$ dtmf [ '0']'의 값은 무엇입니까? 코드를 밟은 적이 있습니까? – Qix

+0

나는'$ whereto = $ agi-> get_data ($ wheretorec, 10000, 1); ' '$ dtmf = $ whereto ['result '];를 통해 이전에 입력 된 값이 0 즉 0과 일치하는지 확인하려고 노력 중이다. 그런 다음 내선 번호로 통화를 호 전환하거나 통화를 끊고 끊습니다. – user3761509

+0

'$ dtmf == 0' 또는'$ dtmf == '0'중 하나를 시도하십시오. 또한'$ dtmf'를 할당 한 후에'var_dump ($ dtmf)'를 시도해 보셨습니까? – Qix

답변

0

내가 '대신 새로운 것을 시도하는 경우 ...이 나를 위해 일했다 코드입니다 corefully phpagi 문서 및 예제

+0

당신이 제공 한 코드가 유효하지 않은 입력으로 이어지면 전화가 끊깁니다. – user3761509

+0

이 코드는 100 % 일했으며 a2billng.org 프로젝트의 모든 곳에서 사용되었습니다. PHP 디버그 기술을 향상시킬 필요가있는 것 같습니다. – arheops

0
$dtmfTemp = $agi->get_data("File_name_you_want_to_play", 6000, 1); 
$dtmf = $dtmfTemp['result']; 
if($dtmf=="0"){ 
//Do your stuff 
} 
else{ 
//Do your other stuff 
} 
+3

몇 가지 설명을 보는 것이 좋을 것 같습니다. – aliteralmind

0

을 읽어 보시기 바랍니다이

$dtmf = $whereto['result']; 

if ($dtmf=="0") 

처럼 되세요 침묵/1 '또는'삐 '다음 오류 메시지, 잘못된 항목을 제공합니다!

$press1 = $agi->get_data('silence/1',50000, 1); 
$press1dtmf = $press1['result'];