Skip to content
This repository was archived by the owner on Jul 31, 2025. It is now read-only.

Commit f3430e0

Browse files
author
Ivan Poddubny
committed
Added a few missing methods and fixed formatting a little
* ActionID() for generating random IDs * DBGet for AstDB read queries
1 parent 340c29f commit f3430e0

File tree

1 file changed

+53
-3
lines changed

1 file changed

+53
-3
lines changed

phpagi-asmanager.php

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,36 @@ function Events($eventmask)
344344
return $this->send_request('Events', array('EventMask'=>$eventmask));
345345
}
346346

347+
/**
348+
* Generate random ActionID
349+
**/
350+
function ActionID()
351+
{
352+
return "A".sprintf(rand(),"%6d");
353+
}
354+
355+
/**
356+
*
357+
* DBGet
358+
* http://www.voip-info.org/wiki/index.php?page=Asterisk+Manager+API+Action+DBGet
359+
* @param string $family key family
360+
* @param string $key key name
361+
**/
362+
function DBGet($family, $key, $actionid = NULL)
363+
{
364+
$parameters = array('Family'=>$family, 'Key'=>$key);
365+
if($actionid == NULL)
366+
$actionid = $this->ActionID();
367+
$parameters['ActionID'] = $actionid;
368+
$response = $this->send_request("DBGet", $parameters);
369+
if($response['Response'] == "Success")
370+
{
371+
$response = $this->wait_response(false, $actionid);
372+
return $response['Val'];
373+
}
374+
return "";
375+
}
376+
347377
/**
348378
* Check Extension Status
349379
*
@@ -453,7 +483,7 @@ function MailboxCount($mailbox, $actionid=NULL)
453483
* @param string $actionid message matching variable
454484
*/
455485
function MailboxStatus($mailbox, $actionid=NULL)
456-
{
486+
{
457487
$parameters = array('Mailbox'=>$mailbox);
458488
if($actionid) $parameters['ActionID'] = $actionid;
459489
return $this->send_request('MailboxStatus', $parameters);
@@ -516,7 +546,7 @@ function Originate($channel,
516546
if($actionid) $parameters['ActionID'] = $actionid;
517547

518548
return $this->send_request('Originate', $parameters);
519-
}
549+
}
520550

521551
/**
522552
* List parked calls
@@ -801,6 +831,24 @@ function add_event_handler($event, $callback)
801831
$this->event_handlers[$event] = $callback;
802832
return true;
803833
}
834+
/**
835+
*
836+
* Remove event handler
837+
*
838+
* @param string $event type or * for default handler
839+
* @return boolean sucess
840+
**/
841+
function remove_event_handler($event)
842+
{
843+
$event = strtolower($event);
844+
if(isset($this->event_handlers[$event]))
845+
{
846+
unset($this->event_handlers[$event]);
847+
return true;
848+
}
849+
$this->log("$event handler is not defined.");
850+
return false;
851+
}
804852

805853
/**
806854
* Process event
@@ -813,7 +861,7 @@ function process_event($parameters)
813861
{
814862
$ret = false;
815863
$e = strtolower($parameters['Event']);
816-
$this->log("Got event.. $e");
864+
$this->log("Got event.. $e");
817865

818866
$handler = '';
819867
if(isset($this->event_handlers[$e])) $handler = $this->event_handlers[$e];
@@ -823,6 +871,8 @@ function process_event($parameters)
823871
{
824872
$this->log("Execute handler $handler");
825873
$ret = $handler($e, $parameters, $this->server, $this->port);
874+
} elseif (is_array($handler)) {
875+
$ret = call_user_func($handler, $e, $parameters, $this->server, $this->port);
826876
}
827877
else
828878
$this->log("No event handler for event '$e'");

0 commit comments

Comments
 (0)