FreePBX ограничить длительность исходящих через транк
Есть 3g модем huawei e1550 и через него звоним на мобильные номера. Так дешевле. Оператор, чья симка там вставлена ограничивает количество безплатных минут. 70 минут в день дает. Можно как-то сделать чтобы контролировать не вышли ли мы за пределы отведенного нам безплатного времени? Если это слишком сложно то подойдет и другой вариант: ограничить длительность звонков через этот транк, до 5 минут. Ну то есть чтобы звонок автоматически прерывался через 5 минут, если это был исходящий с этой datacatd если входящий то конечно безлим. Помогите кто чем может)
Стоит FreePBX 2.9 в конфиги лезть пытался но там этот Freepbx так все для меня запутанно пишет что я не разберусь.
Лучший вариант - это скрипт, который с переодичностью опрашивает количество минут из CDR базы и выключает модем по достижению ограничения - поиском ищите.
Лучший вариант - это скрипт, который с переодичностью опрашивает количество минут из CDR базы и выключает модем по достижению ограничения - поиском ищите.
Про Dial я знаю, куда тот Dial писать я в конфигах не разбираюсь можете сказать куда конкретно?
А скрипт как написать?) ^^
| Цитата: |
| А скрипт как написать?) ^^ |
Обычно пишут с помощью клавиатуры.
Ваш Капитан.
_________________
Asterisk 1.4.30 @ Ubuntu 9.04 + Cisco MC3810 + NEC NEAX 2000IPS + Polycom IP Phones
In case, if you have a lot of calls, you will need an mysql command line tools to process CDR's from the DB.
extensions.conf
| Код: |
| [check_monthly_limit] exten => _34XXXXXXXXX,1,Set(monthly_limit_condition=${SHELL(/etc/asterisk/bin/check_monthly_limit ${CALLERID(num)} 250)}) exten => _34XXXXXXXXX,2,NoOp(${CALLERID(num)} is ${monthly_limit_condition}) exten => _34XXXXXXXXX,3,Goto(${monthly_limit_condition}) exten => _34XXXXXXXXX,4(out_of_limit),Playback(silence/4&beep&beep&beep&silence/1&account-balance-is&low&silence/2&account-bala$ exten => _34XXXXXXXXX,5,Busy(8) exten => _34XXXXXXXXX,6,Hangup exten => _34XXXXXXXXX,7(within_limit),NoOp(within limit, let's go!) exten => _34XXXXXXXXX,8,.... |
cat check_monthly_limit
| Код: |
| #!/bin/sh # source number from_number=$1 # limit (in minutes) per A-number per month monthly_limit=$2 if [ "${from_number}" = "" -o "${monthly_limit}" = "" ]; then echo echo "Use this command with argument containing source phone number in e164 format and limit in minutes per month" echo " to setup: ./check_monthly_limit 1234567890 300" return 1 fi # DEBUG! # source number # from_number="1234567890" # limit (in minutes) per A-number per month # monthly_limit=300 # date in format YYYY-MM current_month=`date "+%Y-%m-"` # TOTAL IN FIRST GREP USER # ",\"Dial\",\"SIP\/gsm2\/" # CDR! # grep "\"\",\"${from_number}\"," /var/log/asterisk/cdr-csv/Master.csv | grep "\",\"${current_month}" | sed 's/,60,T//g' | awk -F ',' '{print $2","$3","$8","$9","$10","$13","$14","int(($14+59)/60)*60","$15}' | sed 's/"//g' # COUNT OF SECONDS WITHOUT ROUNDING # grep "\"\",\"${from_number}\"," /var/log/asterisk/cdr-csv/Master.csv | grep "\",\"${current_month}" | sed 's/,60,T//g' | awk -F ',' '{print $14}' | awk '{s+=$1} END {print s}' # COUNT OF SECONDS WITH ROUNDING # grep "\"\",\"${from_number}\"," /var/log/asterisk/cdr-csv/Master.csv | grep "\",\"${current_month}" | sed 's/,60,T//g' | awk -F ',' '{print int(($14+59)/60)*60}' | awk '{s+=$1} END {print s}' # COUNT ./stats | sed 's/,60,T//g' | awk -F ',' '{print $14}' | awk '{s+=$1} END {print s}' # COUNT echo -e "59\n2" | awk '{s+=int(($1+59)/60)*60} END {print s}' # COOL CDR ./stats | sed 's/,60,T//g' | awk -F ',' '{print $2","$3","$8","$9","$10","$13","$14","int(($14+59)/60)*60","$15}' | sed 's/"//g' talked_already=`grep "\"\",\"${from_number}\"," /var/log/asterisk/cdr-csv/Master.csv | grep "\",\"${current_month}" | sed 's/,60,T//g' | awk -F ',' '{print $14}' | awk '{s+=$1} END {print s}' | awk '{print int(($1+59)/60)}'` if [ "${talked_already}" -le "${monthly_limit}" ]; then # here we allow asterisk to make outgoing call echo -n "within_limit" else # here we send an email message to phone line owner and won't allow call echo -n "out_of_limit" fi |