using BotSharp.Core; using BotSharp.Platform.Articulate.Models; using DotNetToolkit; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BotSharp.Platform.Articulate.Controllers { [Route("[controller]")] public class ScenarioController : ControllerBase { private ArticulateAi builder; public ScenarioController(ArticulateAi platform) { builder = platform; } [HttpGet("/intent/{intentId}/scenario")] public async Task GetIntentScenario([FromRoute] string intentId) { var agent = await builder.GetAgentByIntentId(intentId); var view = agent.Item3.Scenario.ToObject(); view.Agent = agent.Item1.AgentName; view.Domain = agent.Item2.DomainName; view.Intent = agent.Item3.IntentName; return view; } [HttpPost("/intent/{intentId}/scenario")] public async Task PostIntentScenario() { IntentScenarioViewModel scenario = null; using (var reader = new StreamReader(Request.Body)) { string body = reader.ReadToEnd(); scenario = JsonConvert.DeserializeObject(body); } scenario.Id = Guid.NewGuid().ToString(); var agent = await builder.GetAgentByName(scenario.Agent); var domain = agent.Domains.FirstOrDefault(x => x.DomainName == scenario.Domain); var intent = domain.Intents.FirstOrDefault(x => x.IntentName == scenario.Intent); intent.Scenario = scenario.ToObject(); await builder.SaveAgent(agent); return scenario; } } }