'."\n"; echo ''."\n"; api_login(); api_sip_peers(); api_sip_channels(); print_sip(); api_logoff(); echo ''."\n"; echo ''."\n"; ?> 0) { echo "SocketOpen error no: ".$errno." , SocketOpen error str: " .$errstr."
"; echo $API_HOST.":".$API_PORT."
"; $fp=false; return; } fputs($fp,"Action: login\r\n"); fputs($fp,"Username: ".$API_USER."\r\n"); fputs($fp,"Secret: ".$API_PASS."\r\n"); fputs($fp,"Events: off\r\n"); fputs($fp,"\r\n"); } function api_sip_peers() { global $fp; global $API_HOST; global $API_PORT; global $API_USER; global $API_PASS; global $SIP_PEERS; global $SIP_PEERS_COUNT; fputs($fp,"Action: command\r\n"); fputs($fp,"command: sip show peers\r\n"); fputs($fp,"\r\n"); $SIP_PEERS_COUNT=0; if(!$fp) { return; } $started=false; while(!feof($fp)) { // 0-26 (1-27) name/username //27-42 (28-43) IP //43-45 (44-46) DYN //47-49 (48-50) NAT //41-44 SYN // $line=fgets($fp,4096); //$line=str_replace(" ", " ",$line); //echo $line.""; //if (strpos($line,'--END COMMAND--') !== false) if (strpos($line,"sip peers") !== false) { $started=false; break; } else { if($started) { $pieces=explode('/',$line); $pieces=explode(' ',$pieces[0]); $SIP_PEERS[$SIP_PEERS_COUNT][0]=trim($pieces[0]); $SIP_PEERS[$SIP_PEERS_COUNT][1]="free"; $SIP_PEERS[$SIP_PEERS_COUNT][2]=" "; $SIP_PEERS_COUNT++; //echo $pieces[0]."\n"; } } if (strpos($line,'Name/username') !== false) { $started=true; } } } function api_sip_channels() { global $fp; global $API_HOST; global $API_PORT; global $API_USER; global $API_PASS; global $SIP_PEERS; global $SIP_PEERS_COUNT; fputs($fp,"Action: command\r\n"); fputs($fp,"command: sip show channels\r\n"); fputs($fp,"\r\n"); if(!$fp) { return; } $started=false; while(!feof($fp)) { $line=fgets($fp,4096); //echo $line.""; if (strpos($line,'--END COMMAND--') !== false) { $started=false; break; } else { if($started) { $ip = trim(substr($line,0,16)); $name = trim(substr($line,17,12)); $enc = trim(substr($line,56,6)); $position=get_position(trim($name)); if($position==-1) {//hmmmm strange, it is not suppose to happen } else { $SIP_PEERS[$position][1]=$ip; //this is the client IP (can be local LAN, before NAT) $SIP_PEERS[$position][2]=$enc; //this is the codec } //echo $pieces[0]."\n"; } } if (strpos($line,'Response: Follows') !== false) { $started=true; } } } function print_sip() { global $SIP_PEERS; global $SIP_PEERS_COUNT; echo ''."\n"; for($i=1;$i<$SIP_PEERS_COUNT;$i++) { echo "\n"; } echo "
"; echo $SIP_PEERS[$i][0]; echo " "; echo $SIP_PEERS[$i][1]; echo " "; echo $SIP_PEERS[$i][2]; echo "
\n"; } function get_position($text) { global $SIP_PEERS; global $SIP_PEERS_COUNT; for($i=1;$i<$SIP_PEERS_COUNT;$i++) { if(strcmp($SIP_PEERS[$i][0],$text)==0) { return $i; } } return -1; } function api_logoff() { global $fp; global $API_HOST; global $API_PORT; global $API_USER; global $API_PASS; global $PARKEDOK; global $stp; if(!$fp) { return; } fputs($fp,"Action: logoff\r\n"); fputs($fp,"\r\n"); fclose($fp); } function show_queue($queue_name) { global $fp; global $API_HOST; global $API_PORT; global $API_USER; global $API_PASS; global $PARKEDOK; global $stp; global $queue_parameters; global $queue_callers; global $queue_members; global $queue_members_count; global $queue_callers_count; if(!$fp) { return; } fputs($fp,"Action: command\r\n"); fputs($fp,"Command: show queue ".$queue_name." \r\n"); fputs($fp,"\r\n"); $exten=''; $timeout=0; $queue_members_count=0; $queue_callers_count=0; $members_started=false; $callers_started=false; $started=false; while (!feof($fp)) { $line=fgets($fp, 4096); //echo $line."
"; $line=str_replace("\n","",$line); $line=str_replace("\r","",$line); $line=trim($line); if (strpos($line,"--END COMMAND--") !== false) { //the command output has ended $started=false; break; } if ($started and $line!="") { //echo "".$line."
\n"; if(strpos($line,", C:") !== false && strpos($line,", A:") !== false && strpos($line,", SL:") !== false) {//this is the line containing queue data $new_line=substr($line,strpos($line,", C:")+4); $queue_parameters[0]=substr($new_line,0,strpos($new_line,",")); $new_line=substr($line,strpos($line,", A:")+4); $queue_parameters[1]=substr($new_line,0,strpos($new_line,",")); $new_line=substr($line,strpos($line,", SL:")+5); $queue_parameters[2]=substr($new_line,0,strpos($new_line," ")); } if($members_started) { $queue_members[$queue_members_count][0]=substr($line,0,strpos($line," ")); if(strpos($line,"(dynamic)") !== false) { $queue_members[$queue_members_count][1]=1; } else { $queue_members[$queue_members_count][1]=0; } if(strpos($line,"has taken no calls yet") !== false) { $queue_members[$queue_members_count][2]=0; } else { $new_line=substr($line,strpos($line,"has taken ")+10); $queue_members[$queue_members_count][2]=substr($new_line,0,strpos($new_line," ")); } if(strpos($line,"(last was") !== false) { $new_line=substr($line,strpos($line,"(last was ")+10); $queue_members[$queue_members_count][3]=substr($new_line,0,strpos($new_line," ")); } else { $queue_members[$queue_members_count][3]=-1; } $queue_members_count++; } if($callers_started) { $new_line=trim(substr($line,strpos($line," "))); $queue_callers[$queue_callers_count][0]=trim(substr($new_line,0,strpos($new_line,"(wait: "))); $new_line=trim(substr($new_line,strpos($new_line,"(wait: ")+7)); $queue_callers[$queue_callers_count][1]=substr($new_line,0,strpos($new_line,",")); $new_line=trim(substr($new_line,strpos($new_line,", prio: ")+8)); $queue_callers[$queue_callers_count][2]=substr($new_line,0,strpos($new_line,")")); $queue_callers_count++; } if(strpos($line,"No Callers") !== false) { $members_started=false; $callers_started=false; } if(strpos($line,"Callers:") !== false) { $members_started=false; $callers_started=true; } if(strpos($line,"Members:") !== false) { $members_started=true; $callers_started=false; } } if (strpos($line,"Response: Follows") !== false) { //the records/answer follows $started=true; } } } function display_queue($q) { global $queue_parameters; global $queue_callers; global $queue_members; global $queue_members_count; global $queue_callers_count; global $TABLE_SIP; if($_SESSION['admin']) echo '
'; ?>
Queue C A SL
Members type No. of calls last answered
'; echo $queue_members[$i][0]; if($_SESSION['admin']) echo ''; ?> static
Add agent ".mysql_error()); ?>
Waiting in Queue for min:sec priority
---===the queue is empty===---
1.
'; } function duration($duration) { $jours = (($duration/86400)); $duration = $duration % 86400; $heures = (($duration/3600)); $duration = $duration % 3600; $minutes = (($duration/60)); $duration = $duration % 60; printf('%dD %02dH %02dM %02dS',$jours,$heures,$minutes,$duration); } function wait_for($string) { global $fp; while(!feof($fp)) { $line=fgets($fp,4096); $line=str_replace("\n","",$line); $line=str_replace("\r","",$line); $line=trim($line); if (strpos($line,$string) !== false) { break; } } } function format_phone($text) { $return='0000000000'; for($i=0;$i='0' && $text{$i}<='9') { $return.=$text{$i}; } } return substr($return,-10); } ?>