Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Asterisk + php ami

0

Доброго времени суток. Я подключаюсь к Asterisk из php-скрипта, который лежит на домене у нас. Пытаюсь слушать события, которые там происходят. В ответ в браузере высвечивается: Asterisk Call Manager/1.1. На самом Asterisk консоль при выполнении скрипта пишет Manager 'Login' logged on from ip, а через доли секунды сразу же Manager 'Login' logged off from ip. Вопрос: почему не получается получить более информативный ответ.

$strWaitTime="10";  
$timeout = 10;
        $asterisk_ip = "host";  

        $socket = fsockopen($asterisk_ip,"5038", $errno, $errstr, $timeout);
        fputs($socket, "Action: Login\r\n");

        fputs($socket, "UserName: Login\r\n");
        fputs($socket, "Secret: Password\r\n");
        fputs($socket, "Action: Queues\r\n\r\n");



        $response = fgets($socket,128);
        echo $response;
удалить закрыть спам изменить тег редактировать

спросил 2012-10-01 18:12:11 +0400

анонимный пользователь

Аноним

Comments

А прочитать вывод fputs кто должен?

zzuz ( 2012-10-01 18:48:58 +0400 )редактировать

Как правильно прочитать? $response = fgets($socket,128); - разве это не чтение ?

romedal ( 2012-10-01 19:03:38 +0400 )редактировать

А ну да. Чтение.

zzuz ( 2012-10-01 19:18:18 +0400 )редактировать

2 Ответа

1
ссылка удалить спам редактировать

ответил 2012-10-02 00:41:06 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

Попробуй так:

<?php
$socket = fsockopen("127.0.0.1","5038", $errno, $errstr, $timeout);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: login\r\n");
fputs($socket, "Secret: password\r\n\r\n");
fputs($socket, "Action: ListCommands\r\n\r\n");
fputs($socket, "Action: Logoff\r\n\r\n");
while (!feof($socket)) {
$wrets .= fread($socket, 8192);
}
fclose($socket);
echo $wrets;
?>
ссылка удалить спам редактировать

ответил 2012-10-01 21:11:01 +0400

alex Gravatar alex
1 2 1

Comments

А где fputs($socket, "Action: Queues\r\n\r\n"); ?

zzuz ( 2012-10-01 22:04:20 +0400 )редактировать

zzuz Вопрос звучал так: "почему не получается получить более информативный ответ." Я привёл пример рабочего скрипта, где вместо "ListCommands" можно подставить что угодно, в том числе и Queues.

alex ( 2012-10-02 09:01:59 +0400 )редактировать

Ещё заметил что если не сделаешь fputs($socket, "Action: Logoff\r\n\r\n"); то в выводе ничего нет. А у тебя как раз его нет!

alex ( 2012-10-04 09:21:24 +0400 )редактировать

я в велосипедах мало разбираюсь.

zzuz ( 2012-10-04 09:28:18 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2012-10-01 18:12:11 +0400

Просмотрен: 5,101 раз

Обновлен: Oct 02 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.