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

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

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

boffart Gravatar boffart flag of Russian Federation

http://www.telefon1c.ru/

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

Доброго дня Прошу помочь разобраться с принципами работы 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 скрипта, возможно ли? нет желания лепить костыли, писать свой диалплан, хочется использовать типовые механизмы.

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

Доброго дня Прошу помочь разобраться с принципами работы 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 => 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 скрипта, возможно ли? нет желания лепить костыли, писать свой диалплан, хочется использовать типовые механизмы.

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

Доброго дня Прошу помочь разобраться с принципами работы 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();

  $_agi_channel = $agi->get_variable('v1'); 
  if(!$_agi_channel['result'] == 0)
    $agi->verbose('v1 --->'.$v1, 10);
  else{
    $agi->verbose('v1 not set'.$v1, 10);
  }
?>​

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

Доброго дня Прошу помочь разобраться с принципами работы 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();

  $_agi_channel = $v1= $agi->get_variable('v1'); 
  if(!$_agi_channel['result'] if(!$v1['result'] == 0)
    $agi->verbose('v1 --->'.$v1, 10);
  else{
    $agi->verbose('v1 not set'.$v1, 10);
  }
?>​

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

Доброго дня Прошу помочь разобраться с принципами работы 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, --->'.$v1['data'], 10);
  else{
    $agi->verbose('v1 not set'.$v1, set', 10);
  }
?>​

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