Обработчик процессора протокола модуля Voice
Обработчик протокола позволяет делать некоторую дополнительную логику при обработке Radius-запросов - например, изменить RADIUS-запрос перед его обработкой системой или установить дополнительные опции, которые поменяют логику обработки запроса.
Обработчик создается в динамическом коде( ссылка) и имеет имеет следующий интерфейс:
/**
* Обработчик процессора протокола.
*
@see
RadiusProtocolHandler
*
*/
public interface ProtocolHandler
extends RadiusProtocolHandler
{
public void init( Setup setup, int moduleId, VoiceDevice voiceDevice, VoiceDeviceType voiceDeviceType, ParameterMap config )
throws
Exception
;
}
init- это метод инициализации, который вызывается при создании обработчика.
Так же обработчик расширяет следующий интерфейс:
/**
* Обработчик
RADIUS
-запросов
*/
public interface RadiusProtocolHandler
{
/**
* Предобработка
RADIUS
-запроса Access-Request
*
@param
request
*
@param
response
*
@param
connectionSet
*
@throws
Exception
*/
public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws
Exception
;
/**
* Постобработка
RADIUS
-запроса Access-Request
*
@param
request
*
@param
response
*
@param
connectionSet
*
@throws
Exception
*/
public void postprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws
Exception
;
/**
* Предобработка
RADIUS
-запроса Accounting-Request
*
@param
request
*
@param
response
*
@param
connectionSet
*
@throws
Exception
*/
public void preprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws
Exception
;
/**
* Постобработка
RADIUS
-запроса Accounting-Request
*
@param
request
*
@param
response
*
@param
connectionSet
*
@throws
Exception
*/
public void postprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws
Exception
;
}
Параметры, заданные скриптом, более приоритетные, чем взятые из конфигурации. Тут можно выставить такие параметры:
Тип звонка - request.setOption( VoiceNas.CALL_TYPE, VoiceSession.CALL_TYPE_OUTGOING );
Аккаунт оператора - request.setOption( VoiceNas.OPERATOR_ACCOUNT, accountId);