// Thanks Ktulur!!! /* Initial Stup for PFA Fun!*/ require_once("Android.php"); $droid = new Android(); /* Some GUI for the user */ $droid->dialogCreateAlert("AstMofix","Ready to connect to your Asterisk powered BOX and get simple event stats"); $droid->dialogSetNeutralButtonText("I'm Ready to fun!"); $droid->dialogShow(); $result = $droid->dialogGetResponse(); /* Get parameters */ /* 1- Remote AMI server */ $server=$droid->getInput("Please enter IP/Hostname of your Asterisk BOX",""); /* 2- Remote AMI port */ $port=$droid->getInput("Please enter TCP Port",""); /* 3- Remote user */ $user=$droid->getInput("Please enter username",""); /* 4- Remote pass */ $pass=$droid->getPassword("Please enter password",""); $server=$server['result']; $port=$port['result']; $user=$user['result']; $pass=$pass['result']; echo "Ready to connect to $server:$port with $user/$pass\n"; /* TCP Connection */ $astSocket = fsockopen($server, $port, $errno, $errstr, 30); if (!$astSocket) { $droid->dialogCreateAlert("AstMofix","Sorry, TCP Connection on $server : $port was not possible :r("); $droid->dialogSetNeutralButtonText("I will try again :D)"); $droid->dialogShow(); $result = $droid->dialogGetResponse(); exit(1); } /* Authentication process ... */ $droid->dialogCreateSpinnerProgress("Connection Successfull!!!\nNow: Trying to Authenticate","Please wait"); $droid->dialogShow(); $login = "Action: Login\r\n"; $login .= "Username: $user\r\n"; $login .= "Secret: $pass\r\n\r\n"; echo "Sending:\r\n $login \r\n"; fwrite($astSocket,$login); $response=fgets($astSocket); // "Asterisk Call Manager..." $response=fgets($astSocket); // "Response: Success..." if (strpos($response,"Success") == false) { $droid->dialogDismiss(); $droid->dialogCreateAlert("AstMofix","Sorry, AMI Auth Failed $server : $port with $user/$pass \n"); $droid->dialogSetNeutralButtonText("I will try again :D)"); $droid->dialogShow(); $result = $droid->dialogGetResponse(); exit(1); } $droid->dialogDismiss(); $droid->dialogCreateSpinnerProgress("Auth Sucessfull !!! Ready to play ;)","Fetching some initial info, please wait"); $droid->dialogShow(); sleep(10); $droid->dialogDismiss(); $eventsArray=array(); $timetorefresh=time(); /* MAIN BIG LOOP */ while (1) { // Receive ... $line = fgets($astSocket); //echo ">> $line"; if (substr($line,0,5) == "Event") { $parts = explode(":",$line); $event=$parts[1]; $eventsArray["$event"]=$eventsArray["$event"]+1; } $lastupdate=time()-$timetorefresh; if ( $lastupdate > 15) { $values=var_dump($eventsArray); $droid->dialogDismiss(); $droid->dialogCreateSpinnerProgress("Updated info",$values); $droid->dialogShow(); $lastupdate=time(); } }