AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

AGI variables in Bash

Newbies/FAQ Forum 11 сообщений -
#1

Второй день бьюсь не доходит до меня никак.

Строчка в диалплане:
Код:
exten => 4444,n,AGI(touch.sh,1000,2000)


При звонке я вижу в Agi debug передаваемые аргументы:
Код:
AGI Tx >> agi_arg_1: 1000
AGI Tx >> agi_arg_2: 2000


В каком виде они приходят в bash скрипт??? Ни $agi_arg_1, ни ${agi_arg_1}, ни ${agi_arg_1[0]} там нет. В каких переменных они хранятся?
#2

$1 $2 etc...
#3

ни в каких. Читаете STDIN и сами парсите раз уж решили использовать баш.
_________________
рву шаблоны. дорого.
#4

из STDIN читаются переменные канала. А параметры вызова скрипта читаются стандартно. Через массив argv, в случае языков высокого уровня, или же, для баша, как $1,$2,$3.
Так как астер, в данном случае просто вызовет скрипт как "touch.sh 1000 2000" и начнет ему на STDIN заливать уже все остальное.
#5

Всем спасибо. Аргументы действительно передаются в $1,$2 ...
Правда обращаться к скрипту пришлось не через AGI, а через конструкцию
Код:
exten => 4444,n,Set(RESULT=${SHELL(/var/lib/asterisk/agi-bin/touch.sh ${arg})})
чтобы получить необходимые аргументы обратно.
#6

А не проще взять тот же php-agi, написать ваш скрипт на php и уж там делать типа agi->set_variable('ASTERVAR1',$бла-бла)
_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#7

Код:
#!/bin/bash

declare -a array
while read -e ARG && [ "$ARG" ] ; do
array=(` echo $ARG | sed -e 's/://'`)
export ${array[0]}=${array[1]}
done

checkresults() {
while read line
do
case ${line:0:4} in
"200 " ) echo $line >&2
return;;
"510 " ) echo $line >&2
return;;
"520 " ) echo $line >&2
return;;
* ) echo $line >&2
;;
esac
done
}


echo "Setting variable VAR to: $agi_callerid" >&2
echo "SET VAR $agi_callerid"
checkresults

exit 0;
#8

Wapo @ Чт Окт 10, 2013 09:29 писал(а):
А не проще взять тот же php-agi, написать ваш скрипт на php и уж там делать типа agi->set_variable('ASTERVAR1',$бла-бла)


Не силен в php, точнее вообще бессилен, к сожалению.

Added after 7 minutes:

Мда, похоже использовать bash в качестве AGI жуткий гемор.
#9

Код:

Не силен в php, точнее вообще бессилен, к сожалению.


Поверьте - очень быстро разберетесь коли знаете тот же Perl.

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
#10

зачем знающему 'тот же Perl' php-AGI ? когда есть родное perl-agi Smile
_________________
рву шаблоны. дорого.
#11

а чем вам не нравится bash ?
я же написал выше пример.