using BotSharp.Core.Engines; using BotSharp.Core.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BotSharp.RestApi.Dialogs { /// /// Conversation controller /// [Route("v1/[controller]")] public class DialogController : ControllerBase { private readonly IBotPlatform _platform; /// /// Initialize dialog controller and get a platform instance /// /// public DialogController(IBotPlatform platform) { _platform = platform; } /// /// The query endpoint is used to process natural language in the form of text. /// The query requests return structured data in JSON format with an action and parameters for that action. /// /// /// [AllowAnonymous] [HttpPost("/v1/query")] public ActionResult Query([FromBody] QueryModel request) { String clientAccessToken = Request.Headers["Authorization"]; if (String.IsNullOrEmpty(clientAccessToken)) { return Unauthorized(); } var config = new AIConfiguration(clientAccessToken, SupportedLanguage.English); config.SessionId = request.SessionId; _platform.LoadAgent(clientAccessToken); var aIResponse = _platform.TextRequest(new AIRequest { Timezone = request.Timezone, Contexts = request.Contexts.Select(x => new AIContext { Name = x }).ToList(), Language = request.Lang, Query = new String[] { request.Query } }); return aIResponse; } } }