2024-01-27 01:14:14 +00:00
|
|
|
using BotSharp.Abstraction.Agents.Models;
|
|
|
|
|
using BotSharp.Abstraction.Routing.Enums;
|
2024-01-29 18:08:49 +00:00
|
|
|
using BotSharp.Abstraction.Routing.Planning;
|
|
|
|
|
using BotSharp.Core.Routing.Planning;
|
2024-01-27 01:14:14 +00:00
|
|
|
|
|
|
|
|
namespace BotSharp.Core.Routing;
|
|
|
|
|
|
|
|
|
|
public partial class RoutingService
|
|
|
|
|
{
|
|
|
|
|
public IPlaner GetPlanner(Agent router)
|
|
|
|
|
{
|
2024-02-19 22:55:41 +00:00
|
|
|
var rule = router.RoutingRules.FirstOrDefault(x => x.Type == RuleType.Planner);
|
2024-01-27 01:14:14 +00:00
|
|
|
|
2024-02-19 22:55:41 +00:00
|
|
|
var planner = _services.GetServices<IPlaner>().
|
|
|
|
|
FirstOrDefault(x => x.GetType().Name.EndsWith(rule.Field));
|
|
|
|
|
|
|
|
|
|
if (planner == null)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError($"Can't find specific planner named {rule.Field}");
|
2024-01-27 01:14:14 +00:00
|
|
|
return _services.GetRequiredService<NaivePlanner>();
|
2024-02-19 22:55:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return planner;
|
2024-01-27 01:14:14 +00:00
|
|
|
}
|
|
|
|
|
}
|