qpPeW
@qpPeW
Не люблю рутинную работу...

Как получить ответ USSD в Asterisk?

Доброго времени суток, для работы с Asterisk использую библиотеку PHPAGI, но никак не могу понять как получить ответ который поступает через пару секунда, а не сразу.

Имею вот такой код, который отправляет ussd запрос.
include('phpagi.php');
$manager = new AGI_AsteriskManager();
$manager->connect();
$manager->Command('dongle ussd dongle0 *111#');
$manager->disconnect();

Пробовал записывать ответ в переменную, но там сохраняется только то что сразу приходит в ответ.
include('phpagi.php');
$manager = new AGI_AsteriskManager();
$manager->connect();
$result = $manager->Command('dongle ussd dongle0 *111#');
$manager->disconnect();
print_r($result);

В таком случаи получаю ответ.
Array
(
[data] => Privilege: Command
[dongle0] USSD queued for send with id 0x7f5754001a80

[Response] => Follows
)

Ну и через 2-3 секунды в консоле появляется нужный мне ответ, вот только как его получить, не могу понять.
Раньше использовал библиотеку phpSerial, но т.к. она работает напрямую с портами, не совсем подходит, хотя по функциям самое то что нужно. Собственно по функциям, там есть функция readPort() которая сохраняет все входящие и выходящие данные, что-то подобное я ищу в PHPAGI.
Буду благодарен тому кто подскажет или тыкнет носом, возможно что-то упустил, потому и не могу найти решение, заранее благодарен.
  • Вопрос задан
  • 987 просмотров
Пригласить эксперта
Ответы на вопрос 1
У вас ведь возвращается [Response] => Follows. Попробуйте так:
include('phpagi.php');
$manager = new AGI_AsteriskManager();
$manager->connect();
$manager->Command('dongle ussd dongle0 *111#');
$result = $manager->wait_response();
$manager->disconnect();
print_r($result);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы