2016-08-19 13 views
0

テスト用にAsteriskのAclベースのclick2call拡張機能をセットアップしましたが、番号を送信すると何もしません。Asterisk AMIのclick2callの動作に問題があります

私がhttp://10.8.0.2/amiscript.php?phone=5555555555&exten=910をブラウザに挿入すると、すぐにPlease enter a number to dial.が返されます。数字を正しく解釈しているようではありません。延長へ

リンク:http://bitree.ru/click2call4chrome_en.html

私は明らかに、PHPスクリプトの例を使用しています。そして、それに基づいて私にエラーを返すことに基づいて、私はすべてが私のWebサーバーの終わりで良いと思う。スクリプトは次のとおりです。

<? if (!empty($_REQUEST['phone']) && !empty($_REQUEST['exten'] )) 
{ 
     $num = $_REQUEST['phone']; 
     $ext = $_REQUEST['exten']; 
     $num = preg_replace("/^\+7/", "8", $num); 
     $num = preg_replace("/\D/", "", $num); 

     if (! empty($num)) 
     { 
       echo "Dialing $num\r\n"; 

       $timeout = 10; 
       $asterisk_ip = "127.0.0.1"; 

       $socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout); 
       fputs($socket, "Action: Login\r\n"); 
       fputs($socket, "UserName: bitree\r\n"); 
       fputs($socket, "Secret: bitree_secret\r\n\r\n"); 

       $wrets=fgets($socket,128); 

       echo $wrets; 

       fputs($socket, "Action: Originate\r\n"); 
       fputs($socket, "Channel: Local/[email protected]\r\n"); 
       fputs($socket, "Exten: $num\r\n"); 
       fputs($socket, "Context: from-internal\r\n"); 
       fputs($socket, "Priority: 1\r\n"); 
       fputs($socket, "Async: yes\r\n"); 
       fputs($socket, "WaitTime: 15\r\n"); 
       fputs($socket, "Callerid: $num\r\n\r\n"); 

       $wrets=fgets($socket,128); 
       echo $wrets; 
     } 
     else 
     { 
       echo "Unable to determine number from (" . $_REQUEST['phone'] . ")\r\n"; 
     } 
} 
else 
{?>Please enter a number to dial. 
<?}?> 

ご意見はありますか?

+0

のようなものは、あなたが受けているかを確認するために 'のvar_dump($ _ REQUEST)のような任意の基本的なデバッグを、'なさ? 「入力してください」という唯一の方法は、これらの2つのフィールドが$ _REQUESTに存在しない場合です。 –

答えて

0

まず、PHPではAMIプロトコル(フル)の実現が1つ以上あります。

たとえば、phpagi/phpami。

これはすでに安定していて問題なく動作しています。

また、あなたが得る変数の出力をお勧めします。最も簡単な方法は、PHPコードの開始時に追加され

print_r($_REQUEST); 
+0

私はこれをコードにポップし、戻ってくる変数は見えません。それでも同じ出力。 – amzt