VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

AGI variables in Bash

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Bansher
Сообщения: 21
Зарегистрирован: 31 янв 2013, 16:01

AGI variables in Bash

Сообщение Bansher »

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

Строчка в диалплане:

Код: Выделить всё

exten => 4444,n,AGI(touch.sh,1000,2000)
При звонке я вижу в 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]} там нет. В каких переменных они хранятся?
menzoberronzan
Сообщения: 45
Зарегистрирован: 27 фев 2013, 12:15
Откуда: Пенза
Контактная информация:

Re: AGI variables in Bash

Сообщение menzoberronzan »

Не сталкивался с agi, но в bash аргументы записываются в $1,$2,$3...
Проверьте

Код: Выделить всё

echo $1
echo $2
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: AGI variables in Bash

Сообщение zzuz »

Линия24 - Системы Массового Телефонного Обслуживания
Samael28
Сообщения: 1057
Зарегистрирован: 08 янв 2011, 18:32
Откуда: Киев
Контактная информация:

Re: AGI variables in Bash

Сообщение 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
}
Мой профайл на Upwork
Bansher
Сообщения: 21
Зарегистрирован: 31 янв 2013, 16:01

Re: AGI variables in Bash

Сообщение Bansher »

Всем спасибо. Аргументы действительно передаются в $1,$2 ...
Правда обращаться к скрипту пришлось не через AGI, а через конструкцию

Код: Выделить всё

exten => 4444,n,Set(RESULT=${SHELL(/var/lib/asterisk/agi-bin/touch.sh ${arg})})
чтобы получить необходимые аргументы обратно.
ded
Сообщения: 15618
Зарегистрирован: 26 авг 2010, 19:00

Re: AGI variables in Bash

Сообщение ded »

Могучие семимильные костыли.
Что же Вы хотели делать? Какова была конечная цель?
Bansher
Сообщения: 21
Зарегистрирован: 31 янв 2013, 16:01

Re: AGI variables in Bash

Сообщение Bansher »

Цель простая: произвести вычисления в скрипте и передать результат дальше в диалплан.
Bansher
Сообщения: 21
Зарегистрирован: 31 янв 2013, 16:01

Re: AGI variables in Bash

Сообщение Bansher »

Мда, похоже использовать bash в качестве AGI жуткий гемор.
shumiloff
Сообщения: 60
Зарегистрирован: 18 ноя 2010, 19:04

Re: AGI variables in Bash

Сообщение 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})
.....
Ничего сложного
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: AGI variables in Bash

Сообщение virus_net »

Bansher писал(а):похоже использовать bash в качестве AGI жуткий гемор
ну так есть же и другие варианты: perl и php - пользуй
я пользуюсь AGI на PHP
shumiloff писал(а):чтобы получить в диалплан обратно параметры из bash
наверно все же стоит уточнить, что не только из bash, из любого AGI скрипта (AGI commands)
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH