using BotSharp.Abstraction.Browsing.Settings; 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 logger) { _services = services; _logger = logger; } public async Task Execute(RoleDialogModel message) { var args = JsonSerializer.Deserialize(message.FunctionArgs, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); var _webDriver = _services.GetRequiredService(); args.Timeout = _webDriver.DefaultTimeout; args.WaitForNetworkIdle = false; args.WaitTime = _webDriver.DefaultWaitTime; var conv = _services.GetRequiredService(); var browser = _services.GetRequiredService(); var msg = new MessageInfo { AgentId = message.CurrentAgentId, MessageId = message.MessageId, ContextId = message.CurrentAgentId, }; if (!args.KeepBrowserOpen) { await browser.CloseCurrentPage(msg); } var result = await browser.GoToPage(msg, args); if (!result.IsSuccess) { message.Content = "Open web page failed."; return false; } message.Content = $"Open web page successfully."; var webDriverService = _services.GetRequiredService(); var path = webDriverService.GetScreenshotFilePath(message.MessageId); message.Data = await browser.ScreenshotAsync(msg, path); return true; } }