Строчка в диалплане:
Код: Выделить всё
exten => 4444,n,AGI(touch.sh,1000,2000)
Код: Выделить всё
<SIP/650-000031af>AGI Tx >> agi_arg_1: 1000
<SIP/650-000031af>AGI Tx >> agi_arg_2: 2000
Код: Выделить всё
exten => 4444,n,AGI(touch.sh,1000,2000)
Код: Выделить всё
<SIP/650-000031af>AGI Tx >> agi_arg_1: 1000
<SIP/650-000031af>AGI Tx >> agi_arg_2: 2000
Код: Выделить всё
echo $1
echo $2
Код: Выделить всё
#!/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
}
Код: Выделить всё
exten => 4444,n,Set(RESULT=${SHELL(/var/lib/asterisk/agi-bin/touch.sh ${arg})})
Код: Выделить всё
#!/bash
# тут получили параметры, переданные скрипту как $1, $2 и т.п..
# произвели какие-то вычисления и нам нужно вернуть в диалплан
# переменную $res и использовать её в диалплане как bashres:
echo "SET VARIABLE bashres $res"
Код: Выделить всё
....
exten => s,n,AGI(myscript,${ARG1}, ${ARG2})
exten => s,n,NoOp(Result: ${bashres})
.....
ну так есть же и другие варианты: perl и php - пользуйBansher писал(а):похоже использовать bash в качестве AGI жуткий гемор
наверно все же стоит уточнить, что не только из bash, из любого AGI скрипта (AGI commands)shumiloff писал(а):чтобы получить в диалплан обратно параметры из bash