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