Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/php -q
- <?php
- require_once "phpagi.php";
- require_once "phpagi-asmanager.php";
- /* Usage:
- *
- * AGI(queue_dev_state.agi,getqueues,user,queue)
- *
- * ARG1: action
- * ARG2: user
- * ARG3: queue
- *
- */
- $agi = new AGI();
- // get manager credentials out of the channel
- //
- $ampmgruser = get_variable( 'AMPMGRUSER' );
- $ampmgrpass = get_variable( 'AMPMGRPASS' );
- $astspooldir = get_variable( 'ASTSPOOLDIR' );
- $ast_version = get_variable( 'ASTVERSION' );
- $ast_version14 = version_compare( $ast_version, '1.4', 'ge' );
- $astman = new AGI_AsteriskManager();
- if( !$astman->connect( "127.0.0.1", $ampmgruser, $ampmgrpass ) )
- {
- exit(1);
- }
- global $argv;
- $arg_action = strtolower( trim( $argv[1] ) );
- $arg_user = trim( $argv[2] );
- $arg_queue = trim( $argv[3] );
- if( empty( $arg_queue ) )
- {
- $arg_queue = get_variable( 'QUEUENO' );
- }
- switch( $arg_action )
- {
- // QUEUESTAT = ( STATIC | LOGGEDIN | LOGGEDOUT )
- case 'getqueues':
- $s = get_queue_status();
- if( array_key_exists( $arg_queue, $s ) == false )
- {
- debug("Queue '$arg_queue' does not exist.");
- exit;
- }
- if( array_key_exists( $arg_user, $s[$arg_queue]['Members'] ) == false )
- {
- debug("User '$arg_user' is not a member of queue '$arg_queue'.");
- $agi->set_variable( 'QUEUESTAT', 'LOGGEDOUT' );
- }
- else
- {
- debug("User '$arg_user' is a {$s[$arg_queue]['Members'][$arg_user]} member of queue '$arg_queue'.");
- $agi->set_variable( 'QUEUESTAT', ( $s[$arg_queue]['Members'][$arg_user] == "STATIC" ) ? "STATIC" : "LOGGEDIN" );
- }
- break;
- default:
- debug("Got unknown action: $action, exiting");
- }
- function get_queue_status()
- {
- global $agi;
- global $astman;
- $response = $astman->send_request('Command',array('Command'=>"queue show"));
- $queues = explode( "\n\n", trim( $response['data'] ) );
- if( sizeof( $queues ) == 0 )
- $queue_status = explode( "\r\n\r\n", trim($response['data']) );
- if( sizeof( $queues ) == 0 )
- exit;
- $queue_status = array();
- foreach( $queues as $queue )
- {
- $current_queue = '';
- $state = 'ReadingQueueName';
- $lines = explode( "\n", $queue );
- foreach( $lines as $line )
- {
- switch($state)
- {
- case 'ReadingQueueName':
- $name = array();
- if( preg_match( "/(.+)\ has\ .+\ calls/i", $line, $name ) != 0 )
- {
- $current_queue = trim( $name[1] );
- $queue_status[$current_queue] = array("Members" => array(), "Callers" => array());
- break;
- }
- if( preg_match( "/Members:?/i", $line ) != 0 )
- {
- $state = 'ReadingQueueMembers';
- break;
- }
- debug( "Unexpected line '$line' in state ReadingQueueName" );
- break;
- case 'ReadingQueueMembers':
- $name = array();
- if( preg_match( "/Local\/(.+)@/i", $line, $name ) != 0 )
- {
- $queue_status[$current_queue]["Members"][$name[1]] = ( stristr($line, "(dynamic)") == false ) ? "STATIC" : "DYNAMIC";
- break;
- }
- if( preg_match( "/Callers:?/i", $line ) != 0 )
- {
- $state = 'ReadingQueueCallers';
- break;
- }
- debug( "Unexpected line '$line' in state ReadingQueueMembers" );
- break;
- case 'ReadingQueueCallers':
- $name = array();
- if( preg_match( "/.+[0-9]+\. (.+) \(.+/i", $line, $name ) != 0 )
- {
- $queue_status[$current_queue]["Callers"][$name[1]] = $name[1];
- break;
- }
- debug( "Unexpected line '$line' in state ReadingQueueCallers" );
- break;
- }
- }
- }
- return $queue_status;
- }
- function get_variable( $value )
- {
- global $agi;
- $r = $agi->get_variable( $value );
- if( $r['result'] == 1 )
- {
- $result = $r['data'];
- return trim( $result );
- }
- return '';
- }
- function debug( $string, $level = 3 )
- {
- global $agi;
- $agi->verbose( $string, $level );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement