Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / AGI + Set(GROUP()=??)

AGI + Set(GROUP()=??)

Сообщений: 58

AGI + Set(GROUP()=??)

Описание ситуации:
Есть необходимость в вызове AGI (на php) из диалплана для сложного определния через какой SIP сервер пробрасывать звонок.
Попутно при этом я хотел бы определить количество звонков на этом сервере. Соответственно хотел бы сделать это через Set(Group()=srv??) и после ${Group_Count(srv??)} и сравнения полученного числа с лимитом.

Проблема:
когда я делаю agi->set_variable("GROUP()", "srv??"); ничего хорошего не получается, возврат с ошибкой. Нет такой "переменно".
делаю agi->exec("set", "GROUP()=srv??"); agi возвращает [result] => 0 и тоже без эффекта..

попробовал даже сделать вызов gosub с передачей параметров..
$res = $agi->evaluate("GOSUB local-gosub set_group 1 srv1");
[local-gosub]
exten => set_group,1,Set(GROUP()=${ARG1})
exten => set_group,2,Return(${GROUP_COUNT()})

Но натолкнулся на то, что Return() возвращает управления отнюдь не в AGI скрипт, откуда его вызвали... а в точку диалплана, откуда вызвали AGI!!!

Вопрос:
Подскажите, пожалуйста.. Что я делаю не так. Или как мне достичь необходимого результата?
Заранее спасибо.
2009-11-03 23:53

Avatara of zzuz
Откуда: SPb
Сообщений: 1307

Re: AGI + Set(GROUP()=??)

http://www.voip-info.org/wiki/view/Asterisk+AGI+php
http://линия24.рф - Астериск и прочие бубны!
2009-11-04 09:23

Сообщений: 58

Re: AGI + Set(GROUP()=??)

zzuz:

http://www.voip-info.org/wiki/view/Asterisk+AGI+php
Поздразумевается, что я этого не видел и не прочитал от и до?
Я этот сайт изучаю вот уже лет 5..
но вот использовать функции в AGI как-то пока не было необходимости.

Где-то читал что в AGI можно работать не со "всеми" переменными (особенно глобальными). Может быть я и наткнулся на такие. Но задача-то должна быть решаема... тем или иным способом.
2009-11-04 14:59

Сообщений: 866

Re: AGI + Set(GROUP()=??)

ну а остальные-то переменные устанавливаются у вас через set_variable ?
как насчет set_variable("qwer", "abc") и exec("noop", "qwer=\${qwer}") ?
2009-11-04 17:07

Сообщений: 58

Re: AGI + Set(GROUP()=??)

dimas:

ну а остальные-то переменные устанавливаются у вас через set_variable ?
как насчет set_variable("qwer", "abc") и exec("noop", "qwer=\${qwer}") ?
$res = $agi->set_variable("qwer", "abc");
$agi->verbose(print_r($res, true));
$res = $agi->exec("noop", "qwer=\${qwer}");
$agi->verbose(print_r($res, true));

выдаёт:

-- AGI Script Executing Application: (noop) Options: (qwer=${qwer})
agi-get-srv.php,48: Array
agi-get-srv.php,48: (
agi-get-srv.php,48:
 => 200

agi-get-srv.php,48: [result] => 0
agi-get-srv.php,48: [data] =>
agi-get-srv.php,48: )

как видим set_variable отработало. exec - нет.

В тоже время:
$res = $agi->set_variable("qwer", "abc");
$agi->verbose(print_r($res, true));
$res = $agi->get_variable("qwer", "abc");
$agi->verbose(print_r($res, true));

на второй verbose выдало:
agi-get-srv.php,48: Array
agi-get-srv.php,48: (
agi-get-srv.php,48:
 => 200

agi-get-srv.php,48: [result] => 1
agi-get-srv.php,48: [data] => abc
agi-get-srv.php,48: )

отработало.
2009-11-04 19:32

Сообщений: 866

Re: AGI + Set(GROUP()=??)

А что у вас за верссия интересно?
У меня 1.4.26. Никакого AGI у меня нет, но вот ради интереса попробовал сейчас сам прикинуться AGI скриптом - с клавиатуры команды астериску повводил. Все там нормально:

SET VARIABLE GROUP() srv??
200 result=1
GET VARIABLE GROUP()
200 result=1 (srv??)


Это я к тому что и сет и гет отлично проходят.
2009-11-04 21:37

Сообщений: 58

Re: AGI + Set(GROUP()=??)

Блин, нашёл причину...
в php скрипте использовалась функция getdate(xxx), которая выдавала "скрытый" варнинг.. нигде по сути его не отображая.
И вот он-то похоже и шёл на выход в agi, так же нигде не рисуясь.. и ломая все последующие команды.

упрощение и частичное отключение.. постепенное приблежение позволило локализовать причину.

Теперь всё работает, спсибо.
2009-11-04 22:38

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru