Новая схема
Тарификация стоимости звонка для оператора осуществляется во время тарификации звонка клиента. Для этого используется узел тарифа Тарифицировать оператора, в котором указывается ссылка на тариф оператора. Из него извлекается подходящая цена и правила округления.
Чтобы разделить тарификацию на разных операторов используется узел Оператор. Операторы задаются в конфигурации модуля:
#Название
operator.
1
.title=
VTK
#Код(id) договора-оператора
operator.
1
.cid=
135121
#Наработку по оператору c кодом услуги 813 класть в наработку договора с кодом услуги 813
operator.
1
.account.
813
=
813
operator.
2
.title=Совинтел
operator.
2
.cid=
135122
#Всю наработку по оператору класть в наработку договора с кодом услуги 4
operator.
1
.account.
4
=all
Для привязки звонка к оператору необходимо устанавливать его код в скрипте предобработки запроса наса:
import
bitel.billing.server.radius.*;
prefix =
"remote-media-address"
;
length = prefix.length();
attributes = request.getVendorAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair );
if
( attributes !=
null
)
for
( it = attributes.iterator(); it.hasNext(); )
{
ra = it.next();
value = ra.getStringValue();
if
( value.startsWith( prefix ) )
{
if
( value.endsWith(
"77.82.17.33"
) )
{
request.setOption(
"operator"
,
1
);
break
;
}
else
if
( value.endsWith(
"172.36.104.61"
) )
{
request.setOption(
"operator"
,
2
);
break
;
}
}
}
Т.е. в зависимости от содержимого пакета нужно установить request.setOption( "operator", <код оператора> ).
Также следует учитывать, что скрипт предобработки запроса отрабатывает на каждом запросе, при этом установка кода оператора отрабатывает на запросе аутентификации и на Stop-пакете. Если установка произойдет оба раза, то запомнится значение обработки Stop-пакета.
Код оператора сохраняется в звонке, так что при переобсчете ветка Оператор также будет учитываться.
Построение тарифа для оператора почти не отличается от построения тарифа для абонента, за тем исключением, что в тарифе оператора необязательно указывать направление.
Для создания наработки на операторских договорах необходимо в конфигурации модуля указать привязку: код договора - услуги, которые принадлежат этому оператору и указать код услуги модуля, на который будет ложиться наработка в договоре оператора.
#Пример конфигурации для договора оператора с кодом (id договора) 455
#Код договора, на который будет ложиться наработка
operator.
1
.cid=
455
#Коды абонетских услуг, наработка по которым будет суммироваться и ложится в наработку с кодом 4
operator.
1
.account.
4
=
10
,
11
#Или же можно указать звонки оператора с любым кодом услуги
#operator.1.account.4=all
Для того чтобы наработка на договоре оператора обсчитывалась нужно настроить задачу планировщика Установка балансов VoiceIP. При выполнении задача берет месяц предыдущего от текущего часа и производит установку балансов на этот месяц.