2025-03-12 03:01:16 +00:00
|
|
|
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
|
|
|
|
|
});
|
2025-03-12 03:01:16 +00:00
|
|
|
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;
|
2025-03-13 02:35:30 +00:00
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|