add get agent response
This commit is contained in:
parent
ca6f60695d
commit
ba96bd81c0
|
|
@ -24,4 +24,6 @@ public interface IBotSharpRepository
|
|||
List<RoutingProfileRecord> CreateRoutingProfiles(List<RoutingProfileRecord> profiles);
|
||||
void DeleteRoutingItems();
|
||||
void DeleteRoutingProfiles();
|
||||
|
||||
List<string> GetAgentResponses(string agentId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ public static class BotSharpServiceCollectionExtensions
|
|||
|
||||
services.AddScoped<Simulator>();
|
||||
|
||||
//services.AddScoped<IBotSharpRepository, FileRepository>();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
|
|
@ -82,16 +84,16 @@ public static class BotSharpServiceCollectionExtensions
|
|||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection UsingFileRepository(this IServiceCollection services, IConfiguration config)
|
||||
{
|
||||
services.AddScoped<IBotSharpRepository>(sp =>
|
||||
{
|
||||
var myDatabaseSettings = sp.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
return new FileRepository(myDatabaseSettings, sp);
|
||||
});
|
||||
//public static IServiceCollection UsingFileRepository(this IServiceCollection services, IConfiguration config)
|
||||
//{
|
||||
// services.AddScoped<IBotSharpRepository>(sp =>
|
||||
// {
|
||||
// var myDatabaseSettings = sp.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
// return new FileRepository(myDatabaseSettings, sp);
|
||||
// });
|
||||
|
||||
return services;
|
||||
}
|
||||
// return services;
|
||||
//}
|
||||
|
||||
public static IApplicationBuilder UseBotSharp(this IApplicationBuilder app)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -96,4 +96,9 @@ public class BotSharpDbContext : Database, IBotSharpRepository
|
|||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public List<string> GetAgentResponses(string agentId)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,13 +8,21 @@ namespace BotSharp.Core.Repository;
|
|||
public class FileRepository : IBotSharpRepository
|
||||
{
|
||||
private readonly BotSharpDatabaseSettings _dbSettings;
|
||||
private readonly AgentSettings _agentSettings;
|
||||
private readonly ConversationSetting _conversationSetting;
|
||||
private readonly IServiceProvider _services;
|
||||
private JsonSerializerOptions _options;
|
||||
|
||||
public FileRepository(BotSharpDatabaseSettings dbSettings, IServiceProvider services)
|
||||
public FileRepository(
|
||||
IServiceProvider services,
|
||||
BotSharpDatabaseSettings dbSettings,
|
||||
AgentSettings agentSettings,
|
||||
ConversationSetting conversationSetting)
|
||||
{
|
||||
_dbSettings = dbSettings;
|
||||
_services = services;
|
||||
_dbSettings = dbSettings;
|
||||
_agentSettings = agentSettings;
|
||||
_conversationSetting = conversationSetting;
|
||||
|
||||
_options = new JsonSerializerOptions
|
||||
{
|
||||
|
|
@ -55,8 +63,8 @@ public class FileRepository : IBotSharpRepository
|
|||
return _agents.AsQueryable();
|
||||
}
|
||||
|
||||
var agentSettings = _services.GetService<AgentSettings>();
|
||||
var dir = Path.Combine(_dbSettings.FileRepository, agentSettings.DataDir);
|
||||
//var agentSettings = _services.GetService<AgentSettings>();
|
||||
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir);
|
||||
_agents = new List<AgentRecord>();
|
||||
foreach (var d in Directory.GetDirectories(dir))
|
||||
{
|
||||
|
|
@ -102,8 +110,8 @@ public class FileRepository : IBotSharpRepository
|
|||
return _conversations.AsQueryable();
|
||||
}
|
||||
|
||||
var convSettings = _services.GetService<ConversationSetting>();
|
||||
var dir = Path.Combine(_dbSettings.FileRepository, convSettings.DataDir);
|
||||
//var convSettings = _services.GetService<ConversationSetting>();
|
||||
var dir = Path.Combine(_dbSettings.FileRepository, _conversationSetting.DataDir);
|
||||
_conversations = new List<ConversationRecord>();
|
||||
foreach (var d in Directory.GetDirectories(dir))
|
||||
{
|
||||
|
|
@ -129,9 +137,9 @@ public class FileRepository : IBotSharpRepository
|
|||
}
|
||||
|
||||
_routingItems = new List<RoutingItemRecord>();
|
||||
var agentSettings = _services.GetRequiredService<AgentSettings>();
|
||||
var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
var filePath = Path.Combine(dbSettings.FileRepository, agentSettings.DataDir, "route.json");
|
||||
//var agentSettings = _services.GetRequiredService<AgentSettings>();
|
||||
//var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
var filePath = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, "route.json");
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
_routingItems = JsonSerializer.Deserialize<List<RoutingItemRecord>>(File.ReadAllText(filePath));
|
||||
|
|
@ -152,9 +160,9 @@ public class FileRepository : IBotSharpRepository
|
|||
}
|
||||
|
||||
_routingProfiles = new List<RoutingProfileRecord>();
|
||||
var agentSettings = _services.GetRequiredService<AgentSettings>();
|
||||
var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
var filePath = Path.Combine(dbSettings.FileRepository, agentSettings.DataDir, "routing-profile.json");
|
||||
//var agentSettings = _services.GetRequiredService<AgentSettings>();
|
||||
//var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
var filePath = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, "routing-profile.json");
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
_routingProfiles = JsonSerializer.Deserialize<List<RoutingProfileRecord>>(File.ReadAllText(filePath));
|
||||
|
|
@ -200,12 +208,12 @@ public class FileRepository : IBotSharpRepository
|
|||
{
|
||||
if (table == nameof(ConversationRecord))
|
||||
{
|
||||
var convSettings = _services.GetService<ConversationSetting>();
|
||||
//var convSettings = _services.GetService<ConversationSetting>();
|
||||
|
||||
foreach (var conversation in _conversations)
|
||||
{
|
||||
var dir = Path.Combine(_dbSettings.FileRepository,
|
||||
convSettings.DataDir,
|
||||
_conversationSetting.DataDir,
|
||||
conversation.Id);
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
|
|
@ -217,12 +225,12 @@ public class FileRepository : IBotSharpRepository
|
|||
}
|
||||
else if (table == nameof(AgentRecord))
|
||||
{
|
||||
var agentSettings = _services.GetService<AgentSettings>();
|
||||
//var agentSettings = _services.GetService<AgentSettings>();
|
||||
|
||||
foreach (var agent in _agents)
|
||||
{
|
||||
var dir = Path.Combine(_dbSettings.FileRepository,
|
||||
agentSettings.DataDir,
|
||||
_agentSettings.DataDir,
|
||||
agent.Id);
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
|
|
@ -313,9 +321,9 @@ public class FileRepository : IBotSharpRepository
|
|||
|
||||
private string GetAgentDataDir(string agentId)
|
||||
{
|
||||
var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
var agentSettings = _services.GetRequiredService<AgentSettings>();
|
||||
var dir = Path.Combine(dbSettings.FileRepository, agentSettings.DataDir, agentId);
|
||||
//var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
|
||||
//var agentSettings = _services.GetRequiredService<AgentSettings>();
|
||||
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId);
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
|
|
@ -342,4 +350,18 @@ public class FileRepository : IBotSharpRepository
|
|||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public List<string> GetAgentResponses(string agentId)
|
||||
{
|
||||
var responses = new List<string>();
|
||||
var dir = Path.Combine(_dbSettings.FileRepository, _agentSettings.DataDir, agentId, "responses");
|
||||
if (!Directory.Exists(dir)) return responses;
|
||||
|
||||
foreach (var file in Directory.GetFiles(dir))
|
||||
{
|
||||
responses.Add(File.ReadAllText(file));
|
||||
}
|
||||
|
||||
return responses;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using BotSharp.Abstraction.Repositories;
|
||||
using BotSharp.Abstraction.Templating;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
|
@ -18,11 +19,14 @@ public class ResponseTemplateService : IResponseTemplateService
|
|||
public async Task<string> RenderFunctionResponse(string agentId, RoleDialogModel message)
|
||||
{
|
||||
// Find response template
|
||||
var agentService = _services.GetRequiredService<IAgentService>();
|
||||
var dir = Path.Combine(agentService.GetAgentDataDir(agentId), "responses");
|
||||
var responses = Directory.GetFiles(dir)
|
||||
.Where(f => f.Split(Path.DirectorySeparatorChar).Last().Split('.')[1] == message.FunctionName)
|
||||
.ToList();
|
||||
//var agentService = _services.GetRequiredService<IAgentService>();
|
||||
//var dir = Path.Combine(agentService.GetAgentDataDir(agentId), "responses");
|
||||
//var responses = Directory.GetFiles(dir)
|
||||
// .Where(f => f.Split(Path.DirectorySeparatorChar).Last().Split('.')[1] == message.FunctionName)
|
||||
// .ToList();
|
||||
|
||||
var db = _services.GetRequiredService<IBotSharpRepository>();
|
||||
var responses = db.GetAgentResponses(agentId);
|
||||
|
||||
if (responses.Count == 0)
|
||||
{
|
||||
|
|
@ -30,7 +34,8 @@ public class ResponseTemplateService : IResponseTemplateService
|
|||
}
|
||||
|
||||
var randomIndex = new Random().Next(0, responses.Count);
|
||||
var template = File.ReadAllText(responses[randomIndex]);
|
||||
//var template = File.ReadAllText(responses[randomIndex]);
|
||||
var template = responses[randomIndex];
|
||||
|
||||
var render = _services.GetRequiredService<ITemplateRender>();
|
||||
|
||||
|
|
@ -55,15 +60,18 @@ public class ResponseTemplateService : IResponseTemplateService
|
|||
public async Task<string> RenderIntentResponse(string agentId, RoleDialogModel message)
|
||||
{
|
||||
// Find response template
|
||||
var agentService = _services.GetRequiredService<IAgentService>();
|
||||
var dir = Path.Combine(agentService.GetAgentDataDir(agentId), "responses");
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
var responses = Directory.GetFiles(dir)
|
||||
.Where(f => f.Split(Path.DirectorySeparatorChar).Last().Split('.')[1] == message.IntentName)
|
||||
.ToList();
|
||||
//var agentService = _services.GetRequiredService<IAgentService>();
|
||||
//var dir = Path.Combine(agentService.GetAgentDataDir(agentId), "responses");
|
||||
//if (!Directory.Exists(dir))
|
||||
//{
|
||||
// return string.Empty;
|
||||
//}
|
||||
//var responses = Directory.GetFiles(dir)
|
||||
// .Where(f => f.Split(Path.DirectorySeparatorChar).Last().Split('.')[1] == message.IntentName)
|
||||
// .ToList();
|
||||
|
||||
var db = _services.GetRequiredService<IBotSharpRepository>();
|
||||
var responses = db.GetAgentResponses(agentId);
|
||||
|
||||
if (responses.Count == 0)
|
||||
{
|
||||
|
|
@ -71,7 +79,8 @@ public class ResponseTemplateService : IResponseTemplateService
|
|||
}
|
||||
|
||||
var randomIndex = new Random().Next(0, responses.Count);
|
||||
var template = File.ReadAllText(responses[randomIndex]);
|
||||
//var template = File.ReadAllText(responses[randomIndex]);
|
||||
var template = responses[randomIndex];
|
||||
|
||||
var render = _services.GetRequiredService<ITemplateRender>();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
using BotSharp.Abstraction.Routing.Models;
|
||||
using BotSharp.Abstraction.Users.Models;
|
||||
using BotSharp.Plugin.MongoStorage.Collections;
|
||||
|
||||
namespace BotSharp.Plugin.MongoStorage.Repository;
|
||||
|
|
@ -437,4 +435,13 @@ public class MongoRepository : IBotSharpRepository
|
|||
AgentIds = x.AgentIds.Select(x => x.ToString()).ToList()
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
public List<string> GetAgentResponses(string agentId)
|
||||
{
|
||||
var responses = new List<string>();
|
||||
var agent = Agent.FirstOrDefault(x => x.Id == agentId);
|
||||
if (agent == null) return responses;
|
||||
|
||||
return agent.Responses;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue