using BotSharp.Core; using BotSharp.Core.Agents; using BotSharp.Core.Engines; using BotSharp.Platform.Abstraction; using BotSharp.Platform.Models; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Platform.Articulate; using Platform.Articulate.Models; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace Platform.Articulate.Controllers { #if ARTICULATE [Route("[controller]")] public class AgentController : ControllerBase { private readonly IBotPlatform _platform; /// /// Initialize agent controller and get a platform instance /// /// public AgentController(IBotPlatform platform) { _platform = platform; } [HttpPost] public AgentModel PostAgent() { AgentModel agent = null; using (var reader = new StreamReader(Request.Body)) { string body = reader.ReadToEnd(); agent = JsonConvert.DeserializeObject(body); } // convert to standard Agent structure var builder = new ArticulateAi, AgentModel, DomainModel, EntityModel>(); var standardAgent = builder.StandardizeAgent(agent); builder.SaveAgent(standardAgent); agent.Id = standardAgent.Id; return agent; } [HttpGet] public List GetAgent() { /*var agents = new List(); string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate"); var agentPaths = Directory.GetFiles(dataDir).Where(x => Regex.IsMatch(x, @"agent-\d+.json")).ToList(); for (int i = 0; i< agentPaths.Count; i++) { string json = System.IO.File.ReadAllText(agentPaths[i]); var agent = JsonConvert.DeserializeObject(json); agents.Add(agent); }*/ var builder = new ArticulateAi, AgentModel, DomainModel, EntityModel>(); var results = builder.GetAllAgents(); var agents = results.Select(x => builder.RecoverAgent(x)).ToList(); return agents; } [HttpGet("{agentId}")] public AgentModel GetAgentById([FromRoute] string agentId) { var builder = new ArticulateAi, AgentModel, DomainModel, EntityModel>(); var standardAgent = builder.GetAgentById(agentId); var agent = builder.RecoverAgent(standardAgent); return agent; } [HttpGet("name/{agentName}")] public AgentModel GetAgentByName([FromRoute] string agentName) { AgentModel agent = null; string dataDir = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Articulate"); var agentPaths = Directory.GetFiles(dataDir).Where(x => Regex.IsMatch(x, @"agent-\d+\.json")).ToList(); for (int i = 0; i < agentPaths.Count; i++) { string json = System.IO.File.ReadAllText(agentPaths[i]); var agentTmp = JsonConvert.DeserializeObject(json); if(agentTmp.AgentName == agentName) { agent = agentTmp; } } return agent; } } #endif }