Merge pull request #379 from hchen2020/master
Remove agent required args based on latest states.
This commit is contained in:
commit
f751d751d5
|
|
@ -27,6 +27,32 @@ public class RoutingAgentHook : AgentHookBase
|
||||||
|
|
||||||
var routing = _services.GetRequiredService<IRoutingService>();
|
var routing = _services.GetRequiredService<IRoutingService>();
|
||||||
var agents = routing.GetRoutableAgents(_agent.Profiles);
|
var agents = routing.GetRoutableAgents(_agent.Profiles);
|
||||||
|
|
||||||
|
// Postprocess agent required fields, remove it if the states exists
|
||||||
|
var states = _services.GetRequiredService<IConversationStateService>();
|
||||||
|
foreach (var agent in agents)
|
||||||
|
{
|
||||||
|
var fields = agent.RequiredFields.ToArray();
|
||||||
|
foreach (var field in fields)
|
||||||
|
{
|
||||||
|
if (states.ContainsState(field.Name))
|
||||||
|
{
|
||||||
|
var requiredField = agent.RequiredFields.First(x => x.Name == field.Name);
|
||||||
|
agent.RequiredFields.Remove(requiredField);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fields = agent.OptionalFields.ToArray();
|
||||||
|
foreach (var field in fields)
|
||||||
|
{
|
||||||
|
if (states.ContainsState(field.Name))
|
||||||
|
{
|
||||||
|
var optionalField = agent.OptionalFields.First(x => x.Name == field.Name);
|
||||||
|
agent.OptionalFields.Remove(optionalField);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dict["routing_agents"] = agents;
|
dict["routing_agents"] = agents;
|
||||||
dict["routing_handlers"] = routing.GetHandlers(_agent);
|
dict["routing_handlers"] = routing.GetHandlers(_agent);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue