The purpose of arbitration influencers is to use the insights gained from the outcome of presenting an action to influence the arbitration of the same action - or one or more related actions - at some future interaction.
For example, during an interaction with a call center agent, if a customer expresses an interest in an offer, but needs to drop off the call due to other commitments, the outcome could be recorded as Maybe-Later. On the next interaction with the same customer it may be prudent to boost the chances of that same action - or some related actions – being selected as the NBA, on the assumption that the customer may still be interested and have a higher likelihood to accept the follow-up action based on their initial Maybe-Later response.
The method is similar to the Contact Policy implementation, whereby action outcomes specified by the policy are captured by the ProcessSuppressions Data Flow using the Behavioral Limits strategy, and then later used during an NBA interaction.
Arbitration Influencer Concepts
The Arbitration Influencers DDR and some related concepts are described below.
|Upweighting||The process of increasing the weighting associated with an action identified by an Arbitration Influencer policy, to increase its chances of selection during arbitration. This may be done in increments over a specified duration, starting at an initial value, and increasing until a target value is reached. The starting value will be less than the ending value, and can be negative if desired.|
|Decay||Similar to upweighting but where the increment is negative, that is, the weighting is decreased over a period. The starting value will be greater than the ending value, and can be negative if desired.|
Output Bundling Settings DDR
|pyLabel||A user-friendly name.|
|pyName||A unique name for the action influencer policy - typically set to the ContactPolicy (see below).|
|pyIssue||The issue for which the influencer policy is to be applied. This property is required.|
|pyGroup||The group for which the influencer policy is to be applied, or blank for all groups and actions within the issue.|
|Action||The Action for which the influencer policy is to be applied, or blank for all actions within a Group.|
|pyOutcome||The Outcome for which the influencer policy is to be applied, this must be specified.|
|pyDirection||The Direction for which the influencer policy is to be applied, or blank for all Directions.|
|pyChannel||The Channel for which the influencer policy is to be applied, or blank for all Channels.|
|ContactPolicy||A unique name for the action influencer policy, this must be specified.|
|WeightAdjustInterval||Time period over which the action weight will be adjusted in minutes.|
|WeightAdjustDuration||Time interval between adjustments in minutes.|
|WeightAdjustStartValue||The starting upweight value.|
|WeightAdjustEndValue||The ending upweight value (if this is less than the start then the weight will be decayed).|
|TargetIssue||The issue of the action to be influenced. If UpweightActionInContext is false this must be specified.|
|TargetGroup||The group of the actions to be influenced, or blank for all groups and actions within the target issue.|
|TargetAction||The name of the action to be influenced, or blank for all actions within a target group.|
|UpweightActionInContext||If true, use the action(s) identified by the source configuration as the target action(s), otherwise use the action(s) identified by the target configuration.|
The weight adjustment properties allow the action Weight to be adjusted so that if Action weighting is enabled in the Arbitration tab of Next-Best-Action Designer. This will affect the overall priority of the target actions. The detailed weight adjustment calculations are shown below.
|pyLastResponseTime||The time when the outcome that triggered the action influencer occurred.||.TimeInCurrentStage = @DateTimeDifference(.pyLastResponseTime, @getCurrentTimeOfDayStamp(), "m") .WeightAdjustInterval = @if(.WeightAdjustInterval > 0, .WeightAdjustInterval, 1)|
|Quantity||Total number of weight duration intervals.||.Quantity = @if(.WeightAdjustDuration > 0, @divide(.WeightAdjustDuration, .WeightAdjustInterval, 0), 1)|
|TempDouble||The weight increment per interval, negative if start weight is greater than end weight.||.TempDouble = @divide((.WeightAdjustEndValue - .WeightAdjustStartValue), .Quantity, 2)|
|pyWeight||The incremental upweighting value for the target actions, note that this could be negative.||.pyWeight = @if(.TimeInCurrentStage > .WeightAdjustDuration, .WeightAdjustEndValue, .WeightAdjustStartValue + (@divide(.TimeInCurrentStage, .WeightAdjustInterval, 0, "down") * .TempDouble))|
The resultant pyWeight is then added to the action Weight property for use in the arbitration formula.