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

AGI переменные канала

0

Доброго дня Прошу помочь разобраться с принципами работы AGI:

Тестовый стенд: Asterisk 1.8.4.4 built (Askozia) PHP 4.4.9

Логика приложения: Вызываем команду AMI Originate, задаем переменные канала v1,v2,v3,v4 (через соответствующий параметр команды)

Диалплан, вызывающий скрипт

exten => 1,Answer()
exten => n,NoCDR()
exten => n,AGI(DIALPLAN-APPLICATION-851764435505755eb65e5d.php})
exten => n,Hangup()​​​​​​​

Необходимо получить переменные канала в скрипте.

Как я понимаю есть возможность передать переменные при вызове самого скрипта

exten => 00555,n,AGI(test.php,${v1},${v2},${v3},${v4})

и далее с ними работать следующим образом

$chan       = $argv[1];
$date1      = $argv[2]; 
$date2      = $argv[3];
$numbers    = explode("-",$argv[4]);

но этот вариант не подходит для askozia при добавлении приложения она автоматически формирует диалплан и параметры для скрипта передать не пытается.

согласно документации по AGI (PHP) пытался использовать команду get_variable

<?php     
  $agi = new AGI();  
  $v1 = $agi->get_variable("v1");
?>

но в переменную $v1 возвращается массив, что мне и не понятно.

Вопрос: как получить значение переменной канала из agi скрипта, возможно ли? нет желания лепить костыли, писать свой диалплан, хочется использовать типовые механизмы.

Решение: Спасибо за совет посмотреть доку :)

теперь все ясно :) в дистрибутиве askozia старая версия PHP AGI phpagi.php,v 2.14 2005/05/25 20:30:46 это и было основной моей ошибкой, я смотрел доку по
phpagi.php,v 2.20 2010/09/30 02:21:00

метод get_variable в старой версии не имеет второго параметра и всегда возвращает массив

в итоге для моего случая скрипт должен выглядеть следующим образом

<?php
  require('phpagi.php');
  $agi = new AGI();

  $v1= $agi->get_variable('v1'); 
  if(!$v1['result'] == 0)
    $agi->verbose('v1 --->'.$v1['data'], 10);
  else{
    $agi->verbose('v1 not set', 10);
  }
?>​
удалить закрыть спам изменить тег редактировать

спросил 2012-09-18 10:22:28 +0400

boffart Gravatar boffart flag of Russian Federation
61 3 2 5
http://www.telefon1c.ru/

обновил 2012-09-18 16:07:36 +0400

1 Ответ

1

прочитать доку на phpagi

и включить 'agi set debug on' чтоб посмотреть что в скрипт отдают то что должны.

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

ответил 2012-09-18 11:41:56 +0400

komrad123 Gravatar komrad123
3810 5 3 44

Comments

Спасибо! Теперь все ясно :), решение проблемы запостил в основную тему

boffart ( 2012-09-18 15:54:05 +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-09-18 10:22:28 +0400

Просмотрен: 2,757 раз

Обновлен: Sep 18 '12

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