РЕШЕНО: Asterisk (SIP) + UTM5

Технические вопросы по UTM 5.0
Закрыто
VooDoo
Сообщения: 71
Зарегистрирован: Вт сен 18, 2007 10:15

РЕШЕНО: Asterisk (SIP) + UTM5

Сообщение VooDoo »

В общем ломал голову как бы лучше сдружить эти софтины.
Начитался здешних тем, и пришел к такой вот схеме:

За основу были взяты две статьи:

http://www.braams.ru/asterisk-utm (Обсчет звонков)
http://voip.rus.net/tiki-index.php?page=asterisk-utm (Авторизация)

Из который взял по половине идеи и скриптов , вот что получилось:

Имеем Asterisk 1.4.42 и UTM5


1. Все устанавливаем как описано в первой статье
2. Все устанавливаем как написано во второй статье, кроме ast-rad-acc.pl - этот демон нам не понадобится, собственно у меня и не получилось его запустить
Ничего дополнительно патчить не нужно

Для примера имеем транк до Cisco и пользователя 7000
Соответственно этот же пользователь прописан в биллинге (единственный минус, приходится дублировать данные, но это поправимо )



После всех установой пишем конфиги:

Подгружаем agi
modules.conf

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

load => res_agi.so

Вписываем юзверей
users.conf

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

[cisco_trunk]
context=in
type=friend
host=xx.xx.xx.xx
canreinvite=no
disallow = all
allow=gsm
allow=ulaw
allow=alaw
insecure=port,invite

[7000]
type=friend
secret=7000
context=sip_auth
host=dynamic
disallow=all
allow=ulaw
allow=alaw
qualify=yes
callerid = <7000>

extensions.conf

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

&#91;general&#93;
static=yes
clearglobalvars=yes

&#91;globals&#93;
RADIUS_Server=ХХ.ХХ.ХХ.ХХ
RADIUS_Secret=secret
RADIUS_Auth_Port=1812
RAIUS_Acct_Port=1813
Acct_Update_Timeout=60
NAS_IP_Address=ХХ.ХХ.ХХ.ХХ

&#91;default&#93;

&#91;in&#93;
exten => s,1,Agi&#40;utm5-agi.py,start,$&#123;ARG1&#125;,$&#123;ARG2&#125;,$&#123;ARG3&#125;,$&#123;ARG4&#125;&#41;;
exten => _XXXX,1,Set&#40;id=$&#123;UNIQUEID&#125;&#41;;
exten => _XXXX,n,Set&#40;src=$&#123;CALLERID&#40;num&#41;&#125;&#41;;
exten => _XXXX,n,Set&#40;dst=$&#123;EXTEN&#125;&#41;;
Dial&#40;SIP/$&#123;EXTEN&#125;,,L&#40;$&#123;maxdur&#125;&#41;M&#40;utm5^$&#123;src&#125;^$&#123;id&#125;^$&#123;src&#125;^$&#123;dst&#125;&#41;&#41;&#41;
exten => _XXXX,n, Hangup&#40;&#41;

exten => h,1,DeadAgi&#40;utm5-agi.py,stop,$&#123;src&#125;,$&#123;id&#125;,$&#123;src&#125;,$&#123;dst&#125;&#41;;


&#91;sip_auth&#93;
exten => _X.,1,Set&#40;SIP_Authorization=$&#123;SIP_HEADER&#40;Proxy-Authorization&#41;&#125;&#41;
exten => _X.,n,AGI&#40;agi-rad-auth.agi|Mode=SIP&#41;
exten => _X.,n,Goto&#40;macro-utm5,$&#123;EXTENSION&#125;,1&#41;
exten => _X.,n,Hangup&#40;&#41;


&#91;macro-utm5&#93;

exten => s,1,Agi&#40;utm5-agi.py,start,$&#123;ARG1&#125;,$&#123;ARG2&#125;,$&#123;ARG3&#125;,$&#123;ARG4&#125;&#41;;

exten => _X.,1,Set&#40;id=$&#123;UNIQUEID&#125;&#41;;
exten => _X.,n,Set&#40;src=$&#123;CALLERID&#40;num&#41;&#125;&#41;;
exten => _X.,n,Set&#40;dst=$&#123;EXTEN&#125;&#41;;
exten => _X.,n,Agi&#40;utm5-agi.py,auth,$&#123;src&#125;,$&#123;src&#125;,$&#123;src&#125;,$&#123;dst&#125;&#41;;
exten => _X.,n,Dial&#40;SIP/$&#123;EXTEN&#125;@cisco_trunk,,L&#40;$&#123;maxdur&#125;&#41;M&#40;utm5^$&#123;src&#125;^$&#123;id&#125;^$&#123;src&#125;^$&#123;dst&#125;&#41;&#41;
exten => _X.,n,Hangup&#40;&#41;

