}\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
}\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
}\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
} \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
<?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();
{
//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)
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);