]> Untitled Git - dev/commitdiff
AGI исправлены мелкие ошибки
authorsleepy <sleepy@vvsu.ru>
Tue, 28 Apr 2020 09:39:30 +0000 (19:39 +1000)
committersleepy <sleepy@vvsu.ru>
Tue, 28 Apr 2020 09:39:30 +0000 (19:39 +1000)
astapilib/agi.php
check_code.php

index 98ecfbd4ecaae4904ef84a467ea6c4a3f61488ba..58e80dea13baef46a3dc32b2009172ca40ea360b 100644 (file)
@@ -249,7 +249,7 @@ trait funcAGI
     }\r
         \r
     //Stream file, prompt for DTMF, with timeout.\r
-    public function GetOption ($file, $escape_digits, $timeout = NULL)\r
+    public function GetOption ($file, $escape_digits = '', $timeout = NULL)\r
     {\r
        $timeout = $timeout * 1000;\r
        $params = $this->make_params(get_defined_vars());\r
@@ -266,7 +266,7 @@ trait funcAGI
     }\r
 \r
     //Sends audio file on channel.\r
-    public function StreamFile ($filename, $escape_digits, $sample_offset = NULL)\r
+    public function StreamFile ($filename, $escape_digits = '', $sample_offset = NULL)\r
     {\r
        $params = $this->make_params(get_defined_vars());\r
        $cmd = 'stream file';\r
@@ -316,7 +316,7 @@ trait funcAGI
     }\r
 \r
     //Records to a given file.\r
-    public function RecordFile ($filename, $format, $escape_digits, $timeout = -1, $offset_samples = NULL, $BEEP = NULL, $silence = NULL)\r
+    public function RecordFile ($filename, $format, $escape_digits = '', $timeout = -1, $offset_samples = NULL, $BEEP = NULL, $silence = NULL)\r
     {\r
        if ($timeout != -1)\r
        {\r
@@ -574,7 +574,7 @@ trait funcAGI
     }    \r
 \r
     //Sends audio file on channel and allows the listener to control the stream.\r
-    public function ControlStreamFile  ($filename, $escape_digits, $skipms = NULL, $ffchar = NULL, $rewchr = NULL, $pausechr = NULL, $offsetms = NULL)\r
+    public function ControlStreamFile  ($filename, $escape_digits = '', $skipms = NULL, $ffchar = NULL, $rewchr = NULL, $pausechr = NULL, $offsetms = NULL)\r
     {\r
        $params = $this->make_params(get_defined_vars());\r
        $cmd = 'control stream file';\r
index de6edb38b5b76eb6df51a1a9de2fe8a9ea51f837..8ec6b1b924a617fedb13e41bd877db7300765f91 100644 (file)
@@ -1,15 +1,19 @@
 <?php
 declare (ticks=1);
 require_once 'astapilib/ami.php';
-function waitanswer($a,$b)
-{
-    var_dump($a,$b);
-    var_dump(urldecode($b['Result']));
-}
 
+//SETTINGS
+$PINLEN = 4;
+$REPEATNO = 5;
+$CALLFROM = '"suka" <3505>';
+$RETRYCALL = 3;
+$INTERVAL = 5;
+//
+//test data
 echo "<pre>\n";
-$_GET['phone'] = 3400;
+$_GET['phone'] = '3400';
 var_dump($_GET);
+
 if (!isset($_GET['phone']))
 {
     exit();
@@ -18,8 +22,28 @@ if(preg_match('/^7\d{10}$/', $_GET['phone']) != 1)
 {
     //exit();
 }
+//generate random pin
+$PIN = [];
+for ($cnt = 0; $cnt < $PINLEN;$cnt++)
+{
+    mt_srand(str_replace('.', '', (string)array_product(sys_getloadavg())) * crc32(microtime()));
+    $cnte = mt_rand(0,30);
+    $cntr = 0;
+    do
+    {
+       $rnd = mt_rand(0,9);
+       $cntr++;
+    }
+    while($cntr < $cnte);
+    $PIN[] = $rnd;
+    usleep(mt_rand(1,250000));
+}
+
+echo implode('', $PIN),PHP_EOL;
 
-$AMI = new AMI(array('autorefresh' => TRUE, 'logverbose' => 6));
+//fork point
+
+$AMI = new AMI(array('autorefresh' => TRUE, 'logverbose' => 3));
 $is_connected = $AMI->connect("127.0.0.1", "monast", "blabla");
 
 if (!$is_connected)
@@ -27,23 +51,37 @@ if (!$is_connected)
     exit();
 }
 
-$OriginateResponce = $AMI->Originate("Local/{$_GET['phone']}@c-2", NULL, NULL, NULL, 'AGI', 'agi:async', 30, 3500, NULL, NULL, NULL, NULL);
-$OriginateResponce->WaitUntilReady();
+for ($tryno = 0; $tryno < $RETRYCALL;$tryno++)
+{
+    $OriginateResponce = $AMI->Originate("Local/{$_GET['phone']}@c-2", NULL, NULL, NULL, 'AGI', 'agi:async', 30, $CALLFROM, ['CALLERID(ANI-num)' => '3505'], NULL, NULL, NULL);
+    $OriginateResponce->WaitUntilReady();
+    if ($OriginateResponce->Response == 'Success')
+    {
+       break;
+    }
+    sleep($INTERVAL);
+}
+if ($OriginateResponce->Response != 'Success')
+{
+    exit();
+}
 $channel = $OriginateResponce->Channel;
-var_dump($AMI->GetAsyncAGIChannelList());
 $AGI = $AMI->GetAsyncAGIInstance($channel);
-//$AGI = new AGI();
-echo '------------------';
-var_dump($AGI->GetVariable('CALLERID(num)'));
-var_dump($AGI->GetVariable('CALLERID(name)'));
-
-echo '------------------';
-var_dump($AGI->SayDigits('012345'));
-var_dump($AGI->Hangup());
-unset($AGI);
-sleep(5);
-while (TRUE)
+
+for ($tryno = 0; $tryno < $REPEATNO;$tryno++)
 {
-    sleep(1);
-    echo '+';
-}
\ No newline at end of file
+    $AGI->StreamFile('your');
+    $AGI->StreamFile('parol');
+    foreach ($PIN as $digit)
+    {
+       if (!$AGI->IsAlive())
+       {
+           break 2;
+       }
+       $AGI->SayDigits($digit);
+       usleep(500000);
+    }
+    sleep(2);
+}
+$AGI->Hangup();
+unset($AGI);