How can I put a rate limit or cooldown on the number of points a user can gain?

With the points/gamification system in Verint, it appears to be possible to constantly gain points for say, logging in, creating content, or performing a number of actions repeatedly.

How can this be 'rate limited' ?

For example, no more than one award for a points action for a single day, or you cannot be awarded points for an action if you've already done that action within the past minutes/hours/days?

Members of the Community I'm a part of put a lot of investment into the effort they've enacted to gain their points, and would be very upset for anyone that's purposefully 'gaming' the system to gain more points and artificially rank up. Also, it would be useful to limit achievements / points to be gained with specific limits for the purpose of exclusivity.

In nitrostudio bunchball it's possible to do this pretty easily with its 'rules' system and also limits on 'actions', but I'm unclear on how to do this in Verint.

Parents Reply
  • For anyone wanting to do this in code.. here's a sample. Note that it doesn't page through the list of point transactions, so just bear that in mind for point operations that see a lot of transactions.

    var userId = context_v2_automationTrigger.TriggeredBy.Id;
    var contentId = context_v2_automationTrigger.Arguments.ContentId;
    var contentTypeId = core_v2_user.ContentTypeId;
    
    var pointsLimit = core_v2_widget.GetIntValue("pointsLimit", 50);
    var pointsLimitTimespan = core_v2_widget.GetIntValue("pointsLimitTimespan", 1440);
    
    var startDate = core_v2_utility.CurrentDate;
    startDate.setMinutes(startDate.getMinutes() - pointsLimitTimespan);
    
    // How many points awarded in timespan?
    var totalPoints = 0;
    var pointTransactions = core_v2_pointTransaction.List({ ContentId: contentId, ContentTypeId: contentTypeId, UserId: userId, StartDate: startDate });
    pointTransactions.forEach(function(pointTransaction) {
        totalPoints += pointTransaction.Value;
    })
    
    if (totalPoints < pointsLimit) {
        context_v1_pointsAutomation.AwardPoints(userId, contentId, contentTypeId);
    }

Children
No Data