/** * @test */ public function can_get_cdr_variables() { global $standardAGIStart; setFgetsMock($standardAGIStart, array()); $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties); $cdr = $client->getCDR(); $cdrW = array('GET FULL VARIABLE "${CDR(dcontext)}"', 'GET FULL VARIABLE "${CDR(dstchannel)}"', 'GET FULL VARIABLE "${CDR(dst)}"', 'GET FULL VARIABLE "${CDR(src)}"', 'GET FULL VARIABLE "${CDR(clid)}"', 'GET FULL VARIABLE "${CDR(channel)}"', 'GET FULL VARIABLE "${CDR(lastapp)}"', 'GET FULL VARIABLE "${CDR(lastdata)}"', 'GET FULL VARIABLE "${CDR(userfield)}"', 'GET FULL VARIABLE "${CDR(uniqueid)}"', 'GET FULL VARIABLE "${CDR(accountcode)}"', 'GET FULL VARIABLE "${CDR(amaflags)}"', 'GET FULL VARIABLE "${CDR(start)}"', 'GET FULL VARIABLE "${CDR(answer)}"', 'GET FULL VARIABLE "${CDR(end)}"', 'GET FULL VARIABLE "${CDR(duration)}"', 'GET FULL VARIABLE "${CDR(billsec)}"', 'GET FULL VARIABLE "${CDR(disposition)}"'); $cdrR = array('200 result=1 "dcontext"', '200 result=1 "dchannel"', '200 result=1 "dst"', '200 result=1 "src"', '200 result=1 "clid"', '200 result=1 "channel"', '200 result=1 "lastapp"', '200 result=1 "lastdata"', '200 result=1 "userfield"', '200 result=1 "uniqueid"', '200 result=1 "accountcode"', '200 result=1 "amaflags"', '200 result=1 "start"', '200 result=1 "answer"', '200 result=1 "end"', '200 result=1 "duration"', '200 result=1 "billsec"', '200 result=1 "disposition"'); setFgetsMock($cdrR, $cdrW); $this->assertEquals($cdr->getDestinationContext(), 'dcontext'); $this->assertEquals($cdr->getDestinationChannel(), 'dchannel'); $this->assertEquals($cdr->getDestination(), 'dst'); $this->assertEquals($cdr->getSource(), 'src'); $this->assertEquals($cdr->getCallerId(), 'clid'); $this->assertEquals($cdr->getChannel(), 'channel'); $this->assertEquals($cdr->getLastApp(), 'lastapp'); $this->assertEquals($cdr->getLastAppData(), 'lastdata'); $this->assertEquals($cdr->getUserfield(), 'userfield'); $this->assertEquals($cdr->getUniqueId(), 'uniqueid'); $this->assertEquals($cdr->getAccountCode(), 'accountcode'); $this->assertEquals($cdr->getAMAFlags(), 'amaflags'); $this->assertEquals($cdr->getStartTime(), 'start'); $this->assertEquals($cdr->getAnswerTime(), 'answer'); $this->assertEquals($cdr->getEndTime(), 'end'); $this->assertEquals($cdr->getTotalLength(), 'duration'); $this->assertEquals($cdr->getAnswerLength(), 'billsec'); $this->assertEquals($cdr->getStatus(), 'disposition'); }
/** * @test */ public function can_get_logger() { global $standardAGIStart; setFgetsMock($standardAGIStart, array()); $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties); $logger = $client->getAsteriskLogger(); $logger = $client->getAsteriskLogger(); // should return the same instance. }
/** * @test */ public function can_app() { global $standardAGIStart; setFgetsMock($standardAGIStart, array()); $this->_properties['pagiClient'] = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties); $application = new MyPAGIApplication($this->_properties); $refObject = new \ReflectionObject($application); $refMethod = $refObject->getMethod('getAgi'); $refMethod->setAccessible(true); $agi = $refMethod->invoke($application); $this->assertTrue($agi instanceof \PAGI\Client\Impl\ClientImpl); }
/** * @test */ public function can_set_callerid() { global $standardAGIStart; setFgetsMock($standardAGIStart, array()); $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties); $clid = $client->getCallerId(); $callerIdW = array('GET FULL VARIABLE "${CALLERID(name)}"', 'SET VARIABLE "CALLERID(num)" "666"', 'SET VARIABLE "CALLERID(all)" "pepe zamora<666>"', 'GET FULL VARIABLE "${CALLERID(num)}"', 'SET VARIABLE "CALLERID(name)" "pepe zamora"', 'SET VARIABLE "CALLERID(all)" "pepe zamora<666>"', 'SET VARIABLE "CALLERID(ani)" "222"', 'SET VARIABLE "CALLERID(rdnis)" "333"', 'SET VARIABLE "CALLERID(dnid)" "555"'); $callerIdR = array('200 result=1 "pepe zamora"', '200 result=1', '200 result=1', '200 result=1 "666"', '200 result=1', '200 result=1', '200 result=1', '200 result=1', '200 result=1'); setFgetsMock($callerIdR, $callerIdW); $clid->setNumber('666'); $clid->setName('pepe zamora'); $clid->setANI('222'); $clid->setRDNIS('333'); $clid->setDNID('555'); }
/** * @test */ public function can_amd_cause_too_long() { global $standardAGIStart; global $mockTime; global $mockTimeReturn; setFgetsMock($standardAGIStart, array()); $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties); $write = array('EXEC "AMD" ",,,,,,,,"', false, false); $read = array('200 result=0 endpos=0', '200 result=1 (NOTSURE)', '200 result=1 (TOOLONG)'); setFgetsMock($read, $write); $result = $client->amd(); $this->assertTrue($result->isNotSure()); $this->assertTrue($result->isCauseTooLong()); }
#!/usr/bin/env php <?php declare (ticks=1); date_default_timezone_set('America/Buenos_Aires'); define('ROOT_PATH', realpath(__DIR__ . '/../../..')); ini_set('include_path', implode(PATH_SEPARATOR, array(ROOT_PATH . '/src/mg', ROOT_PATH . '/vendor/php/log4php', ini_get('include_path')))); require_once ROOT_PATH . '/src/mg/PAGI/Autoloader/Autoloader.php'; PAGI\Autoloader\Autoloader::register(); require_once __DIR__ . '/example.php'; use PAGI\Client\Impl\ClientImpl as PagiClient; // Go, go, gooo! $pagiClientOptions = array('log4php.properties' => ROOT_PATH . '/resources/log4php.properties'); $pagiClient = PagiClient::getInstance($pagiClientOptions); $pagiAppOptions = array('pagiClient' => $pagiClient); $pagiApp = new MyPagiApplication($pagiAppOptions); pcntl_signal(SIGHUP, array($pagiApp, 'signalHandler')); $pagiApp->init(); $pagiApp->run();
/** * @test */ public function can_get_environment_variables() { global $standardAGIStart; setFgetsMock($standardAGIStart, array()); $client = \PAGI\Client\Impl\ClientImpl::getInstance($this->_properties); putenv('AST_CONFIG_DIR=1'); putenv('AST_CONFIG_FILE=2'); putenv('AST_MODULE_DIR=3'); putenv('AST_SPOOL_DIR=4'); putenv('AST_MONITOR_DIR=5'); putenv('AST_VAR_DIR=6'); putenv('AST_DATA_DIR=7'); putenv('AST_LOG_DIR=8'); putenv('AST_AGI_DIR=9'); putenv('AST_KEY_DIR=10'); putenv('AST_RUN_DIR=11'); $vars = $client->getChannelVariables(); $this->assertEquals($vars->getDirectoryRun(), 11); $this->assertEquals($vars->getDirectoryKey(), 10); $this->assertEquals($vars->getDirectoryAgi(), 9); $this->assertEquals($vars->getDirectoryLog(), 8); $this->assertEquals($vars->getDirectoryData(), 7); $this->assertEquals($vars->getDirectoryVar(), 6); $this->assertEquals($vars->getDirectoryMonitor(), 5); $this->assertEquals($vars->getDirectorySpool(), 4); $this->assertEquals($vars->getDirectoryModules(), 3); $this->assertEquals($vars->getConfigFile(), 2); $this->assertEquals($vars->getDirectoryConfig(), 1); }
* See the License for the specific language governing permissions and * limitations under the License. * */ require_once 'Ding/Autoloader/Autoloader.php'; require_once 'PAGI/Autoloader/Autoloader.php'; \Ding\Autoloader\Autoloader::register(); \PAGI\Autoloader\Autoloader::register(); use PAGI\Application\Exception\InvalidApplicationException; use Ding\Container\Impl\ContainerImpl; use PAGI\Client\Impl\ClientImpl; try { $bootstrap = getenv('PAGIBootstrap'); include_once $bootstrap; $log4php = getenv('log4php_properties'); $agiLogger = false; $agi = ClientImpl::getInstance(array('log4php.properties' => $log4php)); $agiLogger = $agi->getAsteriskLogger(); $container = ContainerImpl::getInstance($properties); $extension = $agi->getChannelVariables()->getDNIS(); $mapper = $container->getBean('PagiExtensionMapper'); $myApp = $mapper->resolve($extension); $agi->consoleLog('Launching ' . get_class($myApp)); if ($myApp === false) { throw new \Exception('No applications found.'); } $myApp->init(); $myApp->run(); } catch (\Exception $e) { $agiLogger->error($e); }