Страница 1 из 3
AGI variables in Bash
Добавлено: 09 окт 2013, 15:36
Bansher
Второй день бьюсь не доходит до меня никак.
Строчка в диалплане:
При звонке я вижу в Agi debug передаваемые аргументы:
Код: Выделить всё
<SIP/650-000031af>AGI Tx >> agi_arg_1: 1000
<SIP/650-000031af>AGI Tx >> agi_arg_2: 2000
В каком виде они приходят в bash скрипт??? Ни $agi_arg_1, ни ${agi_arg_1}, ни ${agi_arg_1[0]} там нет. В каких переменных они хранятся?
Re: AGI variables in Bash
Добавлено: 09 окт 2013, 15:56
menzoberronzan
Не сталкивался с agi, но в bash аргументы записываются в $1,$2,$3...
Проверьте
Re: AGI variables in Bash
Добавлено: 09 окт 2013, 16:02
zzuz
Re: AGI variables in Bash
Добавлено: 09 окт 2013, 21:24
Samael28
Код: Выделить всё
#!/bin/bash
declare -a array
while read -e ARG && [ "$ARG" ] ; do
array=(` echo $ARG | sed -e 's/://'`)
export ${array[0]}=${array[1]}
done
# following variables are available from asterisk
echo $agi_request >&2
echo $agi_channel >&2
echo $agi_language >&2
echo $agi_type >&2
echo $agi_uniqueid >&2
echo $agi_callerid >&2
echo $agi_dnid >&2
echo $agi_rdnis >&2
echo $agi_context >&2
echo $agi_extension >&2
echo $agi_priority >&2
echo $agi_enhanced >&2
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;; #keep on reading those Invlid command
#command syntax until "520 End ..."
esac
done
}
Re: AGI variables in Bash
Добавлено: 10 окт 2013, 10:04
Bansher
Всем спасибо. Аргументы действительно передаются в $1,$2 ...
Правда обращаться к скрипту пришлось не через AGI, а через конструкцию
Код: Выделить всё
exten => 4444,n,Set(RESULT=${SHELL(/var/lib/asterisk/agi-bin/touch.sh ${arg})})
чтобы получить необходимые аргументы обратно.
Re: AGI variables in Bash
Добавлено: 10 окт 2013, 10:31
ded
Могучие семимильные костыли.
Что же Вы хотели делать? Какова была конечная цель?
Re: AGI variables in Bash
Добавлено: 15 окт 2013, 13:37
Bansher
Цель простая: произвести вычисления в скрипте и передать результат дальше в диалплан.
Re: AGI variables in Bash
Добавлено: 15 окт 2013, 13:44
Bansher
Мда, похоже использовать bash в качестве AGI жуткий гемор.
Re: AGI variables in Bash
Добавлено: 15 окт 2013, 17:10
shumiloff
Вполне себе использую давно bash в качестве AGI. Чего только на нём не делал - всё работает как часы.
Для того, чтобы получить в диалплан обратно параметры из bash, нужно сделать следующее:
Код: Выделить всё
#!/bash
# тут получили параметры, переданные скрипту как $1, $2 и т.п..
# произвели какие-то вычисления и нам нужно вернуть в диалплан
# переменную $res и использовать её в диалплане как bashres:
echo "SET VARIABLE bashres $res"
В диалплане после этого на время жизни канала будет доступно значение локальной переменной bashres:
Код: Выделить всё
....
exten => s,n,AGI(myscript,${ARG1}, ${ARG2})
exten => s,n,NoOp(Result: ${bashres})
.....
Ничего сложного
Re: AGI variables in Bash
Добавлено: 16 окт 2013, 08:46
virus_net
Bansher писал(а):похоже использовать bash в качестве AGI жуткий гемор
ну так есть же и другие варианты: perl и php - пользуй
я пользуюсь AGI на PHP
shumiloff писал(а):чтобы получить в диалплан обратно параметры из bash
наверно все же стоит уточнить, что не только из bash, из любого AGI скрипта (
AGI commands)