ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

AGI variables in Bash

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

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

AGI variables in Bash

Сообщение Bansher » 09 окт 2013, 15:36

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

Строчка в диалплане:
Код: выделить все
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]} там нет. В каких переменных они хранятся?
Bansher
 
Сообщений: 21
Зарегистрирован: 31 янв 2013, 16:01

Re: AGI variables in Bash

Сообщение menzoberronzan » 09 окт 2013, 15:56

Не сталкивался с agi, но в bash аргументы записываются в $1,$2,$3...
Проверьте
Код: выделить все
echo $1
echo $2
menzoberronzan
 
Сообщений: 45
Зарегистрирован: 27 фев 2013, 12:15
Откуда: Пенза

Re: AGI variables in Bash

Сообщение zzuz » 09 окт 2013, 16:02

Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1658
Зарегистрирован: 21 сен 2010, 13:33

Re: AGI variables in Bash

Сообщение Samael28 » 09 окт 2013, 21:24

Код: выделить все
#!/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
Samael28
 
Сообщений: 1057
Зарегистрирован: 08 янв 2011, 19:32
Откуда: Киев

Re: AGI variables in Bash

Сообщение Bansher » 10 окт 2013, 10:04

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

Re: AGI variables in Bash

Сообщение ded » 10 окт 2013, 10:31

Могучие семимильные костыли.
Что же Вы хотели делать? Какова была конечная цель?
ded
 
Сообщений: 15821
Зарегистрирован: 26 авг 2010, 19:00

Re: AGI variables in Bash

Сообщение Bansher » 15 окт 2013, 13:37

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

Re: AGI variables in Bash

Сообщение Bansher » 15 окт 2013, 13:44

Мда, похоже использовать bash в качестве AGI жуткий гемор.
Bansher
 
Сообщений: 21
Зарегистрирован: 31 янв 2013, 16:01

Re: AGI variables in Bash

Сообщение shumiloff » 15 окт 2013, 17:10

Вполне себе использую давно 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})
.....


Ничего сложного
shumiloff
 
Сообщений: 60
Зарегистрирован: 18 ноя 2010, 20:04

Re: AGI variables in Bash

Сообщение virus_net » 16 окт 2013, 08:46

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

След.

Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH