Все собрал без проблем, только при загрузки астера мне вышла ощибка что модуль cdr загрузить не получилось.
Проверил в usr/lib/asterisk/modules лежить фаил cdr_radius.so, но при команде module load cdr_radius.so выдается следующая ощибка
| Код: |
| [Jun 9 22:46:13] WARNING[26078]: loader.c:363 load_dynamic_module: Error loading module 'cdr_radius.so': libradiusclient-ng.so.2: cannot open shared object file: No such file or directory [Jun 9 22:46:13] WARNING[26078]: loader.c:657 load_resource: Module 'cdr_radius.so' could not be loaded. |
Посмотрел в папке с radiosclient этот фаил есть.
Подскажите может кто знает.
Или похожая по названию,
Засунь её в /usr/lib и всё буит ОК.
| Код: |
| libradiusclient-ng.so.2.0.0 и libradiusclient-ng.so.2 |
Все насройки сделал, модуль видно что работает, но когда идет звонок появляется следующая ощибка.
| Код: |
| cdr_radius.c:227 radius_log: Failed to record Radius CDR record! |
может его создать надо руками, если в SQL - то аккаунт, база, порт, сервер. Может еще в какие-нить сервисы.
Если не секрет - чем (какой биллинг) обсчитываете CDR?
| Код: |
| # General settings auth_order radius login_tries 4 login_timeout 60 nologin /etc/nologin issue /usr/local/etc/radiusclient-ng/issue # RADIUS settings authserver 10.11.1.11:1912 acctserver 10.11.1.11:1913 #здесь секрет для радиус сервера указал своего servers /usr/local/etc/radiusclient-ng/servers dictionary /usr/local/etc/radiusclient-ng/dictionary login_radius /usr/local/sbin/login.radius seqfile /var/run/radius.seq mapfile /usr/local/etc/radiusclient-ng/port-id-map default_realm radius_timeout 10 radius_retries 3 bindaddr 10.11.1.35 # LOCAL settings login_local /bin/login |
заменил сожержимое файла login.radius скриптом из примера из папки /radiusclient-ng-0.5.6/login.radius/migs, т.к. говорилось в доке что его надо заменить чемто содержательным.
Такая ситуация, астериск через радиусклиент этот не отправляет пакеты на радиус биллинга. Хотя проверка авторизации через radtest проходит с такими параметрами, которые указал в кофиге.
связываю с биллингом bgbilling 4.4
Подскажите как дебагить? Спасибо большое.
Маленький вопрос, поискал тут на форуме инфу по интеграции астериска с биллингом посредством радиуса. Здесь неоднократно писали что нет готового официального решения для работы через радиус и предлагали людям написать решение самим. Можете сказать последнюю информацию по этому поводу?
Спасибо большое!
_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
Интеграцию Asterisk'а с Billing'ом можно осуществить двумя путями:
Используя скрипты предобработки RADIUS запросов, заменить получаемые от Asterisk'а атрибуты Digium на атрибуты Cisco. Положительной стороной данного решения можно считать отсутствие необходимости изменения программного кода Asterisk'а. Отрицательной - сложность совмещения Asterisk'а с другими системами биллинга, базирующимися на протоколе Radius (если возникнет такая необходимость). В данной статье рассматривается именно этот вариант интеграции.
Посредством изменения программного кода Asterisk'а, реализовать возможность отправки им атрибутов Cisco. Преимущества данного решения - более простая интеграция с Billing'ом за счет использования de facto стандартных атрибутов Cisco. К отрицательным сторонам можно отнести необходимость изменения программного кода Asterisk'а, которое требует несколько углубленных знаний.
В статье мы не будем подробно касаться вопросов, связанных с общими настройками Linux, Asterisk и Billing, описанными в документации, а только рассмотрим те дополнительные действия, которые необходимо будет предпринять для интеграции Asterisk'а с BGBilling'ом. Изложенное ниже описание решения работает у автора данной статьи в тестовом режиме и может содержать некоторые ошибки, поэтому не рекомендуется использовать эти рекомендации при предоставлении коммерческих услуг без полного понимания принципов и алгоритмов работы всех частей системы.
В общих чертах, описанный ниже скрипт делает следующее:
Заменяются атрибуты вендора Digium (22736) на аналогичные атрибуты вендора Cisco (9)
Если в поле accountcode стандартной статистики Астериска (CDR) присутствует какое-либо значение, то оно подставляется в атрибут User-Name, если значения нет, то в User-Name подставляется номер вызывающего абонента
Если в поле userfield стандартной статистики Астериска (CDR) присутствует значение "answer", то оно подставляется в атрибут h323-call-origin, при ином значении или отсутствии значения в поле userfield, в h323-call-origin будет установлено значение originate. Соответственно на основании этого значения устанавливается тип (направление) звонка
Итак, подразумевается, что у нас имеется:
Установленная и настроенная ОС Linux, на которой будет установлен Asterisk
Исходный дистрибутив Asterisk (asterisk-1.4.хх.tar.gz)
Исходный дистрибутив radiusclient-ng (radiusclient-ng-0.5.6.tar.gz)
Установленный и настроенный Billing
Установка:
1. Разворачиваем дистрибутив Asterisk и radiusclient-ng:
| Цитата: |
| cd /usr/local/src tar zxvf asterisk-1.4.хх.tar.gz tar zxvf radiusclient-ng-0.5.6.tar.gz |
2. Собираем radiusclient-ng
| Цитата: |
| cd ./radiusclient-ng-0.5.6 ./configure make install |
3. Собираем asterisk
| Цитата: |
| cd ../asterisk-1.4.хх ./configure make menuconfig |
На данном этапе необходимо проверить и при необходимости включить использование cdr_radius (находится в разделе [2. Call Detail Recording]). Если указанная опция недоступна, то необходимо проверить корректность установки radiusclient-ng
| Цитата: |
| make install |
На этом установку можно считать оконченной. Приступаем к настройке.
Настройка:
1. Настраиваем radiusclient-ng в соотвествии с документацией. По умолчанию, файлы конфигурации radiusclient-ng располагаются в директории /usr/local/etc/radiusclient-ng. Для корректной работы программы, возможно прийдется создать символьную ссылку на эту директорию с помощью команды
| Цитата: |
| ln -s /usr/local/etc/radiusclient-ng /etc |
В файле /usr/local/etc/radiusclient-ng/radiusclient.conf изменяем следующие настройки:
| Цитата: |
| auth_order radius authserver address:port # Здесь подставляем адрес сервера Billing и порт, указанный в auth.port BGRadiusVoip/radius.properties acctserver address:port # Здесь подставляем адрес сервера Billing и порт, указанный в acct.port BGRadiusVoip/radius.properties |
В файле /usr/local/etc/radiusclient-ng/radiusclient.conf добавляем строку для нашего сервера BGRadiusVoip, содержащую адрес сервера и пароль, который в дальнейшем будет указан в конфигурации NAS'а в RadiusVoip.
Для работы radiusclient-ng с атрибутами Cisco и Digium, необходимо добавить словари атрибутов. Приложенный файл необходимо поместить в /usr/local/etc/radiusclient-ng/dictionary.cisco
| Цитата: |
| # -*- text -*- # # dictionary.cisco # # Accounting VSAs originally by # "Marcelo M. Sosa Lugones" # # Version: $Id: dictionary.cisco,v 1.12.4.1 2005/11/30 22:17:21 aland Exp $ # # For documentation on Cisco RADIUS attributes, see: # # http://www.cisco.com/univercd/cc/td/doc/ ... vsaig3.htm # VENDOR Cisco 9 # # Standard attribute # BEGIN-VENDOR Cisco ATTRIBUTE Cisco-AVPair 1 string vendor=Cisco ATTRIBUTE Cisco-NAS-Port 2 string vendor=Cisco # # T.37 Store-and-Forward attributes. # ATTRIBUTE Cisco-Fax-Account-Id-Origin 3 string vendor=Cisco ATTRIBUTE Cisco-Fax-Msg-Id 4 string vendor=Cisco ATTRIBUTE Cisco-Fax-Pages 5 string vendor=Cisco ATTRIBUTE Cisco-Fax-Coverpage-Flag 6 string vendor=Cisco ATTRIBUTE Cisco-Fax-Modem-Time 7 string vendor=Cisco ATTRIBUTE Cisco-Fax-Connect-Speed 8 string vendor=Cisco ATTRIBUTE Cisco-Fax-Recipient-Count 9 string vendor=Cisco ATTRIBUTE Cisco-Fax-Process-Abort-Flag 10 string vendor=Cisco ATTRIBUTE Cisco-Fax-Dsn-Address 11 string vendor=Cisco ATTRIBUTE Cisco-Fax-Dsn-Flag 12 string vendor=Cisco ATTRIBUTE Cisco-Fax-Mdn-Address 13 string vendor=Cisco ATTRIBUTE Cisco-Fax-Mdn-Flag 14 string vendor=Cisco ATTRIBUTE Cisco-Fax-Auth-Status 15 string vendor=Cisco ATTRIBUTE Cisco-Email-Server-Address 16 string vendor=Cisco ATTRIBUTE Cisco-Email-Server-Ack-Flag 17 string vendor=Cisco ATTRIBUTE Cisco-Gateway-Id 18 string vendor=Cisco ATTRIBUTE Cisco-Call-Type 19 string vendor=Cisco ATTRIBUTE Cisco-Port-Used 20 string vendor=Cisco ATTRIBUTE Cisco-Abort-Cause 21 string vendor=Cisco # # Voice over IP attributes. # ATTRIBUTE h323-remote-address 23 string vendor=Cisco ATTRIBUTE h323-conf-id 24 string vendor=Cisco ATTRIBUTE h323-setup-time 25 string vendor=Cisco ATTRIBUTE h323-call-origin 26 string vendor=Cisco ATTRIBUTE h323-call-type 27 string vendor=Cisco ATTRIBUTE h323-connect-time 28 string vendor=Cisco ATTRIBUTE h323-disconnect-time 29 string vendor=Cisco ATTRIBUTE h323-disconnect-cause 30 string vendor=Cisco ATTRIBUTE h323-voice-quality 31 string vendor=Cisco ATTRIBUTE h323-ivr-out 32 string vendor=Cisco ATTRIBUTE h323-gw-id 33 string vendor=Cisco ATTRIBUTE h323-incoming-conf-id 35 string vendor=Cisco ATTRIBUTE h323-credit-amount 101 string vendor=Cisco ATTRIBUTE h323-credit-time 102 string vendor=Cisco ATTRIBUTE h323-return-code 103 string vendor=Cisco ATTRIBUTE h323-prompt-id 104 string vendor=Cisco ATTRIBUTE h323-time-and-day 105 string vendor=Cisco ATTRIBUTE h323-redirect-number 106 string vendor=Cisco ATTRIBUTE h323-preferred-lang 107 string vendor=Cisco ATTRIBUTE h323-redirect-ip-address 108 string vendor=Cisco ATTRIBUTE h323-billing-model 109 string vendor=Cisco ATTRIBUTE h323-currency 110 string vendor=Cisco ATTRIBUTE subscriber 111 string vendor=Cisco ATTRIBUTE gw-rxd-cdn 112 string vendor=Cisco ATTRIBUTE gw-final-xlated-cdn 113 string vendor=Cisco ATTRIBUTE remote-media-address 114 string vendor=Cisco ATTRIBUTE release-source 115 string vendor=Cisco ATTRIBUTE gw-rxd-cgn 116 string vendor=Cisco ATTRIBUTE gw-final-xlated-cgn 117 string vendor=Cisco # SIP Attributes ATTRIBUTE call-id 141 string vendor=Cisco ATTRIBUTE session-protocol 142 string vendor=Cisco ATTRIBUTE method 143 string vendor=Cisco ATTRIBUTE prev-hop-via 144 string vendor=Cisco ATTRIBUTE prev-hop-ip 145 string vendor=Cisco ATTRIBUTE incoming-req-uri 146 string vendor=Cisco ATTRIBUTE outgoing-req-uri 147 string vendor=Cisco ATTRIBUTE next-hop-ip 148 string vendor=Cisco ATTRIBUTE next-hop-dn 149 string vendor=Cisco ATTRIBUTE sip-hdr 150 string vendor=Cisco # # Extra attributes sent by the Cisco, if you configure # "radius-server vsa accounting" (requires IOS11.2+). # ATTRIBUTE Cisco-Multilink-ID 187 integer vendor=Cisco ATTRIBUTE Cisco-Num-In-Multilink 188 integer vendor=Cisco ATTRIBUTE Cisco-Pre-Input-Octets 190 integer vendor=Cisco ATTRIBUTE Cisco-Pre-Output-Octets 191 integer vendor=Cisco ATTRIBUTE Cisco-Pre-Input-Packets 192 integer vendor=Cisco ATTRIBUTE Cisco-Pre-Output-Packets 193 integer vendor=Cisco ATTRIBUTE Cisco-Maximum-Time 194 integer vendor=Cisco ATTRIBUTE Cisco-Disconnect-Cause 195 integer vendor=Cisco ATTRIBUTE Cisco-Data-Rate 197 integer vendor=Cisco ATTRIBUTE Cisco-PreSession-Time 198 integer vendor=Cisco ATTRIBUTE Cisco-PW-Lifetime 208 integer vendor=Cisco ATTRIBUTE Cisco-IP-Direct 209 integer vendor=Cisco ATTRIBUTE Cisco-PPP-VJ-Slot-Comp 210 integer vendor=Cisco ATTRIBUTE Cisco-PPP-Async-Map 212 integer vendor=Cisco ATTRIBUTE Cisco-IP-Pool-Definition 217 string vendor=Cisco ATTRIBUTE Cisco-Assign-IP-Pool 218 integer vendor=Cisco ATTRIBUTE Cisco-Route-IP 228 integer vendor=Cisco ATTRIBUTE Cisco-Link-Compression 233 integer vendor=Cisco ATTRIBUTE Cisco-Target-Util 234 integer vendor=Cisco ATTRIBUTE Cisco-Maximum-Channels 235 integer vendor=Cisco ATTRIBUTE Cisco-Data-Filter 242 integer vendor=Cisco ATTRIBUTE Cisco-Call-Filter 243 integer vendor=Cisco ATTRIBUTE Cisco-Idle-Limit 244 integer vendor=Cisco ATTRIBUTE Cisco-Account-Info 250 string vendor=Cisco ATTRIBUTE Cisco-Service-Info 251 string vendor=Cisco ATTRIBUTE Cisco-Command-Code 252 string vendor=Cisco ATTRIBUTE Cisco-Control-Info 253 string vendor=Cisco ATTRIBUTE Cisco-Xmit-Rate 255 integer vendor=Cisco VALUE Cisco-Disconnect-Cause Unknown 2 VALUE Cisco-Disconnect-Cause CLID-Authentication-Failure 4 VALUE Cisco-Disconnect-Cause No-Carrier 10 VALUE Cisco-Disconnect-Cause Lost-Carrier 11 VALUE Cisco-Disconnect-Cause No-Detected-Result-Codes 12 VALUE Cisco-Disconnect-Cause No-Detected-Result-Codes 13 VALUE Cisco-Disconnect-Cause User-Ends-Session 20 VALUE Cisco-Disconnect-Cause Idle-Timeout 21 VALUE Cisco-Disconnect-Cause Exit-Telnet-Session 22 VALUE Cisco-Disconnect-Cause No-Remote-IP-Addr 23 VALUE Cisco-Disconnect-Cause Exit-Raw-TCP 24 VALUE Cisco-Disconnect-Cause Password-Fail 25 VALUE Cisco-Disconnect-Cause Raw-TCP-Disabled 26 VALUE Cisco-Disconnect-Cause Control-C-Detected 27 VALUE Cisco-Disconnect-Cause EXEC-Program-Destroyed 28 VALUE Cisco-Disconnect-Cause Timeout-PPP-LCP 40 VALUE Cisco-Disconnect-Cause Failed-PPP-LCP-Negotiation 41 VALUE Cisco-Disconnect-Cause Failed-PPP-PAP-Auth-Fail 42 VALUE Cisco-Disconnect-Cause Failed-PPP-CHAP-Auth 43 VALUE Cisco-Disconnect-Cause Failed-PPP-Remote-Auth 44 VALUE Cisco-Disconnect-Cause PPP-Remote-Terminate 45 VALUE Cisco-Disconnect-Cause PPP-Closed-Event 46 VALUE Cisco-Disconnect-Cause Session-Timeout 100 VALUE Cisco-Disconnect-Cause Session-Failed-Security 101 VALUE Cisco-Disconnect-Cause Session-End-Callback 102 VALUE Cisco-Disconnect-Cause Invalid-Protocol 120 END-VENDOR Cisco |
Приложенный файл необходимо поместить в /usr/local/etc/radiusclient-ng/dictionary.digium
| Цитата: |
| # # Digium's Asterisk specific radius attributes # markster@digium.com # # VENDOR Digium 22736 BEGIN-VENDOR Digium ATTRIBUTE Asterisk-Acc-Code 101 string Digium ATTRIBUTE Asterisk-Src 102 string Digium ATTRIBUTE Asterisk-Dst 103 string Digium ATTRIBUTE Asterisk-Dst-Ctx 104 string Digium ATTRIBUTE Asterisk-Clid 105 string Digium ATTRIBUTE Asterisk-Chan 106 string Digium ATTRIBUTE Asterisk-Dst-Chan 107 string Digium ATTRIBUTE Asterisk-Last-App 108 string Digium ATTRIBUTE Asterisk-Last-Data 109 string Digium ATTRIBUTE Asterisk-Start-Time 110 string Digium ATTRIBUTE Asterisk-Answer-Time 111 string Digium ATTRIBUTE Asterisk-End-Time 112 string Digium ATTRIBUTE Asterisk-Duration 113 integer Digium ATTRIBUTE Asterisk-Bill-Sec 114 integer Digium ATTRIBUTE Asterisk-Disposition 115 string Digium ATTRIBUTE Asterisk-AMA-Flags 116 string Digium ATTRIBUTE Asterisk-Unique-ID 117 string Digium ATTRIBUTE Asterisk-User-Field 118 string Digium END-VENDOR Digium |
В файле /usr/local/etc/radiusclient-ng/dictionary необходимо добавить строки:
| Цитата: |
| $INCLUDE dictionary.cisco $INCLUDE dictionary.digium |
2. Настраиваем RadiusVoip. Настройка сводится к описанному в документации добавлению NAS'а в модуле IP-телефонии и добавлению словаря с атрибутами Digium для RadiusVoip. Указываем имя NAS'а, адрес IP, пароль. Устанавливаем Вендор Cisco (он должен присутствовать в конфигурации модуля). Создаем конфигурацию NAS'а и помимо параметра service, указываем:
| Цитата: |
| auth.in=VOIP/answer auth.out=VOIP/originate acct.in=VOIP/answer acct.out=VOIP/originate |
На закладке Скрипт предобработки в конфигурации созданного NAS'а добавляем следующий скрипт:
| Цитата: |
| import bitel.billing.server.radius.*; if (request.getIntAttribute(RadiusStandartAttributes.Acct_Status_Type) == 2) { // Устанавливаем Calling-Station-Id = Asterisk-Src CallingStationId = request.getVendorAttributes(22736, 102).get(0).getStringValue(); request.setStringAttribute(RadiusStandartAttributes.Calling_Station_Id, CallingStationId); // Проверяем наличие Asterisk-Acc-Code, и если он существует, // то устанавливаем User-Name = Asterisk-Acc-Code, если не существует, // то устанавливаем User-Name = Calling-Station-Id UserName = request.getVendorAttributes(22736, 101); if (UserName != null) request.setStringAttribute(RadiusStandartAttributes.User_Name, UserName.get(0).getStringValue()); else request.setStringAttribute(RadiusStandartAttributes.User_Name, CallingStationId); // Устанавливаем Called-Station-Id = Asterisk-Dst request.setStringAttribute(RadiusStandartAttributes.Called_Station_Id, request.getVendorAttributes( 22736, 103 ).get(0).getStringValue()); // Проверяем наличие Asterisk-User-Field, и если такой существует, // то на основании его значения устанавливаем h323-call-origin CallType = request.getVendorAttributes(22736, 118); if (CallType != null && CallType.get(0).getStringValue() .equals("answer")) { request.setVendorStringAttribute(26, "answer"); request.setFlag(2); } else { request.setVendorStringAttribute(26, "originate"); request.setFlag(1); } // Устанавливаем h323-call-type = VOIP request.setVendorStringAttribute(27, "VOIP"); // Устанавливаем Acct-Session-Time = Asterisk-Bill-Sec request.setIntAttribute(RadiusStandartAttributes.Acct_Session_Time, request.getVendorAttributes( 22736, 114 ).get(0).getIntValue()); // Устанавливаем h323-setup-time = Asterisk-Start-Time request.setVendorStringAttribute(25, request.getVendorAttributes( 22736, 110 ).get(0).getStringValue()); // Устанавливаем h323-connect-time = Asterisk-Answer-Time request.setVendorStringAttribute(28, request.getVendorAttributes( 22736, 111 ).get(0).getStringValue()); // Устанавливаем h323-disconnect-time = Asterisk-End-Time request.setVendorStringAttribute(29, request.getVendorAttributes( 22736, 112 ).get(0).getStringValue()); // Устанавливаем h323-disconnect-cause на основании Asterisk-Disposition AsteriskDisposition = request.getVendorAttributes( 22736, 115 ).get(0).getStringValue(); if (AsteriskDisposition .equals("ANSWERED")) request.setVendorStringAttribute(30, "0"); else if (AsteriskDisposition .equals("NO ANSWER")) request.setVendorStringAttribute(30, "5"); else if (AsteriskDisposition .equals("BUSY")) request.setVendorStringAttribute(30, "17"); else request.setVendorStringAttribute(30, "22"); // Устанавливаем h323-conf-id = Acct-Session-Id request.setVendorStringAttribute(24, request.getStringAttribute(RadiusStandartAttributes.Acct_Session_Id)); } // Конец if (Acct_Status_Type == 2) |
В конце файла BGBilling/BGRadiusVoip/dictionary.xml добавляем (перед строкой )атрибуты Digium:
| Цитата: |
| ^ 3. Настраиваем Asterisk в соотвествии с документацией. Чтобы задействовать Radius Accounting, в файл '''/etc/asterisk/cdr.conf''' раскомментируем или добавим следующие строки:
|
На этом основную настройку связки Asterisk'a с Billing'ом можно считать оконченной. В итоге, BGBilling должен получать примерно такие пакеты:
| Цитата: |
| 19 18:02:07 Type=ACCOUNTING_REQUEST Attributes: User-Name=pbxpress NAS-IP-Address=X.X.X.X NAS-Port=0 Acct-Status-Type=2 Acct-Delay-Time=0 Acct-Session-Time=8 Calling-Station-Id=10027341004 Acct-Session-Id=1208605050.14 Called-Station-Id=77142568288 Asterisk-Dst-Ctx=ael-international Asterisk-Clid=\u34Test User\u34 \u6010027341004\u62 Asterisk-Chan=SIP/X.X.X.X-c00105d0 Asterisk-Dst-Chan=SIP/6fxo-009eacd0 Asterisk-Last-App=Dial Asterisk-Last-Data=SIP/6fxo/77142XXXXXX\u124120 h323-connect-time=2008-04-19 17:37:34 +0000 h323-disconnect-time=2008-04-19 17:37:42 +0000 h323-conf-id=1208605050.14 h323-setup-time=2008-04-19 17:37:30 +0000 h323-call-origin=originate h323-call-type=VOIP Asterisk-Acc-Code=pbxpress Asterisk-Dst=77142XXXXXX Asterisk-Src=10027341004 Asterisk-Unique-ID=1208605050.14 Asterisk-User-Field=originate Asterisk-Disposition=ANSWERED Asterisk-AMA-Flags=DOCUMENTATION h323-disconnect-cause=0 Asterisk-Start-Time=2008-04-19 17:37:30 +0000 Asterisk-Bill-Sec=8 Asterisk-Duration=12 Asterisk-End-Time=2008-04-19 17:37:42 +0000 Asterisk-Answer-Time=2008-04-19 17:37:34 +0000 |
Остановимся на некоторых ньюансах определения типа звонка.
Поскольку Asterisk не является шлюзом в том понимании, которое используется при характеристике оборудования, стоящего на границе между ТФОП и сетью IP, однозначно определить средствами BGBilling'а, какие звонки являются исходящими, а какие входящими не всегда возможно, в частности в тех случаях, когда Asterisk выполняет функции транзитного софтсвича. Поэтому для реализации алгоритма определения типа звонка можно использовать следующее решение - прописывать тип звонка средствами Asterisk dialplan в CDR userfield. Предложенный выше скрипт предобработки запросов Radius будет извлекать эти данные из атрибутов Digium и на их основании устанавливать тип звонка. В следующем примере показано, как можно записать информацию о типе звонка в Asterisk'е средствами dialplan'а:
/etc/asterisk/extensions.ael
| Цитата: |
| ... macro ael-answer( ext , dev ) { Set(CDR(userfield)="answer"); Dial(${dev}/${ext},120); Hangup; }; macro ael-originate( ext , dev ) { Set(CDR(userfield)="originate"); Dial(${dev}/${ext},120); Hangup; }; context ael-default { _7XXXXXXXXXX => { &ael-originate(${EXTEN},SIP/sipnet); }; _10027340XXX => &ael-answer(${EXTEN},SIP/pbxpress); _10027343XXX => &ael-answer(${EXTEN},SIP/cgp); } ... |
Как видно из данного примера, при описании каждого маршрута, мы используем макрос, записывающий требуемую информацию о типе звонка в CDR userfield.
Еще одной востребованной функцией, реализуемой скриптом предобработки запросов Radius, может оказаться возможность поместить в передаваемый биллингу атрибут User-Name значение, которое можно указать для каждого peer в файлах конфигурации каналов Asterisk'a (sip.conf,iax.conf и т.д.) с помощью параметра accountcode. В этом случае, если на пользователя маршрутизируется не один или несколько номеров, а целый префикс, возможна тарификация трафика не по номерам, а по пользователям (с использованием "Поиск по User-Name=ALIAS"), при этом в ALIAS надо указывать то значение, которое вы будете помещать в accountcode.
Пример в /etc/asterisk/sip.conf
| Цитата: |
| ... [pbxpress] type=peer context=default ; Context for incoming calls from this user host=x.x.x.x accountcode=pbxpress |
Данная настройка приведена для конкретного Билинга, для остальных версий или разновидностей может немного отличатся в пункте настройке самого биллинга.[/code]

_________________
«Choose a job you love, and you will never have to work a day in your life» — Confucius
| Цитата: |
| В файле /usr/local/etc/radiusclient-ng/radiusclient.conf добавляем строку для нашего сервера BGRadiusVoip, содержащую адрес сервера и пароль, который в дальнейшем будет указан в конфигурации NAS'а в RadiusVoip. |
Хост с кодом доступа вроде должен прописываться в файле "servers", если это не так скажите куда тогда прописывать?
Во втором пункте, куда прописывать
| Цитата: |
| auth.in=VOIP/answer auth.out=VOIP/originate acct.in=VOIP/answer acct.out=VOIP/originate |
В сам билинг или клиента radius, если да то в какой файл, если в билинг, то что делать если в моём что-то подобное не прописывается? Можете сказать, что это конкретно?
| Цитата: |
| На закладке Скрипт предобработки в конфигурации созданного NAS'а добавляем следующий скрипт: |
На какой закладке, вернее где она, созданного NAS это в билинге.
Прости если мои вопросы где-то сильно ламерские, только захотел позаниматься прикручиванием к билингу, а если мне не надо конвертить в другие радиус сообщения? какой ман лучше почитать? Просто в билинг допишем нужный словарь и всё.
| Цитата: |
| Хост с кодом доступа вроде должен прописываться в файле "servers" |
В файле servers прописывается IP NASa, и его secret указанные в Биллинге.
| Цитата: |
| Во втором пункте, куда прописывать |
Прописывается это в настройках NASa. и применимы к конкретному биллингу. в твоем случае может отличатся. См. доки для Биллинга п. Настройка NAS.
Added after 3 hours 7 minutes:
Пришлось это прописать
в radiusclient.conf, и что-то ещё по мелочи, не помню.
| Код: |
| # file which holds sequence number for communication with the # RADIUS server seqfile /tmp/radius.seq |
Если у кого будут проблемы ищите в лога /var/log/messages, в астерисковских логах нужные глюки не отображались к сожалению.
--ArtKZ 15:36, 19 апреля 2008