Skip to content

Commit b0dfa76

Browse files
author
Jicheng Lu
committed
pass rule criteria object
1 parent 030dee7 commit b0dfa76

2 files changed

Lines changed: 9 additions & 10 deletions

File tree

src/Infrastructure/BotSharp.Abstraction/Rules/Hooks/IRuleTriggerHook.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ namespace BotSharp.Abstraction.Rules.Hooks;
55

66
public interface IRuleTriggerHook : IHookBase
77
{
8-
Task BeforeRuleCriteriaExecuted(Agent agent, IRuleTrigger trigger, RuleCriteriaContext context) => Task.CompletedTask;
9-
Task AfterRuleCriteriaExecuted(Agent agent, IRuleTrigger trigger, RuleCriteriaResult result) => Task.CompletedTask;
8+
Task BeforeRuleCriteriaExecuted(Agent agent, AgentRuleCriteria ruleCriteria, IRuleTrigger trigger, RuleCriteriaContext context) => Task.CompletedTask;
9+
Task AfterRuleCriteriaExecuted(Agent agent, AgentRuleCriteria ruleCriteria, IRuleTrigger trigger, RuleCriteriaResult result) => Task.CompletedTask;
1010

1111
Task BeforeRuleActionExecuted(Agent agent, AgentRuleAction ruleAction, IRuleTrigger trigger, RuleActionContext context) => Task.CompletedTask;
1212
Task AfterRuleActionExecuted(Agent agent, AgentRuleAction ruleAction, IRuleTrigger trigger, RuleActionResult result) => Task.CompletedTask;

src/Infrastructure/BotSharp.Core.Rules/Engines/RuleEngine.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public async Task<IEnumerable<string>> Triggered(IRuleTrigger trigger, string te
4343
// Criteria validation
4444
if (!string.IsNullOrEmpty(rule.RuleCriteria?.Name) && !rule.RuleCriteria.Disabled)
4545
{
46-
var criteriaResult = await ExecuteCriteriaAsync(agent, rule, trigger, rule.RuleCriteria?.Name, text, states, options);
46+
var criteriaResult = await ExecuteCriteriaAsync(agent, rule.RuleCriteria, trigger, text, states, options);
4747
if (criteriaResult?.IsValid == false)
4848
{
4949
_logger.LogWarning("Criteria validation failed for agent {AgentId} with trigger {TriggerName}", agent.Id, trigger.Name);
@@ -75,9 +75,8 @@ public async Task<IEnumerable<string>> Triggered(IRuleTrigger trigger, string te
7575
#region Criteria
7676
private async Task<RuleCriteriaResult> ExecuteCriteriaAsync(
7777
Agent agent,
78-
AgentRule rule,
78+
AgentRuleCriteria ruleCriteria,
7979
IRuleTrigger trigger,
80-
string? criteriaProvider,
8180
string text,
8281
IEnumerable<MessageState>? states,
8382
RuleTriggerOptions? triggerOptions)
@@ -87,7 +86,7 @@ private async Task<RuleCriteriaResult> ExecuteCriteriaAsync(
8786
try
8887
{
8988
var criteria = _services.GetServices<IRuleCriteria>()
90-
.FirstOrDefault(x => x.Provider == criteriaProvider);
89+
.FirstOrDefault(x => x.Provider == ruleCriteria.Name);
9190

9291
if (criteria == null)
9392
{
@@ -98,7 +97,7 @@ private async Task<RuleCriteriaResult> ExecuteCriteriaAsync(
9897
var context = new RuleCriteriaContext
9998
{
10099
Text = text,
101-
Parameters = BuildContextParameters(rule.RuleCriteria?.Config, states),
100+
Parameters = BuildContextParameters(ruleCriteria.Config, states),
102101
JsonOptions = triggerOptions?.JsonOptions
103102
};
104103

@@ -108,7 +107,7 @@ private async Task<RuleCriteriaResult> ExecuteCriteriaAsync(
108107
var hooks = _services.GetHooks<IRuleTriggerHook>(agent.Id);
109108
foreach (var hook in hooks)
110109
{
111-
await hook.BeforeRuleCriteriaExecuted(agent, trigger, context);
110+
await hook.BeforeRuleCriteriaExecuted(agent, ruleCriteria, trigger, context);
112111
}
113112

114113
// Execute criteria
@@ -117,14 +116,14 @@ private async Task<RuleCriteriaResult> ExecuteCriteriaAsync(
117116

118117
foreach (var hook in hooks)
119118
{
120-
await hook.AfterRuleCriteriaExecuted(agent, trigger, result);
119+
await hook.AfterRuleCriteriaExecuted(agent, ruleCriteria, trigger, result);
121120
}
122121

123122
return result;
124123
}
125124
catch (Exception ex)
126125
{
127-
_logger.LogError(ex, "Error executing rule criteria {CriteriaProvider} for agent {AgentId}", criteriaProvider ?? string.Empty, agent.Id);
126+
_logger.LogError(ex, "Error executing rule criteria {CriteriaProvider} for agent {AgentId}", ruleCriteria.Name, agent.Id);
128127
return result;
129128
}
130129
}

0 commit comments

Comments
 (0)