AGI - порядок выполнения скриптов
|
Сообщений: 89
|
Re: AGI - порядок выполнения скриптов
ded[internal]
exten => _11X,1,Dial(MGCP/aaln/S1/${EXTEN:2}@RASTANNAIA-01-IAD-8-FXS,45,o)
exten => _11X,2,Hangup
Ну да, а как быть напрмер с номером 119 ?
1. первая циска 8 портов: 111-118@RASTANNAIA-01-IAD-8-FXS
2. вторая циска 8 портов: 119-126@RASTANNAIA-02-IAD-8-FXS
3. третья циска 16 портов: 126-142@RASTANNAIA-03-IAD-16-FXS
?
|
|
Откуда: Москва
Сообщений: 3421
|
Re: AGI - порядок выполнения скриптов
den68Еше вопрос, есть ли какая встроенная функция для разделения EXTEN на код страны, код города, номер телефона ?
Это шутка? Разве любой номер можно разделить на код страны, области и города? Это нужна база данных со всеми кодами.
den68теперь второй вопрос, какой переменной можно передать время прошедшего разговора в DeadAGI(my-test.agi) ?
излазив все этого я ненашел ;(
${DIALSTATUS}, ${ANSWERTIME}, ${DIALEDTIME}
|
|
Сообщений: 89
|
Re: AGI - порядок выполнения скриптов
litnimax den68Еше вопрос, есть ли какая встроенная функция для разделения EXTEN на код страны, код города, номер телефона ?
Это шутка? Разве любой номер можно разделить на код страны, области и города? Это нужна база данных со всеми кодами.
Нет, не шутка, я в общем-то и имел в виду наиболее полную таблицу кодов стран и городов, в плане где взять. И еще хотел посоветоваться, кто-как-каим парсером эту проблему решает (чтоб не изобретать велосипед). Может есть готовый перловый модуль под это, например ?
P.S. а в * есть встроенные функции: StripLSD() и StripMSD() - но они без анализа как правило бесполезны.
|
|
Откуда: Москва
Сообщений: 3421
|
Re: AGI - порядок выполнения скриптов
База кодов стоит денег.
А про парсер... Ты думаешь что в инете полно самых распространенных баз кодов и лучших парсеров для них? А вообще искать в инете парсер базы кодов это фан, я быстрее напишу его чем найду.
Ну да ладно, вот тебе мой:
import sys
data = open(sys.argv[1]).readlines()
f = open(sys.argv[1] + '.out','w')
for line in data:
try:
dst,desc,rate = line.split('|')
rate = '%.2f' % float(rate)
f.write('*\t%(dst)s\t%(desc)s\t1\t%(rate)s\t0.0\t1\t0\t6\t0:00:00\t23:59:59\t1\t0\t1\t60\n' % vars())
except:
raise
f.close()
Подходит?
|
|
Сообщений: 89
|
Re: AGI - порядок выполнения скриптов
litnimaxБаза кодов стоит денег.
А про парсер... Ты думаешь что в инете полно самых распространенных баз кодов и лучших парсеров для них? А вообще искать в инете парсер базы кодов это фан, я быстрее напишу его чем найду.
Ну да ладно, вот тебе мой:
import sys
data = open(sys.argv[1]).readlines()
...поскипано
f.close()
Подходит?
Сенькс, изучу. Хочеться сделать выборку кодов на sql, текстовой файл - больно геморно...
Прилагаю файл список стран и кодов, плз. освятите - это далеко не полный ? и сколько % там нехватает на ваш взгляд ? ;-)
|
|
Сообщений: 89
|
Re: AGI - порядок выполнения скриптов
Вот процедура которая у меня получилась на perle, неоптимизированна еще, сырец так сказать, работает с преведенной выше таблицей кодов, может кому сгодиться как возможный образец ;-)
sub get_kod()
{
my ($dbc,$dialexten) = @_;
my $i=1;
my $tmpkod="";
my $ret_cena="",$ret_kod="";
my $rr_cena="",$rr_kod="";
while ($i > 0)
{
$tmpkod = substr($dialexten,0,$i);
my $sth = $dbc->query("SELECT kod_country,kod_cena_minuta FROM billing_kod WHERE kod_country LIKE '$tmpkod%' ORDER BY kod_country DESC");
$i++;
if (!$sth) { print STDERR "get_kod(STH) -!! No balance Updated !!-\n"; exit; }
if (!$sth->execute) { print STDERR "get_kod(STH-EXEC) -!! No balance Updated !!-\n"; exit; }
if ( $sth->numrows == 0 )
{
$i = 0;
} else {
($rr_kod,$rr_cena) = $sth->fetchrow;
if(!$rr_cena)
{} else {
$ret_cena = $rr_cena;
$ret_kod = $rr_kod;
}
}
}
return ($ret_kod,$ret_cena);
}
|
|