Автоматическое начисление бонусов

Previous pageReturn to chapter overviewNext page

 

Задача: привязать стоимость мегабайта к потребленному объему информации. Решая эту задачу есть предложение производить ежемесячное начисление бонусов. Т.е. раз в месяц осуществлять начисление бонуса в зависимости от наработанного трафика.

 

Как автоматизировать данный процесс?

 

Решение:

Исправляем стандартный скрипт rstsess2.vbs:

 

Set Args = WScript.Arguments.Unnamed

If Args.Count <> 3 Then

   WScript.Echo "??? usage: cscript.exe rstsess2.vbs APIPassword GroupID Cash /sn:ServerName"

   WScript.Quit

End If

 

APIPass = Args(0)

Obj = Args(1)

Cash = Args(2)

 

If WScript.Arguments.Named.Exists("sn") Then

   ServName = WScript.Arguments.Named.Item("sn")

  Set Srv = CreateObject("TrafInsp.TrafInspAdmin",ServName)

Else

  Set Srv = CreateObject("TrafInsp.TrafInspAdmin")

End If

Srv.APILogon(APIPass)

 

UserList = Srv.ApiGetBillProp(3, Obj)

' Получили список клиентов группы

 

' Проверяем, что это таблица - двухмерный массив

If Not IsArray(UserList) Or Not IsArray(UserList(0)) Then

   WScript.Echo "Нет данных"

   WScript.Quit

End If

 

For I = 0 To UBound(UserList, 1)

   User = UserList(I)

  ' Получили строку - описание пользователя

   UserID = User(1)

   UserState = Srv.APIGetUserState(UserID)

  ' Считываем текущее состояние сессии

   OldState = UserState(4)

   OldBall = UserState(19)

 

  ' Вот тут вычисляем бонус! Вставьте свою формулу.

  ' Можно привязаться к принятому трафику (байты)

   Bonus = UserState(20)*...

 

  ' Переводим пользователя в СТОП

   Srv.APISetUserState UserID, -1, 0, "Script", "Очищаем сессию"

  ' Переводим сессию пользователя в состояние, которое было ранее.

  ' Если надо всех обязательно запустить, то поправьте OldState на '2'

   Srv.APISetUserState UserID, Cash+OldBall, OldState, "Script", "Запускаем сессию"

 

   Srv.APISetUserState UserID, Cash+OldBall+Bonus, -1, "Script", "Засчитываем бонус"

 

   WScript.Echo "Клиент " & User(0) & " на счету " & Cash+OldBall+Bonus & ", в том числе бонус " & Bonus

Next

 

Этот скрипт надо запускать в начале каждого месяца. Значение параметра комментария при вызове функции APISetUserState отписывается в лог и его будет видно при просмотре отчета по биллингу. Для случая с градациями формула вычисления бонуса будет смотреться так:

 

If UserState(20) > ... then

   Bonus = ...

ElseIf UserState(20) > ... then

   Bonus = ...

End If

 

Вместо принятого трафика User(20) можно использовать начисленный трафик User(16) в мегабайтах.

 

 

 


Текущая страница справки: help.smart-soft.ru/index.html?apidemobonus.htm

Сайт разработчиков Traffic Inspector