PHP makes the life easily when it comes to string parsing. Just enjoy to handle the events from asterisk.
#!/usr/bin/php -q
ob_implicit_flush(false);
$socket = fsockopen("hostname or ip","port", $errornum, $errorstr);
if(!$socket) {
       print "Couldn't open socket. Error #" . $errornum . ": " . $errorstr;
} else {
       fputs($socket, "Action: Login\r\n");
       fputs($socket, "UserName: username\r\n");
       fputs($socket, "Secret: password\r\n\r\n");
       fputs($socket, "Action: Events\r\n");
       fputs($socket, "EventMask: on\r\n\r\n");
       fgets($socket); // Ignore the welcome message
       $change = false;
       $agentid = NULL;
       $agentchannel = NULL;
       $login = NULL;
       while(true)
       {
               while(!feof($socket) )
               {
                       $readbuf = "";
                       $resp = fread($socket,8192);
                       $readbuf .= $resp;
                       $allevents = split("\r\n\r\n",$readbuf);
                       foreach($allevents as $event)
                       {
                               $eventdetails = split("\r\n",$event);
                               $event_assoc = "";
                               foreach($eventdetails as $value ) {
                                       $namevalue = split(": ",$value);
                                       $event_assoc[$namevalue[0]] = $namevalue[1];
                               }
                               switch( $event_assoc['Event'] )
                               {
                                       case 'Link':  // Calls getting bridged
                                        break;
                                       default:
                                       if( !empty($event_assoc['Event']) )
                                               print_r($event_assoc);
                               }
                       }
               fputs($socket, "Action: Ping\r\n\r\n");
               usleep(1000000);
               }
       }
}
?>
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment