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

Скрипт контроля баланса для chan_dongle

Вопросы по использованию и настройке IP телефонов, шлюзов и всего прочего

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

Re: Скрипт контроля баланса для chan_dongle

Сообщение Vlad1983 » 14 май 2012, 08:45

С помощью AGI можно навоять, конечно, что угодно, но интерактивности из freepbx оно вряд ли прибавит (хотя можно брать все данные для маршрутизации из БД freepbx, но настройка исходящей там все-таки ущербна и проще под свои нужды гуй написать по нужде).

По мне проще вручную пару строк забить в кастомный контекст чем отлаживать скрипт, тем более необходимости давать права клиенту на настройку сложной маршрутизации пока не было.
ЛС: @rostel
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Скрипт контроля баланса для chan_dongle

Сообщение siv237 » 14 май 2012, 13:01

Пытаюсь написать универсальный парсер баланса. Проверьте плиз, кто использует скрипт выполнив эту строчку.
tail -n 50 /var/www/msg | sed 's/^/;/g' | grep -o -P ".+(?= - USSD -)|(- USSD -)|\d+(?=\:)|([-0-9]+[.,]\d+)"| sed 's/$/;/g' | tr "\n" "_" | sed 's/;_;/\n/g' | sed -r 's/(_)//g' | awk -F ";" '{print $1";"$3";"$4}'|grep -v ';$'|sed s/,/./g
Должно получиться что-то вроде

14.05.2012 12:30:11;000105;671.62
14.05.2012 12:30:12;000102;16.72
14.05.2012 12:30:23;000107;420.04
14.05.2012 12:30:30;000103;310.68
14.05.2012 12:48:14;000105;671.62
14.05.2012 12:48:19;000107;420.04
14.05.2012 12:48:23;000103;310.68
siv237
 
Сообщений: 12
Зарегистрирован: 10 май 2012, 10:46

Re: Скрипт контроля баланса для chan_dongle

Сообщение SolarW » 14 май 2012, 13:20

Вход:
Код: выделить все
14.05.2012 12:00:16 - USSD - dongle2: Na osobovomu rakhunku 1.12263572: avans 138.75 hrn.
14.05.2012 12:00:21 - USSD - dongle4: Balans 11.87hrn, bonus 0.00hrn. Onovlena Melodiya dnia! Super propozyciya! Nabyrai *123*5050#
14.05.2012 12:00:23 - USSD - dongle1: Na rahunku: 109.92 grn. Info pro bonusy na *112# i *119#. Unikal'na BEZKOSHTOVNA muzyka na D-Jingle! Tel. 465
14.05.2012 12:00:25 - USSD - dongle3: Vash balans:zagal'nyi -0,00; paketnyi 0,00; dodatkovyi 0,00 hrn.Perevirka dodatkovykh poslug *121#

Выхлоп:
Код: выделить все
14.05.2012 12:00:16;2;1.12263572
14.05.2012 12:00:21;4;11.87
14.05.2012 12:00:23;1;109.92
14.05.2012 12:00:25;3;-0.00
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Скрипт контроля баланса для chan_dongle

Сообщение siv237 » 14 май 2012, 15:54

Попробуй так:
tail -n 50 /var/www/msg|sed 's/^/;/g'|grep -o -P ".+(?= - USSD -)|(- USSD - \w+(?=\:))|([-0-9]+[.,]\d\d)"|sed 's/$/;/g'|tr "\n" "_"|sed 's/;_;/\n/g'|sed -r 's/(_|- USSD - )//g'|sed 's/,/./g'|awk -F ";" '{print $1";"$2";"$3}' | grep -v ";$"
siv237
 
Сообщений: 12
Зарегистрирован: 10 май 2012, 10:46

Re: Скрипт контроля баланса для chan_dongle

Сообщение siv237 » 14 май 2012, 16:03

Удобный сервис для изучения и тестирования регулярных выражений
http://php-include.ru/regulyarnye-vyrazheniya-onlain

Вставляем в строку для регулярных выражений
.+(?= - USSD -)|(- USSD - \w+(?=\:))|([-0-9]+[.,]\d\d)
А в поле для текста вставляем лог сообщений
Ставим галку global остальные убираем
Выбираем режим Match

Задача получить четкое выделение полей содержащих время, имя устройства, размер баланса.

