BotSharp/src/Plugins/BotSharp.Plugin.WebDriver/UtilFunctions/UtilWebGoToPageFn.cs

61 lines
1.9 KiB
C#
Raw Normal View History

using BotSharp.Abstraction.Browsing.Settings;
2025-02-03 23:43:04 +00:00
namespace BotSharp.Plugin.WebDriver.UtilFunctions;
public class UtilWebGoToPageFn : IFunctionCallback
{
public string Name => "util-web-go_to_page";
public string Indication => "Open web page.";
private readonly IServiceProvider _services;
private readonly ILogger _logger;
public UtilWebGoToPageFn(
IServiceProvider services,
ILogger<UtilWebGoToPageFn> logger)
{
_services = services;
_logger = logger;
}
public async Task<bool> Execute(RoleDialogModel message)
{
var args = JsonSerializer.Deserialize<PageActionArgs>(message.FunctionArgs, new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
});
var _webDriver = _services.GetRequiredService<WebBrowsingSettings>();
2025-03-12 13:53:38 +00:00
args.Timeout = _webDriver.DefaultTimeout;
2025-02-03 23:43:04 +00:00
args.WaitForNetworkIdle = false;
args.WaitTime = _webDriver.DefaultWaitTime;
2025-02-03 23:43:04 +00:00
var conv = _services.GetRequiredService<IConversationService>();
var browser = _services.GetRequiredService<IWebBrowser>();
var msg = new MessageInfo
{
AgentId = message.CurrentAgentId,
MessageId = message.MessageId,
ContextId = message.CurrentAgentId,
};
2025-03-14 19:43:23 +00:00
if (!args.KeepBrowserOpen)
{
await browser.CloseCurrentPage(msg);
}
2025-02-04 21:56:25 +00:00
var result = await browser.GoToPage(msg, args);
if (!result.IsSuccess)
{
message.Content = "Open web page failed.";
return false;
}
2025-02-03 23:43:04 +00:00
message.Content = $"Open web page successfully.";
2025-02-04 21:56:25 +00:00
var webDriverService = _services.GetRequiredService<WebDriverService>();
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
message.Data = await browser.ScreenshotAsync(msg, path);
2025-02-03 23:43:04 +00:00
return true;
}
}