using BotSharp.Core.Engines; using DotNetToolkit; using EntityFrameworkCore.BootKit; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using Platform.Dialogflow.Models; using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Platform.Dialogflow.Controllers { #if DIALOGFLOW /// /// Agent /// [Route("v1/[controller]")] public class AgentController : ControllerBase { private DialogflowAi builder; /// /// Initialize dialog controller and get a platform instance /// /// public AgentController(IConfiguration configuration) { builder = new DialogflowAi(); builder.PlatformConfig = configuration.GetSection("DialogflowAi"); } /// /// Import a agent from a uploaded zip file /// /// /// [HttpPost("import")] public async Task Import(IFormFile uploadedFile) { if (uploadedFile == null || uploadedFile.Length == 0) { return BadRequest(); } var filePath = Path.GetTempFileName(); Console.WriteLine($"Temp file saved to {filePath}"); using (var stream = new FileStream(filePath, FileMode.Create)) { await uploadedFile.CopyToAsync(stream); } string dest = Path.Combine(AppDomain.CurrentDomain.GetData("DataPath").ToString(), "Projects", uploadedFile.FileName.Split('.').First(), "tmp"); if (Directory.Exists(dest)) { System.IO.Directory.Delete(dest, true); } Console.WriteLine($"Extract zip file to {dest}"); ZipFile.ExtractToDirectory(filePath, dest); System.IO.File.Delete(filePath); Console.WriteLine($"Loading agent from folder {dest}"); var agent = builder.LoadAgentFromFile>(dest); builder.SaveAgent(agent); return Ok(agent.Id); } /// /// Dump agent /// /// /// [HttpGet("{agentId}")] public ActionResult Dump([FromRoute] String agentId) { return Ok(); } } #endif }