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
}