Рассмотрим работу AGI на примере скрипта:
#!/usr/bin/php7.3 -q
<?php
require('phpagi.php');
$AGI = new AGI();
$filepath = "/var/www/html/statistic.local/"; //Путь к файлу
$filedb = $AGI->request['agi_arg_1']; //Имя файла с базой
$ls = $AGI->request['agi_arg_2']; //Лицевой счет абонента
$fullfile = $filepath . $filedb;
$arr = file($fullfile);
foreach($arr as $v){
if (strpos($v,$ls,0) !== false){
$string = $v;
$ls_array = explode('|', $string);
if ($ls == $ls_array[2]){
$dolg = $ls_array[6];
break;
}
}
}
$summa = explode('.',$dolg);
$summa_rub = (int) $summa[0];
$summa_kop = (int) $summa[1];
if ($summa_rub % 10 == 1){
$sound_r = "rouble";
}
elseif (in_array(($summa_rub % 10), [2, 3, 4])){
$sound_r = "roublya";
}
elseif (in_array(($summa_rub % 10), [5,6,7,8,9,0])){
$sound_r = "roubley";
}
if ($summa_kop % 10 == 1){
$sound_k = "copeck";
}
elseif (in_array(($summa_kop % 10), [2, 3, 4])){
$sound_k = "copeck-i";
}
elseif (in_array(($summa_kop % 10), [5,6,7,8,9,0])){
$sound_k = "copecks";
}
$AGI->set_variable('DOLG',$dolg);
$AGI->set_variable('DOLG_R',$summa[0]);
$AGI->set_variable('DOLG_K',$summa[1]);
$AGI->set_variable('sound_r',$sound_r);
$AGI->set_variable('sound_k',$sound_k);
?>
Вызывается из диалплана:
same => n,agi(getdolg.php,dbsum.txt,${bill})
Скрипт получает в виде аргументов имя файла с данными и лицевой счет абонента, парсит его и возвращает сумму долга из одного из столбцов.
$filedb = $AGI->request['agi_arg_1'];
присваивает имя файла с данными переменной, а $ls = $AGI->request['agi_arg_2'];
соответственно получаемый лицевой счет.
Далее читается файл, ищется в нем ЛС по 3 (2 по индексу) столбцу и возвращает значение из 7 (6 по индексу) столбца, присваивая его значение переменной dolg
.
Далее сумма разбивается на рубли и копейки и подгоняются склонения, присваиваются нужные значения, которые после и передаются из AGI в диалплан в виде:
$AGI->set_variable('переменная_в_диалплане',$значение_переменной_AGI);
DOLG
в самом дилалплане, конечно, не нужна, она скорее для проверки
DOLG_R
- сумма в рублях
DOLG_K
- сумма в копейках
sound_r
- файл озвучки для “рублей”
sound_k
- файл озвучки для “копеек”