Разобрался со скриптом, полезная штука. Правда пришлось немного подправить. В исходном состоянии он у меня работал пару минут и потом, видимо, терялось соединение, а заново соединится не получалось, пришлось, почему-то заново создавать переменную, заново прописывать событие и т.д. но теперь в таком состоянии у меня работает постоянно:
Код: Выделить всё
#!/usr/bin/env php
<?php
require_once '../../../config.php';
$manager = new AGI_AsteriskManager();
$con = $manager->connect('localhost', 'admin', 'passwd');
if (!$con) {
echo "Can't connect to manager!";
}
$manager->add_event_handler('NewCallerID','NewCallerID');
$response = $manager->wait_response(TRUE);
while (!$response)
{
sleep("1");
$manager = new AGI_AsteriskManager();
$con = $manager->connect('localhost', 'admin', 'passwd');
$manager->add_event_handler('NewCallerID','NewCallerID');
$response = $manager->wait_response(TRUE);
}
function NewCallerID($ecode, $data, $server, $port) {
$event = $data['Event'];
if ($event == "NewCallerID")
{
print_r($data);
}
}
?>
Далее, если не вдаваться в детали, у меня запускается скрипт, который по сети оповещает все компы о номере входящего звонка (я не стал подробно function NewCallerID расписывать). Теперь я столкнулся с такой проблемой: скрипт срабатывает и когда есть входящие звонки, но так же и когда есть исходящие. Я заметил, что в этих двух случаях разная последовательность событий: при исходящем звонке идет Event: Dial, затем Event: NewCallerID, а при входящем Event: NewChannel, затем Even: NewCallerID. Я могу обработчик написать для каждого из этих отдельных событий, но никак не могу понять, как мне определять в какой последовательности они идут, иначе говоря - была ли последовательность Dial->NewCallerID или NewChannel->NewCallerID.