BotSharp/src/Infrastructure/BotSharp.Core/Routing/RoutingService.InvokeFunction.cs

26 lines
726 B
C#
Raw Normal View History

2023-12-07 03:06:09 +00:00
using BotSharp.Abstraction.Functions;
namespace BotSharp.Core.Routing;
public partial class RoutingService
{
public async Task<bool> InvokeFunction(string name, RoleDialogModel message)
{
var function = _services.GetServices<IFunctionCallback>().FirstOrDefault(x => x.Name == name);
if (function == null) return false;
var originalFunctionName = message.FunctionName;
2023-12-11 23:15:37 +00:00
message.FunctionName = name;
message.Role = AgentRole.Function;
var result = await function.Execute(message);
// restore original function name
if (!message.StopCompletion)
{
message.FunctionName = originalFunctionName;
}
return result;
2023-12-07 03:06:09 +00:00
}
}