Expand Actions by Active Channels (Create Eligibile Channels) strategy
This strategy determines the active channels as specified in Next-Best-Action Designer, as well as the eligible channels designated on the treatment tab of the action. If the trigger is from an inbound channel, then only that specific channel is eligible and processed.
The top section of the strategy evaluates each of the real-time controls that determine which channels are active. The Filter shapes that select these settings are then referenced by other components in the strategy to evaluate which actions are eligible for each active channel.
The Treatment Processing On shape determines whether the Channel treatment processing Next-Best-Action Designer Settings parameter is set. This is referenced in each of the channel eligibility conditions (except for Paid).
Next best actions are fed in through the External Input shape and are split into Outbound and Inbound streams for further processing based on the value of Primary.ContainerPayload.Direction. pyChannel and pyDirection are then set for each eligible channel.
An extension point is provided by the Create Eligible Channel Extension sub-strategy, in which additional eligible channels may be added.
The Outbound section is shown below, and the inbound section follows a similar pattern. Note that there is provision for including any non-standard channels (Add Other Outbound Channels) so long as they have been defined within the real-time controls.
For outbound, each action is evaluated against each channel to determine eligibility using logic similar to the following example for the Email channel:
@equals("true", EmailSwitch.SettingValue) && (.IsEmailEnabled || !TreatmentProcessingOn.Eligible)
The first part of the expression determines whether the channel is actually enabled in Next-Best-Action Designer, and if it is the action will be eligible for that channel if it has a treatment for the channel (IsEmailEnabled), or if treatment processing is not enabled in Next-Best-Action Designer. Note that since the Paid channel does not use treatments, this last check is not required.
For inbound, the logic is slightly different as shown in the following example for the Web channel:
@equals("true", WebSwitch.SettingValue) && @equals("Web", Primary.ContainerPayload.Channel) && (.IsWebEnabled || !TreatmentProcessingOn.Eligible)
The first part of the expression determines whether the channel is actually enabled in Next-Best-Action Designer, and if it is the second expression determines whether the current inbound request is for the channel, and if so the action will be eligible for that channel if it has a treatment for the channel (IsWebEnabled), or if treatment processing is not enabled in Next-Best-Action Designer.