Skip to content

Commit f751d75

Browse files
authored
Merge pull request #379 from hchen2020/master
Remove agent required args based on latest states.
2 parents 48cae89 + bed33c8 commit f751d75

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/Infrastructure/BotSharp.Core/Routing/Hooks/RoutingAgentHook.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,32 @@ public override bool OnInstructionLoaded(string template, Dictionary<string, obj
2727

2828
var routing = _services.GetRequiredService<IRoutingService>();
2929
var agents = routing.GetRoutableAgents(_agent.Profiles);
30+
31+
// Postprocess agent required fields, remove it if the states exists
32+
var states = _services.GetRequiredService<IConversationStateService>();
33+
foreach (var agent in agents)
34+
{
35+
var fields = agent.RequiredFields.ToArray();
36+
foreach (var field in fields)
37+
{
38+
if (states.ContainsState(field.Name))
39+
{
40+
var requiredField = agent.RequiredFields.First(x => x.Name == field.Name);
41+
agent.RequiredFields.Remove(requiredField);
42+
}
43+
}
44+
45+
fields = agent.OptionalFields.ToArray();
46+
foreach (var field in fields)
47+
{
48+
if (states.ContainsState(field.Name))
49+
{
50+
var optionalField = agent.OptionalFields.First(x => x.Name == field.Name);
51+
agent.OptionalFields.Remove(optionalField);
52+
}
53+
}
54+
}
55+
3056
dict["routing_agents"] = agents;
3157
dict["routing_handlers"] = routing.GetHandlers(_agent);
3258

0 commit comments

Comments
 (0)