Определение стоимости звонка VoiceIp
Материал из BiTel WiKi
(Различия между версиями)
Admin (Обсуждение | вклад) (Новая страница: «Для версии 5.1. Простой случай, в тарифе нет зависимости от объёма наработки. <source lang="java"> impor…») |
Admin (Обсуждение | вклад) м (переименовал «Определение стоимости звонка» в «Определение стоимости звонка VoiceIp») |
Текущая версия на 08:55, 30 ноября 2010
Для версии 5.1.
Простой случай, в тарифе нет зависимости от объёма наработки.
import java.math.*; import java.util.*; import ru.bitel.bgbilling.common.*; import ru.bitel.bgbilling.kernel.base.phone.server.*; import ru.bitel.bgbilling.server.util.*; import bitel.billing.common.*; import bitel.billing.server.contract.bean.*; import bitel.billing.server.tariff.*; import bitel.billing.server.tariff.voice.calc.*; Calendar startTime = new GregorianCalendar(); String toNum = "dddd"; int callType = 1; int serviceId = 1; int mid = 1; //этот объект производит поиск направления по зонам и нужен при тарификации по зонам //объект создаётся лишь один раз в контексте приложения при первом обращении ZoneDestFinder zdf = ZoneDestFinder.getZoneFinder( con, mid ); List treeList = new ContractManager( con ).getRealtimeTariffTreeSet( cid, startTime, "voiceip", mid, true ).getTreeList( startTime ); for( TariffModuleTree tree : treeList ) { TariffRequest req = new TariffRequest(); req.setRequestParam( "time", startTime ); req.setRequestParam( "phone", toNum ); req.setRequestParam( "sid", new Integer( getServiceId() ) ); req.setRequestParam( "call_type", new Integer( getCallType() ) ); req.setRequestParam( "zdf", zdf ); req.setRequestParam( "costMapCache", costMapCache ); tree.processRequest( req ); Integer destCode = req.getResponseParam( "dest" ); Float minCost = req.getResponseParam( "min_cost" ); VoiceTariffConfig config = req.getResponseParam( "config" ); Integer zone = req.getResponseParam( "zone" ); if( req.wasAccepted() && destCode != null && minCost != null ) { //ваш код } }