Новая схема

Тарификация стоимости звонка для оператора осуществляется во время тарификации звонка клиента. Для этого используется узел тарифа Тарифицировать оператора, в котором указывается ссылка на тариф оператора. Из него извлекается подходящая цена и правила округления.

images/download/attachments/43386315/voiceip_oper_tariff.png

Чтобы разделить тарификацию на разных операторов используется узел Оператор. Операторы задаются в конфигурации модуля:

#Название
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. При выполнении задача берет месяц предыдущего от текущего часа и производит установку балансов на этот месяц.