marcelog / PAMI

PHP Asterisk Manager Interface ( AMI ) supports synchronous command ( action )/ responses and asynchronous events using the pattern observer-listener. Supports commands with responses with multiple events. Very suitable for development of operator consoles and / or asterisk / channels / peers monitoring through SOA, etc

Home Page:http://marcelog.github.com/PAMI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PAMI Disconnect‏ and read Code

qasimkhans opened this issue · comments

I am using PAMI to get Asterisk Manager Events. please see my code below. I wanted to get $event->getDialStatus() == 'ANSWER' of Dial Event and as condition true, i want Asterisk Manager to be disconnected and read the remaining code. in other words i just want to get some events store in DB and move to remaining after that. currently i am getting following error. Thanks.

'127.0.0.1', 'scheme' => 'tcp://', 'port' => 5038, 'username' => 'ncs', 'secret' => 'ncs', 'connect_timeout' => 10000, 'read_timeout' => 10000 ); $pamiClient = new PamiClient($pamiClientOptions); // Open the connection $pamiClient->open(); use PAMI\Message\Event\EventMessage; use PAMI\Message\Event\DialEvent; $pamiClient->registerEventListener(function (EventMessage $event) { print_r($event); }, function ($event) { $re = $event instanceof DialEvent && $event->getDialStatus() == 'ANSWER'; if ($re){ echo "Found Event\n"; global $pamiClient; $pamiClient->close(); } } ); $running = true; while($running) { $pamiClient->process(); usleep(1000); } echo "Code Ended>>>>>>>>>>>>>>>>>>> Read This Line\n"; ?>

PHP Fatal error: Uncaught exception 'PAMI\Client\Exception\ClientException' with message 'Error reading' in /usr/share/pear/PAMI/Client/Impl/ClientImpl.php:236
Stack trace:
#0 /usr/share/pear/PAMI/Client/Impl/ClientImpl.php(258): PAMI\Client\Impl\ClientImpl->getMessages()
#1 /scripts/pami.php(95): PAMI\Client\Impl\ClientImpl->process()
#2 {main}

thrown in /usr/share/pear/PAMI/Client/Impl/ClientImpl.php on line 236

It seems asterisk is closing the connection, you should be able to find out more information in the asterisk logs

That is right, i want asterisk manager connection to be closed. but i am getting above error,

You are closing the connection but the loop keeps calling the process() method, you should get out of that loop if you want to end the program.

can you please let me know how to get out of that loop after close the connection. Thanks

this is not a pami issue, closing this one then.

@marcelog So where can I find the solution for this issue