В примере я ищу баланс исходя из условия что он содержит или не содержит знак минуса и обязательно имеет 2 знака после точки или запятой. Но если баланс идет целым числом или содержит меньше знаков после разделителя, то это выражение не найдет результат.
Хочется всётаки найти универсальный способ, ведь для человека нет проблем понять, где в строке написан именно баланс, а где левая рекламно-мусорная инфа.
siv237
 
Сообщений: 12
Зарегистрирован: 10 май 2012, 10:46

Re: Скрипт контроля баланса для chan_dongle

Сообщение SolarW » 14 май 2012, 16:16

Этот вариант симпатичнее
Код: выделить все
14.05.2012 15:00:08;dongle1;105.45
14.05.2012 15:00:12;dongle4;11.87
14.05.2012 15:00:16;dongle2;1.12
14.05.2012 15:00:29;dongle3;-0.00

За ссылку на тестер регэкспов спасибо - по свободе поиграюсь.
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Скрипт контроля баланса для chan_dongle

Сообщение siv237 » 14 май 2012, 16:43

siv237 писал(а):Хочется всётаки найти универсальный способ, ведь для человека нет проблем понять, где в строке написан именно баланс, а где левая рекламно-мусорная инфа.


cat /var/www/msg|grep 000101|grep USSD|sed 's/^/;/g'|grep -o -P ".+(?= - USSD -)|(- USSD - \w+(?=\:))|([-0-9]+([.,]\d+)?)"|sed 's/$/;/g'|tr "\n" "_"|sed 's/;_;/\n/g'|sed -r 's/(_|- USSD - )//g'|sed 's/,/./g'|awk -F ";" '{print $1";"$2";"$3}' | grep -P -v "(;$|^;)" | tail -n 10

Вроде ищет все как надо и минусовые и целые балансы и без ограничения на длинну, но вот когда попадается вот такая коза от провайдера
12.05.2012 10:00:13 - USSD - 000101: Balans:212,71r Khity vmesto gudkov-1mes.besplatno:*728*99#
12.05.2012 10:30:12 - USSD - 000101: Nastroika servisa do 19:00 ch, vremya Vladivostoka. Prinosim svoi izvineniya, MTS
12.05.2012 11:00:16 - USSD - 000101: Nastroika servisa do 19:00 ch, vremya Vladivostoka. Prinosim svoi izvineniya, MTS
12.05.2012 11:14:36 - USSD - 000101: Balans:212,71r Khity vmesto gudkov-1mes.besplatno:*728*99#
то 19 пишется как баланс :(
siv237
 
Сообщений: 12
Зарегистрирован: 10 май 2012, 10:46

Re: Скрипт контроля баланса для chan_dongle

Сообщение Vlad1983 » 14 май 2012, 17:40

в извратах толк знаете...
оператору ничего не стоит поменять расположение полей в выхлопе.
потом переписывать правила такой длины, остатки моска свернете.
индивидуальные под каждого оператора менее трудозатратен в дальнейшем обслуживании.
ЛС: @rostel
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: Скрипт контроля баланса для chan_dongle

Сообщение SolarW » 14 май 2012, 19:14

Склоняюсь к мысли Vlad1983 - если под каждого оператора персональный обработчик то:
- он проще (даже я разобрался :-) )
- соответственно проще разобраться если что-то перестанет работать
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: Скрипт контроля баланса для chan_dongle

Сообщение siv237 » 14 май 2012, 19:58

Ну это не замена прямого обработчика, а скорее дополнение. Например может сократить время на запуск системы, людям слабо знакомым с sed grep regexp...
Просто выбираем для какого модема какой метод использовать.
Добавил в скрипт:

# Универсальный парсер. Использовать только в тестовых целях.
if [ "${oper}" = "UNV" ]
then cat $opermsg|grep $num|grep USSD|sed 's/^/;/g'|grep -o -P ".+(?= - USSD -)|(- USSD - \w+(?=\:))|([-0-9]+([.,]\d+)?)"|sed 's/$/;/g'|tr "\n" "_"|sed 's/;_;/\n/g'|sed -r 's/(_|- USSD - )//g'|sed 's/,/./g'|awk -F ";" '{print $1";"$3";"$2}' | grep -P -v "(;$|^;)" | tail -n $tn >>tmpallbalans
fi
siv237
 
Сообщений: 12
Зарегистрирован: 10 май 2012, 10:46

Пред.След.

Вернуться в VoIP оборудование

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

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

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