exten => h,1,DeadAgi&#40;utm5-agi.py,stop,$&#123;src&#125;,$&#123;id&#125;,$&#123;src&#125;,$&#123;dst&#125;&#41;;
В итоге получается:
Вполне работоспособный биллинг, который в реальном времени обрабатывает звонки.
При звонке сперва срабатывает agi-rad-auth.agi этот скрипт нужен для проверки блокировки абонента, если блокировка , то вызовов не будет проходить (также скрипт обрабатывает, если в утмке настроено количество одновременных сессий), далее при удачной регистрации переходим на macro-utm5 , который уже отправляет все значения радиусу.
В [in] идет обработка входящих звонков, которые также уходят в утм.

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

kara
Сообщения: 125
Зарегистрирован: Вс мар 21, 2010 21:02

Сообщение kara »

А как будет обсчитываться переадресация?

VooDoo
Сообщения: 71
Зарегистрирован: Вт сен 18, 2007 10:15

Сообщение VooDoo »

Какая переадресация и Куда ? поясните подробнее схему ?

kara
Сообщения: 125
Зарегистрирован: Вс мар 21, 2010 21:02

Сообщение kara »

Входящий звонок на *

->
Аппарат абонента отключен(занят) от *

->
настроена переадресация по недоступности аппарата на мобильный(или любая другая)
->
В конечном счете от имени Asterisk инициируется исходящий вызов
в качестве инициатора светится локальный канал, биллинг считает неверно

VooDoo
Сообщения: 71
Зарегистрирован: Вт сен 18, 2007 10:15

Сообщение VooDoo »

Да, здесь возникают некие трудности. Но я не собираюсь оказывать услуги по переадресации, поэтому мне мне этот вариант подходит.
Но если кто то решит эту проблему, хотелось бы взглянуть на решение.

rimidal
Сообщения: 53
Зарегистрирован: Пт янв 29, 2010 22:36

Сообщение rimidal »

Для аккаунтинга можно воспользоваться утилитой utm5_unif.

В нужный контекст дилплана добавляем:

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

exten => h,1,System&#40;/netup/utm5/bin/utm5_unif_loader.sh "$&#123;CDR&#40;src&#41;&#125;" "$&#123;CDR&#40;dst&#41;&#125;" "$&#123;CDR&#40;billsec&#41;&#125;" "$&#123;CDR&#40;uniqueid&#41;&#125;" "$&#123;CDR&#40;start
&#41;&#125;" "$&#123;CDR&#40;accountcode&#41;&#125;"&#41;;
utm5_unif_loader.sh - это самописный скрипт который формирует временный файл с cdr записью и затем вызывает утилиту utm5_unif

rudf
Сообщения: 150
Зарегистрирован: Чт дек 15, 2011 08:55
Откуда: Москва

Сообщение rudf »

utm5_unif_loader.sh - это самописный скрипт который формирует
временный файл с cdr записью и затем вызывает утилиту utm5_unif

utm5_unif вроде умеет читать из stdin с помощью ключа -s -.

rimidal
Сообщения: 53
Зарегистрирован: Пт янв 29, 2010 22:36

Сообщение rimidal »

utm5_unif вроде умеет читать из stdin с помощью ключа -s -.
Возможно. Не проверял. Но логи все равно писать надо. Без скрипта не обойтись.
Хотя, кому как удобнее.

Есть правда минус нет статусов текущих звонков и кодов завершения.

rudf
Сообщения: 150
Зарегистрирован: Чт дек 15, 2011 08:55
Откуда: Москва

Сообщение rudf »

>>Возможно. Не проверял. Но логи все равно писать надо. Без скрипта не обойтись.
>>Хотя, кому как удобнее.

Логи опять-таки пишутся с помощью настройки переменных log* в файле utm5_unif.cfg. Кроме того можно использовать tee для передачи параметров в свой собственный лог.

>>Есть правда минус нет статусов текущих звонков и кодов завершения.

Это да.

Закрыто