Возьми ОпСоСа под контроль! Мингулов Денис Хакер, номер #070, стр. 070-126-4 Оператор может считать входящий и исходящий трафик по отдельности (возможно, по разным тарифам), кроме трафика, взимать плату и за время соединения... Допустим, 1 Мб стоит 10 рублей без НДС. Известно, что минимальная плата у этого оператора - 1 рубль. Так надо ли считать, что каждые 100 кб стоят 1.18 рублей, или же каждые 850 кб (примерно) стоят рубль? Полные данные о тарификации GPRS можно узнать только из полной детализации, если она доступна. Тариф GPRS TInt32 iQuant; // единица тарификации - в байтах iCostLen, *arrayCost и iNext - аналогично звонкам TBool iInOut; // флаг различия входящего/исходящего трафика - считать ли сумму по отдельности или учитывать только входящий трафик Бесплатный порог, как и для голосовых звонков, задаем 0-ым значением соответствующего элемента массива arrayCost. Дополнительные услуги Для дополнительных услуг возможны платы за подключение и отключение, абонентская и за использование. Самая распространенная дополнительная услуга - АОН, затем «любимый» номер. Тариф дополнительной услуги TReal costTurnOn; // стоимость подключения TReal costTurnOff; // отключения для абонентки данные аналогичны звонкам, только единица тарификации - в секундах от 86400 (сутки) TReal costOneUse; // одно использование, если iCostLen=0 Основную работу по проверке выгодности дополнительных услуг придется делать вручную (только стоимость можно будет брать из базы), так как они могут быть всевозможные. Для поиска выгодных дополнительных услуг, снижающих стоимость определенных звонков в определенное время, надо выделить возможные звонки и все-все тщательно проверить полным перебором. Программа online Желательно, чтобы твоя программа висела в памяти и ловила notify от сервера логов, обрабатывая новые данные. Их сохраняй (накопленные и проанализированные) сам - вдруг сервер логов удалит часть. При этом ты можешь использовать лог-сервер для узнавания номера при входящем звонке. Например, для распознавания - бесплатный ли этот звонок для тебя или нет? Кто звонит? CCallerId *cCallIncoming создан заранее cCallIncoming-> GetLatest(); User::WaitForAnyRequest(); В cCallIncoming-> iTelNumber лежит номер телефона. На рисунке «Nokia 9500» ты можешь увидеть пример работы программы в этом случае - ты должен сам следить за тем, чтобы пользователь мог ответить на звонок, разрешая стандартным программам телефона дальнейшую обработку звонка. Развитие Вот ты и готов сам проверять своего оператора. Нашу прогу можно всячески улучшить: встроить проверку подключения роуминга, проверку включения/выключения дополнительных услуг при помощи SMS или звонков по специальным номерам оператора... Сделай это все сам, ты можешь! Удачи! Пример тарифа Абстрактный тариф - посекундный с 61 секунды, все входящие бесплатно, исходящие все: $1.2 первая минута, $0.6 - вторая, $0.3 - посекундно с третьей, бесплатный порог - 10 секунд. АОН: либо $1 в день, либо $0.3 за один входящий звонок. Подключение этой услуги в любом варианте бесплатно, отключение - $1. Вот так будут заданы его параметры: iQuant = 1 секунда |